我想用其他颜色(例如,从青色到灰色)的新染料替换播放器库存中的一种染料。

我的插件可以完美地将一种染料更改为另一种染料,但是当我将其移至快捷栏时,我无法将其删除,并且当我在清单中单击它时,它会突然消失。在这种情况下,我认为该项目不存在。

如何更改该商品的颜色?



码:

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)





下载

我制作了一个带有此错误的示例插件:


Main file
Example plugin to download




如何解决此错误?

最佳答案

我的代码中有一个愚蠢的错误,我没有将灰色染料的数量设置为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));

08-07 03:21