Commits

Brokkonaut authored and md_5 committed 8ef7afef65d
#1240: Call BlockGrowEvent for vines that are growing on additional sides of an existing vine block
No tags

nms-patches/net/minecraft/world/level/block/BlockVine.patch

Modified
1 1 --- a/net/minecraft/world/level/block/BlockVine.java
2 2 +++ b/net/minecraft/world/level/block/BlockVine.java
3 3 @@ -24,6 +24,8 @@
4 4 import net.minecraft.world.phys.shapes.VoxelShapeCollision;
5 5 import net.minecraft.world.phys.shapes.VoxelShapes;
6 6
7 7 +import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit
8 8 +
9 9 public class BlockVine extends Block {
10 10
11 11 public static final BlockStateBoolean UP = BlockSprawling.UP;
12 -@@ -196,20 +198,24 @@
12 +@@ -196,30 +198,34 @@
13 13 BlockPosition blockposition3 = blockposition2.relative(enumdirection1);
14 14 BlockPosition blockposition4 = blockposition2.relative(enumdirection2);
15 15
16 16 + // CraftBukkit start - Call BlockSpreadEvent
17 17 + BlockPosition source = blockposition;
18 18 +
19 19 if (flag && isAcceptableNeighbour(worldserver, blockposition3, enumdirection1)) {
20 20 - worldserver.setBlock(blockposition2, (IBlockData) this.defaultBlockState().setValue(getPropertyForFace(enumdirection1), true), 2);
21 21 + CraftEventFactory.handleBlockSpreadEvent(worldserver, source, blockposition2, (IBlockData) this.defaultBlockState().setValue(getPropertyForFace(enumdirection1), true), 2);
22 22 } else if (flag1 && isAcceptableNeighbour(worldserver, blockposition4, enumdirection2)) {
31 31 } else if (flag1 && worldserver.isEmptyBlock(blockposition4) && isAcceptableNeighbour(worldserver, blockposition.relative(enumdirection2), enumdirection3)) {
32 32 - worldserver.setBlock(blockposition4, (IBlockData) this.defaultBlockState().setValue(getPropertyForFace(enumdirection3), true), 2);
33 33 + CraftEventFactory.handleBlockSpreadEvent(worldserver, source, blockposition4, (IBlockData) this.defaultBlockState().setValue(getPropertyForFace(enumdirection3), true), 2);
34 34 } else if ((double) randomsource.nextFloat() < 0.05D && isAcceptableNeighbour(worldserver, blockposition2.above(), EnumDirection.UP)) {
35 35 - worldserver.setBlock(blockposition2, (IBlockData) this.defaultBlockState().setValue(BlockVine.UP, true), 2);
36 36 + CraftEventFactory.handleBlockSpreadEvent(worldserver, source, blockposition2, (IBlockData) this.defaultBlockState().setValue(BlockVine.UP, true), 2);
37 37 }
38 38 + // CraftBukkit end
39 39 }
40 40 } else if (isAcceptableNeighbour(worldserver, blockposition2, enumdirection)) {
41 - worldserver.setBlock(blockposition, (IBlockData) iblockdata.setValue(getPropertyForFace(enumdirection), true), 2);
41 +- worldserver.setBlock(blockposition, (IBlockData) iblockdata.setValue(getPropertyForFace(enumdirection), true), 2);
42 ++ CraftEventFactory.handleBlockGrowEvent(worldserver, blockposition, (IBlockData) iblockdata.setValue(getPropertyForFace(enumdirection), true), 2); // CraftBukkit
43 + }
44 +
45 + }
46 + } else {
47 + if (enumdirection == EnumDirection.UP && blockposition.getY() < worldserver.getMaxBuildHeight() - 1) {
48 + if (this.canSupportAtFace(worldserver, blockposition, enumdirection)) {
49 +- worldserver.setBlock(blockposition, (IBlockData) iblockdata.setValue(BlockVine.UP, true), 2);
50 ++ CraftEventFactory.handleBlockGrowEvent(worldserver, blockposition, (IBlockData) iblockdata.setValue(BlockVine.UP, true), 2); // CraftBukkit
51 + return;
52 + }
53 +
42 54 @@ -239,7 +245,7 @@
43 55 }
44 56
45 57 if (this.hasHorizontalConnection(iblockdata2)) {
46 58 - worldserver.setBlock(blockposition1, iblockdata2, 2);
47 59 + CraftEventFactory.handleBlockSpreadEvent(worldserver, blockposition, blockposition1, iblockdata2, 2); // CraftBukkit
48 60 }
49 61
50 62 return;
51 63 @@ -254,7 +260,7 @@

Everything looks good. We'll let you know here if there's anything you should know about.

Add shortcut