sky浩瀚
我监听BlockBreakEvent事件后打算删除被挖掘的掉落物
我尝试使用e.getBlock().getDrops().clear();但是它不工作,于是我上网搜了下,发现可以将挖掘的方块替换成空气
如:
e.getBlock().setType(Material.AIR);
e.getPlayer().getWorld().getBlockAt(e.getBlock().getLocation()).setType(Material.AIR);
但以上代码可能绕过一些保护类的插件,而且如你使用工具挖掘(如稿子),工具不会掉耐久
我该怎么办?

LCwwww
不知道行不行,但是我提供一个思路:在破坏(挖掘)完一个方块之后,会生成掉落物实体,EntityItem便是它们的类,在挖掘完方块之后删除实体就行了

海螺螺
水桶 1.13 之后加入了 BlockDropItemEvent 可以用,尽管 deprecated 了

1.13 之前的话,你可以在 BlockBreakEvent 时注册一个一次性的 listener 来监听随之而来的 ItemSpawnEvent