From 7601da03bdf749116f19ba3234274d0207f63a61 Mon Sep 17 00:00:00 2001 From: Phoenix616 Date: Thu, 16 May 2019 01:33:46 +0100 Subject: [PATCH] Only grow cactus/reeds/chorus fruit on random tick (MC-113809) --- src/main/java/net/minecraft/server/Block.java | 1 + src/main/java/net/minecraft/server/BlockCactus.java | 1 + src/main/java/net/minecraft/server/BlockChorusFlower.java | 1 + src/main/java/net/minecraft/server/BlockReed.java | 1 + src/main/java/net/minecraft/server/WorldServer.java | 2 ++ 5 files changed, 6 insertions(+) diff --git a/src/main/java/net/minecraft/server/Block.java b/src/main/java/net/minecraft/server/Block.java index 8e16162a7..9b17269e6 100644 --- a/src/main/java/net/minecraft/server/Block.java +++ b/src/main/java/net/minecraft/server/Block.java @@ -31,6 +31,7 @@ public class Block implements IMaterial { protected final boolean q; protected final SoundEffectType stepSound; protected final Material material; + public boolean randomTick = false; // Purpur - fix MC-113809 // Paper start public co.aikar.timings.Timing timing; public co.aikar.timings.Timing getTiming() { diff --git a/src/main/java/net/minecraft/server/BlockCactus.java b/src/main/java/net/minecraft/server/BlockCactus.java index 29f9ff6c1..375ada5a4 100644 --- a/src/main/java/net/minecraft/server/BlockCactus.java +++ b/src/main/java/net/minecraft/server/BlockCactus.java @@ -21,6 +21,7 @@ public class BlockCactus extends Block { if (!iblockdata.canPlace(world, blockposition)) { world.b(blockposition, true); } else { + if (!randomTick) return; // Purpur - fix MC-113809 BlockPosition blockposition1 = blockposition.up(); if (world.isEmpty(blockposition1)) { diff --git a/src/main/java/net/minecraft/server/BlockChorusFlower.java b/src/main/java/net/minecraft/server/BlockChorusFlower.java index 74fa4889f..bbda083f6 100644 --- a/src/main/java/net/minecraft/server/BlockChorusFlower.java +++ b/src/main/java/net/minecraft/server/BlockChorusFlower.java @@ -22,6 +22,7 @@ public class BlockChorusFlower extends Block { if (!iblockdata.canPlace(world, blockposition)) { world.b(blockposition, true); } else { + if (!randomTick) return; // Purpur - fix MC-113809 BlockPosition blockposition1 = blockposition.up(); if (world.isEmpty(blockposition1) && blockposition1.getY() < 256) { diff --git a/src/main/java/net/minecraft/server/BlockReed.java b/src/main/java/net/minecraft/server/BlockReed.java index ff674a9d5..4a13e248e 100644 --- a/src/main/java/net/minecraft/server/BlockReed.java +++ b/src/main/java/net/minecraft/server/BlockReed.java @@ -23,6 +23,7 @@ public class BlockReed extends Block { if (!iblockdata.canPlace(world, blockposition)) { world.b(blockposition, true); } else if (world.isEmpty(blockposition.up())) { + if (!randomTick) return; // Purpur - fix MC-113809 int i; for (i = 1; world.getType(blockposition.down(i)).getBlock() == this; ++i) { diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java index 548e4e02d..17c8f9ff8 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -447,7 +447,9 @@ public class WorldServer extends World { IBlockData iblockdata = chunksection.getType(blockposition2.getX() - j, blockposition2.getY() - j1, blockposition2.getZ() - k); if (iblockdata.q()&& (!purpurConfig.blockTickEvent || new net.pl3x.purpur.event.block.BlockTickEvent(getWorld(), blockposition2.x, blockposition2.y, blockposition2.z, true).callEvent())) { // Purpur + iblockdata.getBlock().randomTick = true; // Purpur - fix MC-113809 iblockdata.b((World) this, blockposition2, this.random); + iblockdata.getBlock().randomTick = false; // Purpur - fix MC-113809 } Fluid fluid = chunksection.b(blockposition2.getX() - j, blockposition2.getY() - j1, blockposition2.getZ() - k); -- 2.20.1