--- a/net/minecraft/world/item/ItemBoneMeal.java +++ b/net/minecraft/world/item/ItemBoneMeal.java @@ -35,13 +35,19 @@ @Override public EnumInteractionResult useOn(ItemActionContext itemactioncontext) { + // CraftBukkit start - extract bonemeal application logic to separate, static method + return applyBonemeal(itemactioncontext); + } + + public static EnumInteractionResult applyBonemeal(ItemActionContext itemactioncontext) { + // CraftBukkit end World world = itemactioncontext.getLevel(); BlockPosition blockposition = itemactioncontext.getClickedPos(); BlockPosition blockposition1 = blockposition.relative(itemactioncontext.getClickedFace()); if (growCrop(itemactioncontext.getItemInHand(), world, blockposition)) { if (!world.isClientSide) { - itemactioncontext.getPlayer().gameEvent(GameEvent.ITEM_INTERACT_FINISH); + if (itemactioncontext.getPlayer() != null) itemactioncontext.getPlayer().gameEvent(GameEvent.ITEM_INTERACT_FINISH); // CraftBukkit - SPIGOT-7518 world.levelEvent(1505, blockposition, 15); } @@ -52,7 +58,7 @@ if (flag && growWaterPlant(itemactioncontext.getItemInHand(), world, blockposition1, itemactioncontext.getClickedFace())) { if (!world.isClientSide) { - itemactioncontext.getPlayer().gameEvent(GameEvent.ITEM_INTERACT_FINISH); + if (itemactioncontext.getPlayer() != null) itemactioncontext.getPlayer().gameEvent(GameEvent.ITEM_INTERACT_FINISH); // CraftBukkit - SPIGOT-7518 world.levelEvent(1505, blockposition1, 15); }