魔法帝
如题,我用了好多方法都不能阻止玩家打灭火焰。
某些场景里面,玩家将火破坏了就会导致场景比较滑稽。
我监听破坏方块事件来取消破坏,但是依然无法阻止
版本Spigot-1.12.2

结冰的离季
PlayerInteractEvent 试过了吗

魔法帝
结冰的离季 发表于 2021-9-14 17:38
PlayerInteractEvent 试过了吗

哦哦哦!没想到,忘记试没试了,一会儿试一下,之前用了好多办法都不成功,后来就放着了

tallmoon
PlayerInteractEvent
getClickedBlock().getType().equals(Material.FIRE)
setCancelled(true);

魔法帝
本帖最后由 诺凡克罗诺 于 2021-9-15 10:07 编辑
tallmoon 发表于 2021-9-14 19:50
PlayerInteractEvent
getClickedBlock().getType().equals(Material.FIRE)
setCancelled(true);

实践证明无效!,我输出一下方块类型看下,或许不是Material.FIRE
我尝试输出交互方块类型,发现打火无法触发交互事件!,没有输出任何东西,交互其它方块都有输出

tallmoon
诺凡克罗诺 发表于 2021-9-15 10:01
实践证明无效!,我输出一下方块类型看下,或许不是Material.FIRE
我尝试输出交互方块类型,发现打火无法触 ...

不太清楚你那边的版本
我是Paper1.16.5最新构建的版本

魔法帝
tallmoon 发表于 2021-9-15 10:16
不太清楚你那边的版本
我是Paper1.16.5最新构建的版本

1.12.2好像没有火方块,我刚才重新试了一下,交互火焰的时候其实是交互到接壤的方块,然后火焰就熄了,具体是交互到火焰底部/顶部/周围这些方块火焰就熄了,或许是火焰周围的方块会获得一个状态,具体我再看看

魔法帝
诺凡克罗诺 发表于 2021-9-15 10:34
1.12.2好像没有火方块,我刚才重新试了一下,交互火焰的时候其实是交互到接壤的方块,然后火焰就熄了,具 ...

已经解决!
从交互的方块面获得该面相对的方块判断这个方块的类型,代码如下
  1. Material material = e.getClickedBlock().getRelative(e.getBlockFace()).getType();
  2.             if(material.equals(Material.FIRE)){
  3.                 e.setCancelled(true);
  4.             }
复制代码

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