如何使用
在bukkit中一次添加2个附魔myItem.addEnchantments( Enchantment.KNOCKBACK, 1 /* TODO Here goes 2nd enchantment */ );
'addEnchantments'接受'addEnchantments(Map< Enchantment,int>)'
答案 0 :(得分:2)
您更愿意使用addEnchantment
两次(或更多次):
myItem.addEnchantment(Enchantment.KNOCKBACK, 1);
myItem.addEnchantment(Enchantment.THRONS, 2);
如果您坚持使用addEnchantments
,则需要创建地图,填充并传递地图:
Map<Enhancement, Integer> map = new HashMap<Enhancement, Integer>();
map.put(Enchantment.KNOCKBACK, 1);
map.put(Enchantment.THRONS, 2);
myItem.addEnchantments(map);
在你的情况下,我会选择选项1
答案 1 :(得分:0)
@John Smith的第二个问题:(如何将字符串转换为hashmap) 您可以将hashmap转换为字符串,但java(我知道)没有字符串到hashmap。您可以创建一个执行此操作的函数(可能是不可能的),或者创建一些将hashmap转换为字符串并将字符串转换为hashmap的函数。在这种情况下,你需要一个带有Enchantment和Integer的hashmap,所以你只需要这样做:
public /*static*/ String hashMapToString(HashMap<Enchantment, Integer> hashMap) {
StringBuilder serializedString = new StringBuilder();
for (Enchantment enchant : hashMap.keySet()) {
serializedString.append(enchant.getName() + "<>" + hashMap.get(enchant) + ";");
}
return serializedString.toString();
}
然后你会创建一个函数来将其转换回hashmap:
public /*static*/ HashMap<Enchantment, Integer> stringToHashMap(String hashMapString) {
HashMap<Enchantment, Integer> hashMap = new HashMap<>();
for (String split : hashMapString.split(";")) {
String[] splited = split.split("<>");
hashMap.put(Enchantment.getByName(splited[0]), Integer.valueOf(splited[1]))
}
return hashMap;
}
您甚至可以将它们设为静态(删除注释标记,如果您根本不想要它,只需删除注释标记内的注释标记)