Java 查看库存而不进行编辑

Java 查看库存而不进行编辑,java,minecraft,bukkit,inventory,Java,Minecraft,Bukkit,Inventory,大家好,可能是个问题。我知道如何打开其他人的库存并对其进行更改。但我想要的是只打开目录,而不需要对播放器目录进行更改。只是预览一下 Player target = Bukkit.getPlayer(args[0]); if (target != null) { p.openInventory(target.getInventory()); } 有人知道如何让其他人看到库存,而不让他们从库存中取出任何物品吗 谢谢大家! 正如Andrew Li在评论中指出的

大家好,可能是个问题。我知道如何打开其他人的库存并对其进行更改。但我想要的是只打开目录,而不需要对播放器目录进行更改。只是预览一下

Player target = Bukkit.getPlayer(args[0]);
      if (target != null) {
        p.openInventory(target.getInventory());
      }
有人知道如何让其他人看到库存,而不让他们从库存中取出任何物品吗


谢谢大家!

正如Andrew Li在评论中指出的那样,您可以通过一个
目录点击事件来实现这一点

InventoryClick是一个可取消的事件,您只需将单击的库存与目标库存进行比较,如下所示:

@EventHandler
public void onInventoryClick(InventoryClickEvent e) {
HumanEntity clicker = e.getWhoClicked();
Inventory inv = e.getClickedInventory();
if (/*inv is your saved inv*/) {
e.setCancelled(true);
}

通过这种方式,您可以取消库存单击,从而取消库存中发生的任何操作,如获取或放置项目,但仍然允许此人查看库存。

您可能可以使用
InventoryClickEvent
检查库存是否是目标的库存,以及单击的是执行命令的玩家,然后取消它。嗨,我正试图按照你的解释,但我无法让“getClickedInventory”方法工作…有什么问题吗?