我正在编写Bukkit插件以防止葡萄藤生长,取消BlockGrowEvent后,葡萄树仍在生长和蔓延。我怎样才能防止葡萄树生长,甚至在葡萄藤长大时会发生火灾?
代码:
@EventHandler (ignoreCancelled = true)
public void onVineGrow(BlockGrowEvent event){
event.setCancelled(true);
}
答案 0 :(得分:3)
仅当小麦,甘蔗,仙人掌,西瓜或南瓜等植物(以及其他一些植物)生长时才会调用BlockGrowEvent
。要检测葡萄藤蔓延,请收听BlockSpreadEvent
。由于这个事件是可以取消的,当你处理这个事件时,藤蔓蔓延的块仍然是空气,所以要检查块是藤蔓而不是火块或蘑菇蔓延,你可以看看新的正在传播的块的BlockState
并检查其类型event.getNewState().getData().getItemType()
是否等于Material.VINE
。