Bukkit自定义库存不更新

时间:2015-10-11 00:00:45

标签: bukkit

我正在尝试根据同一广告资源中另一个广告位中的项目更改自定义广告资源中的广告位。这是我现在的代码:

@EventHandler
public void processInventoryEvent(InventoryClickEvent e) {
  if (e.getRawSlot() == 11) {
    if (e.getCursor().getType() == Material.COAL || e.getCursor().getType() == Material.LOG || e.getCursor().getType() == Material.LOG_2) {
      e.getInventory.setItem(10, new ItemStack(Material.STAINED_GLASS_PANE, 1, DyeColor.GREEN.getData());
    } else {
      e.getInventory.setItem(10, new ItemStack(Material.STAINED_GLASS_PANE, 1, DyeColor.RED.getData());
    }
  }
}

目前的问题是库存似乎没有更新,因此需要重新打开库存以查看更改,并且我希望在玩家将项目放入该位置时更改项目。

非常感谢任何帮助。

谢谢!

1 个答案:

答案 0 :(得分:0)

显然,更新播放器的广告资源也会更新任何其他未清库存。条件之后,使用此块可以正常工作:

plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
  @Override
  public void run() {
    for (HumanEntity he : e.getInventory().getViewers()) {
      Player p = (Player) he;
      p.updateInventory();
    }
  }
}, 1L);

需要一次嘀嗒延迟,否则会出现狡猾(项目不会直接点击它们。)