我正在编写一个Bukkit插件来防止葡萄树生长,取消BlockGrowEvent之后,葡萄树仍在生长和传播。我如何防止藤蔓生长,并且在藤蔓生长时事件甚至引发?

码:

@EventHandler (ignoreCancelled = true)
public void onVineGrow(BlockGrowEvent event){
    event.setCancelled(true);
}

最佳答案

仅当小麦,甘蔗,仙人掌,西瓜或南瓜等植物(以及其他一些植物)生长时,才调用BlockGrowEvent。要检测藤蔓蔓延,请听BlockSpreadEvent。由于此事件是可以取消的,因此在处理该事件时,蔓延蔓延的障碍物仍将是空气,因此要检查蔓延蔓延的障碍物是否是蔓延藤蔓而不是火势蔓延或蘑菇蔓延,请查看新的传播到的块的BlockState并检查其类型event.getNewState().getData().getItemType()是否等于Material.VINE

10-06 01:47