使用bukkit的Java HashMaps

时间:2012-12-22 12:20:41

标签: java hashmap bukkit

如何使用

在bukkit中一次添加2个附魔
myItem.addEnchantments( Enchantment.KNOCKBACK, 1 /* TODO Here goes 2nd enchantment */ );

'addEnchantments'接受'addEnchantments(Map< Enchantment,int>)'

2 个答案:

答案 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;
}

您甚至可以将它们设为静态(删除注释标记,如果您根本不想要它,只需删除注释标记内的注释标记)