每次玩家发出特定命令时,都会从MySQL表的内容生成虚拟广告资源,然后显示给玩家。这很好。
现在,当玩家将物品从此虚拟库存移动到他自己的库存时,应该检查这些物品是否仍在数据库中。如果没有,该事件应该被取消。当玩家将物品从库存移动到虚拟库存时,应将它们添加到数据库表中。
我对MySQL查询没有任何问题,但我不知道我应该为事件使用哪个EventHandler(Player Inv - > Virtual Inv,Virtual Inv - > Player Inv)。 Bukkit Inventory Events
InventoryMoveItemEvent
会很完美,但只有当积木(料斗,分配器等)移动物品而不是玩家时才会调用它。
InventoryClickEvent
不是解决方案,因为将项目移动到另一个广告资源有很多种可能性:
InventoryClickEvent
和InventoryDragEvent
。任何人都知道如何解决这个问题?
答案 0 :(得分:2)
我有一个简单的解决方案,使用InventoryCloseEvent
,然后检查关闭是否库存内容与数据库中的内容相同,如果没有,则使用新库存更新数据库,反之亦然