gpt4 book ai didi

java - 我如何检测 Bukkit 生成的鹅卵石?

转载 作者:行者123 更新时间:2023-11-30 07:54:21 24 4
gpt4 key购买 nike

好的,所以我正在制作一个 Bukkit 插件,它应该检测鹅卵石生成器,请记住,我不想阻止玩家制造鹅卵石生成器,我只是想从事件中获取 block ,所以我可以用那 block 鹅卵石做其他事情。

到目前为止我尝试了什么:

  • BlockFromToEvent(没有找到鹅卵石,只找到 STATIONARY_LAVA to AIR)
  • BlockFormEvent(它只发现地面上有雪)

我想做的事情:

  • 我想检测由水+熔岩组合产生的鹅卵石 block
  • 我想得到他们的位置/位置/坐标

你能至少给我指明正确的方向吗?我已经拔了将近 3 个小时的头发。

感谢大家的帮助!

编辑:下图中的解决方案,如果需要将重新输入! solution

最佳答案

Good answer from FireBlast709 at Bukkit Forums

这将取消任何鹅卵石生成。基本上,如果您想操纵鹅卵石,您可以将取消行(已指示)更改为您需要的任何内容。


@EventHandler
public void onFromTo(BlockFromToEvent event){
Material type = event.getBlock().getType();
if (type == Material.WATER || type == Material.STATIONARY_WATER || type == Material.LAVA || type == Material.STATIONARY_LAVA){
Block b = event.getToBlock();
if (b.getType() == Material.AIR){
if (generatesCobble(type, b)){
/* DO WHATEVER YOU NEED WITH THE COBBLE */
event.setCancelled(true);
}
}
}
}

private final BlockFace[] faces = new BlockFace[]{
BlockFace.SELF,
BlockFace.UP,
BlockFace.DOWN,
BlockFace.NORTH,
BlockFace.EAST,
BlockFace.SOUTH,
BlockFace.WEST
};

public boolean generatesCobble(Material type, Block b){
Material mirrorID1 = (type == Material.WATER || type == Material.STATIONARY_WATER ? Material.LAVA : Material.WATER);
Material mirrorID2 = (type == Material.WATER || type == Material.STATIONARY_WATER ? Material.STATIONARY_LAVA : Material.STATIONARY_WATER);
for (BlockFace face : faces){
Block r = b.getRelative(face, 1);
if (r.getType() == mirrorID1 || r.getType() == mirrorID2){
return true;
}
}
return false;
}

关于java - 我如何检测 Bukkit 生成的鹅卵石?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44096564/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com