gpt4 book ai didi

java - 将 uuid 的 List 转换为播放器名称 spigot java

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:35:04 25 4
gpt4 key购买 nike

我的主类中有一个列表,它从配置中的某个部分获取数据。这是它的代码,

private List<String> datalist;

public List<String> getDataList() {
if (datalist == null) {
datalist = new ArrayList<>();
}
datalist = datalist.stream().distinct().collect(Collectors.toList());
return datalist;
}
void loadConfig() {
final FileConfiguration config = this.getConfig();
config.options().copyDefaults(true);
saveConfig();

ConfigurationSection section = this.getConfig().getConfigurationSection("data");
if (section != null) {
Set<String> datas = section.getKeys(false);
if (datas != null && !datas.isEmpty()) {
for (String data : datas) {
getDataList().add(data);
}
}
}
}

loadConfig() 在 onEnable 方法中被调用。目前,如果我将它发送到播放器或控制台,它将被格式化为数组列表。 ([uuid、uuid、uuid 等])。我的配置格式是这样的,

data:
e81a48c8-6e82-304a-b435-832a362b4cbf:
name: PiggyPiglet
stat1: 0
stat2: 0
stat3: 0
hasjoined: true

其中一个是在 PlayerJoinEvent 上为玩家生成的。我的命令类中有一个命令/lb show,这是它的代码。

if (type.equalsIgnoreCase("show")) {
if (sender.hasPermission("leaderboard.show")) {
sender.sendMessage(cc("&7LeaderBoard:"));

String lb = String.valueOf(plugin.getDataList()).replace("[",
"").replace("]",
"").replace(",",
"\n");
TextComponent leaderboard = new TextComponent(lb);
leaderboard.setHoverEvent( new HoverEvent( HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("test").create() ) );
sender.spigot().sendMessage(leaderboard);
}
}

该代码像这样在聊天中发送配置中的 uuid。

uuid
uuid
uuid

当您将鼠标悬停在其中一个 uuid 上时,它会显示“测试”。我的问题是如何将这些 uuid 更改为玩家名称,而不是说“测试”,说

"EGCW | EGCL | KWC\n"+ String.valueOf(cfg.getInt("data."+ uuid + ".EGCW")) + "| "+ String.valueOf(cfg.getInt( "数据。"+ uuid + ".EGCL")) + "| "+ String.valueOf(cfg.getInt("数据。"+ uuid + ".KWC"))"

用当前行的 uuid 替换 uuid。

最佳答案

您的 UUID 是另一个 ConfigSection 作为 data 的子项,因此您需要更深入一层。

这种方法可能不是最好的,但它很有效。

ConfigurationSection section = config.getConfigurationSection("data");
if (section != null) {
Set<String> datas = section.getKeys(false);
if (datas != null && !datas.isEmpty()) {
for (String uuid : datas) {
ConfigurationSection section2 = config.getConfigurationSection("data." + uuid);
if (section2 != null) {

getDataList().add(section2.getString("name"));

}
}
}
}
System.out.println(datalist);

使用稍微修改过的 config.yml 的输出(最好有多个用户在里面):
[PiggyPiglet1, PiggyPiglet2, PiggyPiglet3]

ComponentBuilder 应该会按预期工作。只需将“test”替换为您要显示的字符串即可。

关于java - 将 uuid 的 List<String> 转换为播放器名称 spigot java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44482469/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com