mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-11 19:56:52 +01:00
e4d10a6d67
Upstream has released updates that appears to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 122289ff Add FaceAttachable interface to handle Grindstone facing in common with Switches a6db750e SPIGOT-5647: ZombieVillager entity should have getVillagerType() CraftBukkit Changes:bbe3d58e
SPIGOT-5650: Lectern.setPage(int) causes a NullPointerException3075579f
Add FaceAttachable interface to handle Grindstone facing in common with Switches95bd4238
SPIGOT-5647: ZombieVillager entity should have getVillagerType()4d975ac3
SPIGOT-5617: setBlockData does not work when NotPlayEvent is called by redstone current
100 lines
5.6 KiB
Diff
100 lines
5.6 KiB
Diff
From 9642fa9a93c2e513dab17a997e7f019bb34ee2c2 Mon Sep 17 00:00:00 2001
|
|
From: Phoenix616 <mail@moep.tv>
|
|
Date: Sun, 15 Sep 2019 11:32:32 -0500
|
|
Subject: [PATCH] Fix zero-tick instant grow farms MC-113809
|
|
|
|
|
|
diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
index e790326c9c..c37a0f035d 100644
|
|
--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
+++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
@@ -566,6 +566,11 @@ public class PaperWorldConfig {
|
|
disableRelativeProjectileVelocity = getBoolean("game-mechanics.disable-relative-projectile-velocity", false);
|
|
}
|
|
|
|
+ public boolean fixZeroTickInstantGrowFarms = true;
|
|
+ private void fixZeroTickInstantGrowFarms() {
|
|
+ fixZeroTickInstantGrowFarms = getBoolean("fix-zero-tick-instant-grow-farms", fixZeroTickInstantGrowFarms);
|
|
+ }
|
|
+
|
|
public boolean altItemDespawnRateEnabled;
|
|
public Map<Material, Integer> altItemDespawnRateMap;
|
|
private void altItemDespawnRate() {
|
|
diff --git a/src/main/java/net/minecraft/server/Block.java b/src/main/java/net/minecraft/server/Block.java
|
|
index 540fcce1dd..e29ec958b3 100644
|
|
--- a/src/main/java/net/minecraft/server/Block.java
|
|
+++ b/src/main/java/net/minecraft/server/Block.java
|
|
@@ -46,6 +46,7 @@ public class Block implements IMaterial {
|
|
private final float g;
|
|
protected final BlockStateList<Block, IBlockData> blockStateList;
|
|
private IBlockData blockData;
|
|
+ public boolean randomTick = false; // Paper - fix MC-113809
|
|
protected final boolean v;
|
|
private final boolean i;
|
|
private final boolean j;
|
|
diff --git a/src/main/java/net/minecraft/server/BlockBamboo.java b/src/main/java/net/minecraft/server/BlockBamboo.java
|
|
index c482aad3e3..02c548dd9c 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(worldserver, blockposition)) {
|
|
worldserver.b(blockposition, true);
|
|
} else if ((Integer) iblockdata.get(BlockBamboo.f) == 0) {
|
|
+ if (worldserver.paperConfig.fixZeroTickInstantGrowFarms && !randomTick) return; // Paper - fix MC-113809
|
|
if (random.nextInt(Math.max(1, (int) (100.0F / worldserver.spigotConfig.bambooModifier) * 3)) == 0 && worldserver.isEmpty(blockposition.up()) && worldserver.getLightLevel(blockposition.up(), 0) >= 9) { // Spigot
|
|
int i = this.b(worldserver, blockposition) + 1;
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/BlockCactus.java b/src/main/java/net/minecraft/server/BlockCactus.java
|
|
index e0974e256f..3524fcb927 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(worldserver, blockposition)) {
|
|
worldserver.b(blockposition, true);
|
|
} else {
|
|
+ if (worldserver.paperConfig.fixZeroTickInstantGrowFarms && !randomTick) return; // Paper - fix MC-113809
|
|
BlockPosition blockposition1 = blockposition.up();
|
|
|
|
if (worldserver.isEmpty(blockposition1)) {
|
|
diff --git a/src/main/java/net/minecraft/server/BlockChorusFlower.java b/src/main/java/net/minecraft/server/BlockChorusFlower.java
|
|
index d70b52cadf..b624cf3804 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(worldserver, blockposition)) {
|
|
worldserver.b(blockposition, true);
|
|
} else {
|
|
+ if (worldserver.paperConfig.fixZeroTickInstantGrowFarms && !randomTick) return; // Paper - fix MC-113809
|
|
BlockPosition blockposition1 = blockposition.up();
|
|
|
|
if (worldserver.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 55b07444e1..3bc3c5aa29 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(worldserver, blockposition)) {
|
|
worldserver.b(blockposition, true);
|
|
} else if (worldserver.isEmpty(blockposition.up())) {
|
|
+ if (worldserver.paperConfig.fixZeroTickInstantGrowFarms && !randomTick) return; // Paper - fix MC-113809
|
|
int i;
|
|
|
|
for (i = 1; worldserver.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 1b823bcc08..3d5a0f0a03 100644
|
|
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
|
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
|
@@ -589,7 +589,9 @@ public class WorldServer extends World {
|
|
IBlockData iblockdata = chunksection.getType(blockposition2.getX() - j, blockposition2.getY() - j1, blockposition2.getZ() - k);
|
|
|
|
if (iblockdata.q()) {
|
|
+ iblockdata.getBlock().randomTick = true; // Paper - fix MC-113809
|
|
iblockdata.b(this, blockposition2, this.random);
|
|
+ iblockdata.getBlock().randomTick = false; // Paper - fix MC-113809
|
|
}
|
|
|
|
Fluid fluid = iblockdata.getFluid();
|
|
--
|
|
2.25.1
|
|
|