mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-09 06:50:32 +08:00
df984898ac
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 CraftBukkit Changes:7554e08e
Add UUID support to CraftProfileBanList3fe37460
SPIGOT-5378: Fix TileEntity fixer deadlock12386dd4
SPIGOT-5375: Add spaces to coordinates from tile fixer606c19e2
SPIGOT-5373: Simultaneous left+right click in creative mode does not work13caf848
SPIGOT-5370: Fix Block#rayTrace considering other blocks.
100 lines
5.5 KiB
Diff
100 lines
5.5 KiB
Diff
From 52a8681d94a5ea7b67abdc6ef1e890901a0c6632 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 29fd499683..7ddcaeaa75 100644
|
|
--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
+++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
@@ -568,6 +568,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 e077359b02..619237d68d 100644
|
|
--- a/src/main/java/net/minecraft/server/Block.java
|
|
+++ b/src/main/java/net/minecraft/server/Block.java
|
|
@@ -44,6 +44,7 @@ public class Block implements IMaterial {
|
|
private final float frictionFactor;
|
|
protected final BlockStateList<Block, IBlockData> blockStateList;
|
|
private IBlockData blockData;
|
|
+ public boolean randomTick = false; // Paper - fix MC-113809
|
|
protected final boolean v;
|
|
private final boolean g;
|
|
@Nullable
|
|
diff --git a/src/main/java/net/minecraft/server/BlockBamboo.java b/src/main/java/net/minecraft/server/BlockBamboo.java
|
|
index ffb65776c5..3a9c3b54a9 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 (world.paperConfig.fixZeroTickInstantGrowFarms && !randomTick) return; // Paper - 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..124b4b4b00 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 (world.paperConfig.fixZeroTickInstantGrowFarms && !randomTick) return; // Paper - 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..cde2524ca9 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 (world.paperConfig.fixZeroTickInstantGrowFarms && !randomTick) return; // Paper - 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..a4850c0705 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 (world.paperConfig.fixZeroTickInstantGrowFarms && !randomTick) return; // Paper - 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 bd1e4dbaed..5b18f4bd52 100644
|
|
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
|
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
|
@@ -568,7 +568,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((World) this, blockposition2, this.random);
|
|
+ iblockdata.getBlock().randomTick = false; // Paper - fix MC-113809
|
|
}
|
|
|
|
Fluid fluid = iblockdata.p();
|
|
--
|
|
2.22.1
|
|
|