您好我试图在Bukkit中为我的Minecraft服务器更改库存中的粘土颜色,但我无法弄清楚如何做到这一点。我的代码不起作用。所有这一切都设置了库存中具有正确名称和绝杀的项目,但实际上并没有改变粘土块的颜色。
@SuppressWarnings("deprecation")
public static ItemStack[] achievements(Player player){
ItemStack[] items = new ItemStack[54];
for(int i = 1; i <= MySQL.getAmountOfAchievements(); i++){
ItemStack clay = new ItemStack(Material.STAINED_CLAY);
if(MySQL.hasAchievement(player, i)){
clay.setData(new MaterialData((byte) 5));
}else{
clay.setData(new MaterialData((byte) 14));
}
ItemMeta clayMeta = clay.getItemMeta();
clayMeta.setDisplayName(MySQL.getAchievementName(i));
List<String> description = new ArrayList<String>();
description.add(MySQL.getAchievementDescription(i));
clayMeta.setLore(description);
clay.setItemMeta(clayMeta);
items[i - 1] = clay;
}
return items;
}
感谢。
答案 0 :(得分:1)
您应该使用setData(MaterialData)
。
setDurability(short)
代替clay.setData(new MaterialData((byte) 5))
,您可以使用clay.setDurability(5)
,代替clay.setData(new MaterialData((byte) 14))
,您可以使用clay.setDurability(14)
。
以下是您的代码的样子:
if(MySQL.hasAchievement(player, i)){
clay.setDurability(5);
}
else{
clay.setDurability(14);
}
使用.setDurability(short)
设置项目的数据(例如,在clay:5
中,数据将为5
)。它被称为setDurability
,因为数据还设置了剑和镐等工具的耐用性。