For 循环只是 returns 数组中的最后一个字符串
For loop just returns last string in array
此代码应重命名您在 config.yml 中配置的 Kits
中的每个项目。
但是,遍历包含所有名称的数组,只是将所有项目重命名为数组中的最后一个字符串。
try {
String getKits = getConfig().getString("Kits." + args[0] + ".Items");
String[] kits = getKits.split(",");
for (String s1 : kits) {
String[] singleKits = s1.split("-");
ItemStack kit = new ItemStack(Integer.valueOf(singleKits[0]), Integer.valueOf(singleKits[1]));
ItemMeta kitDisplayName = kit.getItemMeta();
String[] itemNames = getConfig().getString("Kits." + args[0] + ".names").split(",");
for (int i = 0; i < itemNames.length; i++) {
kitDisplayName.setDisplayName(itemNames[i]);
kit.setItemMeta(kitDisplayName);
}
pInv.addItem(kit);
}
} catch (Exception e) {
e.printStackTrace();
}
您的内部 for 循环将遍历所有名称并始终在最后一个结束。
因此,此代码块会将每个(外部)循环的显示名称设置为相同的值。
String[] itemNames = getConfig().getString("Kits." + args[0] + ".names").split(",");
for (int i = 0; i < itemNames.length; i++) {
kitDisplayName.setDisplayName(itemNames[i]);
kit.setItemMeta(kitDisplayName);
}
如果您的项目和名称的顺序相同,您应该使用外部 for 循环中的数字来获取正确的名称:
String[] kits = getConfig().getString("Kits." + args[0] + ".Items").split(",");
String[] itemNames = getConfig().getString("Kits." + args[0] + ".names").split(",");
for (int i = 0; i < kits.length; i++) {
String[] singleKits = kits[i].split("-");
ItemStack kit = new ItemStack(Integer.valueOf(singleKits[0]), Integer.valueOf(singleKits[1]));
ItemMeta kitDisplayName = kit.getItemMeta();
kitDisplayName.setDisplayName(itemNames[i]);
kit.setItemMeta(kitDisplayName);
}
此代码应重命名您在 config.yml 中配置的 Kits
中的每个项目。
但是,遍历包含所有名称的数组,只是将所有项目重命名为数组中的最后一个字符串。
try {
String getKits = getConfig().getString("Kits." + args[0] + ".Items");
String[] kits = getKits.split(",");
for (String s1 : kits) {
String[] singleKits = s1.split("-");
ItemStack kit = new ItemStack(Integer.valueOf(singleKits[0]), Integer.valueOf(singleKits[1]));
ItemMeta kitDisplayName = kit.getItemMeta();
String[] itemNames = getConfig().getString("Kits." + args[0] + ".names").split(",");
for (int i = 0; i < itemNames.length; i++) {
kitDisplayName.setDisplayName(itemNames[i]);
kit.setItemMeta(kitDisplayName);
}
pInv.addItem(kit);
}
} catch (Exception e) {
e.printStackTrace();
}
您的内部 for 循环将遍历所有名称并始终在最后一个结束。 因此,此代码块会将每个(外部)循环的显示名称设置为相同的值。
String[] itemNames = getConfig().getString("Kits." + args[0] + ".names").split(",");
for (int i = 0; i < itemNames.length; i++) {
kitDisplayName.setDisplayName(itemNames[i]);
kit.setItemMeta(kitDisplayName);
}
如果您的项目和名称的顺序相同,您应该使用外部 for 循环中的数字来获取正确的名称:
String[] kits = getConfig().getString("Kits." + args[0] + ".Items").split(",");
String[] itemNames = getConfig().getString("Kits." + args[0] + ".names").split(",");
for (int i = 0; i < kits.length; i++) {
String[] singleKits = kits[i].split("-");
ItemStack kit = new ItemStack(Integer.valueOf(singleKits[0]), Integer.valueOf(singleKits[1]));
ItemMeta kitDisplayName = kit.getItemMeta();
kitDisplayName.setDisplayName(itemNames[i]);
kit.setItemMeta(kitDisplayName);
}