--- a/net/minecraft/world/level/block/BlockChorusFlower.java +++ b/net/minecraft/world/level/block/BlockChorusFlower.java @@ -22,6 +22,8 @@ import net.minecraft.world.phys.MovingObjectPositionBlock; import net.minecraft.world.phys.shapes.VoxelShape; +import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit + public class BlockChorusFlower extends Block { public static final MapCodec CODEC = RecordCodecBuilder.mapCodec((instance) -> { @@ -102,8 +104,12 @@ } if (flag && allNeighborsEmpty(worldserver, blockposition1, (EnumDirection) null) && worldserver.isEmptyBlock(blockposition.above(2))) { - worldserver.setBlock(blockposition, BlockChorusFruit.getStateWithConnections(worldserver, blockposition, this.plant.defaultBlockState()), 2); - this.placeGrownFlower(worldserver, blockposition1, i); + // CraftBukkit start - add event + if (CraftEventFactory.handleBlockSpreadEvent(worldserver, blockposition, blockposition1, this.defaultBlockState().setValue(BlockChorusFlower.AGE, Integer.valueOf(i)), 2)) { + worldserver.setBlock(blockposition, BlockChorusFruit.getStateWithConnections(worldserver, blockposition, this.plant.defaultBlockState()), 2); + this.placeGrownFlower(worldserver, blockposition1, i); + } + // CraftBukkit end } else if (i < 4) { j = randomsource.nextInt(4); if (flag1) { @@ -117,18 +123,30 @@ BlockPosition blockposition2 = blockposition.relative(enumdirection); if (worldserver.isEmptyBlock(blockposition2) && worldserver.isEmptyBlock(blockposition2.below()) && allNeighborsEmpty(worldserver, blockposition2, enumdirection.getOpposite())) { - this.placeGrownFlower(worldserver, blockposition2, i + 1); - flag2 = true; + // CraftBukkit start - add event + if (CraftEventFactory.handleBlockSpreadEvent(worldserver, blockposition, blockposition2, this.defaultBlockState().setValue(BlockChorusFlower.AGE, Integer.valueOf(i + 1)), 2)) { + this.placeGrownFlower(worldserver, blockposition2, i + 1); + flag2 = true; + } + // CraftBukkit end } } if (flag2) { worldserver.setBlock(blockposition, BlockChorusFruit.getStateWithConnections(worldserver, blockposition, this.plant.defaultBlockState()), 2); } else { - this.placeDeadFlower(worldserver, blockposition); + // CraftBukkit start - add event + if (CraftEventFactory.handleBlockGrowEvent(worldserver, blockposition, this.defaultBlockState().setValue(BlockChorusFlower.AGE, Integer.valueOf(5)), 2)) { + this.placeDeadFlower(worldserver, blockposition); + } + // CraftBukkit end } } else { - this.placeDeadFlower(worldserver, blockposition); + // CraftBukkit start - add event + if (CraftEventFactory.handleBlockGrowEvent(worldserver, blockposition, this.defaultBlockState().setValue(BlockChorusFlower.AGE, Integer.valueOf(5)), 2)) { + this.placeDeadFlower(worldserver, blockposition); + } + // CraftBukkit end } } @@ -265,6 +283,11 @@ BlockPosition blockposition = movingobjectpositionblock.getBlockPos(); if (!world.isClientSide && iprojectile.mayInteract(world, blockposition) && iprojectile.mayBreak(world)) { + // CraftBukkit + if (!CraftEventFactory.callEntityChangeBlockEvent(iprojectile, blockposition, Blocks.AIR.defaultBlockState())) { + return; + } + // CraftBukkit end world.destroyBlock(blockposition, true, iprojectile); }