将 itemstack 移动到其他库存时的事件

Event when moving itemstack to other inventory

每次玩家发出特定命令时,都会根据 MySQL table 的内容生成虚拟库存,然后显示给玩家。没问题。

现在,当玩家将物品从这个虚拟物品栏移动到他自己的物品栏时,它应该检查物品是否仍在数据库中。如果没有,则该事件应被取消。当玩家将物品从他的物品栏移动到虚拟物品栏时,它们应该被添加到数据库中 table.

我对 MySQL 查询没有问题,但我不知道应该为事件使用哪个 EventHandler(Player Inv -> Virtual Inv,Virtual Inv -> Player Inv)。 Bukkit Inventory Events

InventoryMoveItemEvent 会很完美,但只有当方块(漏斗、发射器等)移动物品而不是玩家时才会调用它。

InventoryClickEvent 不是解决方案,因为将物品移动到另一个库存有多种不同的可能性:


有人知道我如何解决这个问题吗?

对此我有一个简单的解决方案,使用 InventoryCloseEvent 然后在关闭时检查清单内容是否与数据库中的内容相同,如果不相同则使用新清单更新数据库并反之亦然。