0

以及如何在 bukkit 中一次添加 2 个附魔

myItem.addEnchantments( Enchantment.KNOCKBACK, 1 /* TODO Here goes 2nd enchantment */ );

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

4

2 回答 2

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

于 2012-12-22T12:44:17.497 回答
0

@John Smith的第二个问题:(如何将字符串转换为哈希图)您可以将哈希图转换为字符串,但java(据我所知)没有字符串到哈希图。您可以创建一个执行此操作的函数(可能是不可能的),或者创建几个将 hashmap 转换为 string 并将 string 转换为 hashmap 的函数。在这种情况下,您需要一个带有 Enchantment 和一个整数的 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();
}

然后您将创建一个函数将其转换回哈希图:

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

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

于 2016-11-08T23:40:36.800 回答