Files
Purpur/patches/server/0043-Fix-MC-113809-Only-grow-cactus-reeds-bamboo-chorus-f.patch
William Blake Galbreath eb13b323fd Updated Upstream (Paper)
Upstream has released updates that appears to apply and compile correctly

Paper Changes:
c6987e1a Peek the unload queue for chunk generation checks (#2332)
4ac69cec Bring task execution into server tick timings (#2357)
edce5384 Amend PlayerInteractAtEntityEvent javadoc for ArmorStands (#2309)
8ecd4337 Set spawning entity for fireworks spawned by a crossbow (#2358)
2019-07-24 20:20:08 -05:00

93 lines
5.1 KiB
Diff

From 7f40cc8f40da0c4133ed7c5e4de13e406fdc6cf3 Mon Sep 17 00:00:00 2001
From: Phoenix616 <mail@moep.tv>
Date: Thu, 16 May 2019 01:33:46 +0100
Subject: [PATCH] Fix MC-113809 Only grow cactus/reeds/bamboo/chorus fruit on
random tick
---
src/main/java/net/minecraft/server/Block.java | 1 +
src/main/java/net/minecraft/server/BlockBamboo.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 ++
6 files changed, 7 insertions(+)
diff --git a/src/main/java/net/minecraft/server/Block.java b/src/main/java/net/minecraft/server/Block.java
index f9747fb18d..4a537d1d79 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/BlockBamboo.java b/src/main/java/net/minecraft/server/BlockBamboo.java
index ffb65776c5..d94368b030 100644
--- a/src/main/java/net/minecraft/server/BlockBamboo.java
+++ b/src/main/java/net/minecraft/server/BlockBamboo.java
@@ -85,6 +85,7 @@ public class BlockBamboo extends Block implements IBlockFragilePlantElement {
if (!iblockdata.canPlace(world, blockposition)) {
world.b(blockposition, true);
} else if ((Integer) iblockdata.get(BlockBamboo.f) == 0) {
+ if (!randomTick) return; // Purpur - fix MC-113809
if (world.random.nextInt(Math.max(1, (int) (100.0F / world.spigotConfig.bambooModifier) * 3)) == 0 && world.isEmpty(blockposition.up()) && world.getLightLevel(blockposition.up(), 0) >= 9) { // Spigot
int i = this.b((IBlockAccess) world, blockposition) + 1;
diff --git a/src/main/java/net/minecraft/server/BlockCactus.java b/src/main/java/net/minecraft/server/BlockCactus.java
index 29f9ff6c18..375ada5a4b 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 74fa4889ff..bbda083f67 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 ff674a9d5b..4a13e248ed 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 5d319d1371..f780aea01a 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -452,7 +452,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 = iblockdata.p();
--
2.20.1