aboutsummaryrefslogtreecommitdiffhomepage
path: root/Spigot-Server-Patches/0128-Prevent-Fire-from-loading-chunks.patch
diff options
context:
space:
mode:
Diffstat (limited to 'Spigot-Server-Patches/0128-Prevent-Fire-from-loading-chunks.patch')
-rw-r--r--Spigot-Server-Patches/0128-Prevent-Fire-from-loading-chunks.patch49
1 files changed, 49 insertions, 0 deletions
diff --git a/Spigot-Server-Patches/0128-Prevent-Fire-from-loading-chunks.patch b/Spigot-Server-Patches/0128-Prevent-Fire-from-loading-chunks.patch
new file mode 100644
index 0000000000..d2c4c56e28
--- /dev/null
+++ b/Spigot-Server-Patches/0128-Prevent-Fire-from-loading-chunks.patch
@@ -0,0 +1,49 @@
+From 144397a2bbef30c05482b444852402488bccb5eb Mon Sep 17 00:00:00 2001
+From: Aikar <[email protected]>
+Date: Sun, 17 Apr 2016 17:27:09 -0400
+Subject: [PATCH] Prevent Fire from loading chunks
+
+This causes the nether to spam unload/reload chunks, plus overall
+bad behavior.
+
+diff --git a/src/main/java/net/minecraft/server/BlockFire.java b/src/main/java/net/minecraft/server/BlockFire.java
+index 1b91f58..c348221 100644
+--- a/src/main/java/net/minecraft/server/BlockFire.java
++++ b/src/main/java/net/minecraft/server/BlockFire.java
+@@ -162,6 +162,7 @@ public class BlockFire extends Block {
+ }
+
+ BlockPosition blockposition1 = blockposition.a(j, l, k);
++ if (!world.isLoaded(blockposition1)) continue; // Paper
+ int j1 = this.d(world, blockposition1);
+
+ if (j1 > 0) {
+@@ -230,10 +231,12 @@ public class BlockFire extends Block {
+ }
+
+ private void a(World world, BlockPosition blockposition, int i, Random random, int j) {
+- int k = this.c(world.getType(blockposition).getBlock());
++ final IBlockData iblockdata = world.getTypeIfLoaded(blockposition); // Paper
++ if (iblockdata == null) return; // Paper
++ int k = this.c(iblockdata.getBlock()); // Paper
+
+ if (random.nextInt(i) < k) {
+- IBlockData iblockdata = world.getType(blockposition);
++ //IBlockData iblockdata = world.getType(blockposition); // Paper
+
+ // CraftBukkit start
+ org.bukkit.block.Block theBlock = world.getWorld().getBlockAt(blockposition.getX(), blockposition.getY(), blockposition.getZ());
+@@ -291,7 +294,9 @@ public class BlockFire extends Block {
+ for (int k = 0; k < j; ++k) {
+ EnumDirection enumdirection = aenumdirection[k];
+
+- i = Math.max(this.d(world.getType(blockposition.shift(enumdirection)).getBlock()), i);
++ final IBlockData type = world.getTypeIfLoaded(blockposition.shift(enumdirection)); // Paper
++ if (type == null) continue; // Paper
++ i = Math.max(this.d(type.getBlock()), i); // Paper
+ }
+
+ return i;
+--
+2.9.3
+