設定の特定のセクションからデータを取得するメインクラスのリストがあります。これはコードです。リストを<String>からプレイヤー名に変換するspigot java
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);
}
}
}
}
onEnableメソッドでloadConfig()が呼び出されました。現在、これをプレイヤーやコンソールに送った場合、arraylistでフォーマットされます。 ([uuid、uuid、uuid、etc、etc])。私の設定は次のようにフォーマットされています。
data:
e81a48c8-6e82-304a-b435-832a362b4cbf:
name: PiggyPiglet
stat1: 0
stat2: 0
stat3: 0
hasjoined: true
PlayerJoinEventのプレーヤーでこれらの1つが生成されています。コマンドクラスに/ 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);
}
}
このコードは、このような設定でuuidsをチャットで送信します。
uuid
uuid
uuid
uuidsのいずれかにカーソルを合わせると、「テスト」と表示されます。私の質問は、私はプレイヤー名に、それらのUUIDを変更する方法をであり、また、代わりに現在行のUUIDとUUIDを交換
"EGCW | EGCL | KWC\n" + String.valueOf(cfg.getInt("data." + uuid + ".EGCW")) + " | " + String.valueOf(cfg.getInt("data." + uuid + ".EGCL")) + " | " + String.valueOf(cfg.getInt("data." + uuid + ".KWC"))"
を言って、「テスト」という。