将玩家物品栏中染料的颜色替换为另一种
Replace color of a dye in player's inventory with another
我想用不同颜色的新染料替换玩家库存中的染料,例如从青色到灰色。
我的插件完美地将一种染料更改为另一种染料,但是当我将它移到我的快捷栏时,我无法放下它,当我在我的物品栏中点击它时,它突然消失了。在那种情况下,我认为该项目不存在。
如何更改此项目的颜色?
代码:
Dye dye = new Dye();
dye.setColor(DyeColor.RED);
ItemStack dye4 = dye.toItemStack();
dye4.setAmount(1);
dye.setColor(DyeColor.ORANGE);
ItemStack dye3 = dye.toItemStack();
dye4.setAmount(1);
dye.setColor(DyeColor.PURPLE);
ItemStack dye2 = dye.toItemStack();
dye4.setAmount(1);
dye.setColor(DyeColor.CYAN);
ItemStack dye1 = dye.toItemStack();
dye4.setAmount(1);
dye.setColor(DyeColor.GRAY);
ItemStack dye0 = dye.toItemStack();
ArrayList<ItemStack> dyes = new ArrayList<ItemStack>(Arrays.asList(
dye0, dye1, dye2, dye3, dye4
));
p.getOpenInventory().getTopInventory().setItem(1, dyes.get(0));
注意:我已经为这个例子缩短了我的代码。
截图:
之前
之后
我把它移到了热键栏——它消失前一秒(因为我没有点击它:D)
下载
我制作了一个带有此错误的示例插件:
我该如何解决这个错误?
我的代码中有一个愚蠢的错误,我没有将灰色染料的数量设置为 1。
最终代码
Dye dye = new Dye();
dye.setColor(DyeColor.RED);
ItemStack dye4 = dye.toItemStack();
dye4.setAmount(1);
dye.setColor(DyeColor.ORANGE);
ItemStack dye3 = dye.toItemStack();
dye3.setAmount(1);
dye.setColor(DyeColor.PURPLE);
ItemStack dye2 = dye.toItemStack();
dye2.setAmount(1);
dye.setColor(DyeColor.CYAN);
ItemStack dye1 = dye.toItemStack();
dye1.setAmount(1);
dye.setColor(DyeColor.GRAY);
ItemStack dye0 = dye.toItemStack();
dye0.setAmount(1);
ImmutableList<ItemStack> dyes
= ImmutableList.of(dye0, dye1, dye2, dye3, dye4);
p.getOpenInventory().getTopInventory().setItem(1, dyes.get(0));
我想用不同颜色的新染料替换玩家库存中的染料,例如从青色到灰色。
我的插件完美地将一种染料更改为另一种染料,但是当我将它移到我的快捷栏时,我无法放下它,当我在我的物品栏中点击它时,它突然消失了。在那种情况下,我认为该项目不存在。
如何更改此项目的颜色?
代码:
Dye dye = new Dye();
dye.setColor(DyeColor.RED);
ItemStack dye4 = dye.toItemStack();
dye4.setAmount(1);
dye.setColor(DyeColor.ORANGE);
ItemStack dye3 = dye.toItemStack();
dye4.setAmount(1);
dye.setColor(DyeColor.PURPLE);
ItemStack dye2 = dye.toItemStack();
dye4.setAmount(1);
dye.setColor(DyeColor.CYAN);
ItemStack dye1 = dye.toItemStack();
dye4.setAmount(1);
dye.setColor(DyeColor.GRAY);
ItemStack dye0 = dye.toItemStack();
ArrayList<ItemStack> dyes = new ArrayList<ItemStack>(Arrays.asList(
dye0, dye1, dye2, dye3, dye4
));
p.getOpenInventory().getTopInventory().setItem(1, dyes.get(0));
注意:我已经为这个例子缩短了我的代码。
截图:
之前
之后
我把它移到了热键栏——它消失前一秒(因为我没有点击它:D)
下载
我制作了一个带有此错误的示例插件:
我该如何解决这个错误?
我的代码中有一个愚蠢的错误,我没有将灰色染料的数量设置为 1。
最终代码
Dye dye = new Dye();
dye.setColor(DyeColor.RED);
ItemStack dye4 = dye.toItemStack();
dye4.setAmount(1);
dye.setColor(DyeColor.ORANGE);
ItemStack dye3 = dye.toItemStack();
dye3.setAmount(1);
dye.setColor(DyeColor.PURPLE);
ItemStack dye2 = dye.toItemStack();
dye2.setAmount(1);
dye.setColor(DyeColor.CYAN);
ItemStack dye1 = dye.toItemStack();
dye1.setAmount(1);
dye.setColor(DyeColor.GRAY);
ItemStack dye0 = dye.toItemStack();
dye0.setAmount(1);
ImmutableList<ItemStack> dyes
= ImmutableList.of(dye0, dye1, dye2, dye3, dye4);
p.getOpenInventory().getTopInventory().setItem(1, dyes.get(0));