夜雨晨风丶
本帖最后由 tdiant 于 2023-3-31 10:35 编辑

PlayerDropItemEvent只能获取到丢出的物品,如何获取它是从物品栏里哪个槽位被丢出的呢。

结冰的离季
本帖最后由 结冰的离季 于 2023-3-30 15:00 编辑

我能想到的就是 每tick 获取玩家背包的快照(每个位置对应哪个itemstack)
然后与上一tick的快照比较,就能知道背包的改动,但还得判断发生改动的物品是否是丢出的物品,所以还得配合
PlayerDropItemEvent,那么你还得知道是 快照先备份还是玩家先触发 PlayerDropItemEvent

如果是唯一的物品倒是可以 直接 Inventory::first(ItemStack) 去查


青蛙的名单
在这个时候获取玩家背包,玩家背包里的物品尚未被丢出,值得注意的是,它不一定需要把这个物品拿在手中才能丢弃。

青蛙的名单
结冰的离季 发表于 2023-3-30 14:54
我能想到的就是 每tick 获取玩家背包的快照(每个位置对应哪个itemstack)
然后与上一tick的快照比较,就能 ...

equals的话不用担心唯一的物品的问题吧,只有完全相同的itemstack才会equals

第一页 上一页 下一页 最后一页