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;
}
好的,首先,謝謝你的回答,但是在後面我指定了一些東西:「好吧,我正在製作一個Bukkit插件,它應該檢測鵝卵石生成器,請記住,我不想阻止玩家們從做鵝卵石發電機,「仍然感謝回答。 –
我不明白這怎麼回答你的問題?它明確地說,你應該用代碼 – Kerooker
中的任何你需要的替換'event.setCancelled(true)',因此,不取消它。 – Kerooker