Paper/Spigot-Server-Patches/0118-Prevent-Fire-from-loading-chunks.patch
Zach Brown 974b0afca9
Remove last bit of chunk exists region file fix
CraftBukkit removed their implementation that caused this issue,
switching to Mojang's implementation which doesn't appear to share it. I
already removed the important bit in the last upstream merge, this is
just unused and unnecessary now. So we remove it.
2017-04-29 05:27:31 -05:00

52 lines
2.3 KiB
Diff

From 0cf6a91a4ecb498d0867e197dbffb42a5280a096 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
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 94cb9d462..dfc328850 100644
--- a/src/main/java/net/minecraft/server/BlockFire.java
+++ b/src/main/java/net/minecraft/server/BlockFire.java
@@ -164,6 +164,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) {
@@ -232,10 +233,14 @@ public class BlockFire extends Block {
}
private void a(World world, BlockPosition blockposition, int i, Random random, int j, BlockPosition sourceposition) { // CraftBukkit add sourceposition
- int k = this.c(world.getType(blockposition).getBlock());
+ // Paper start
+ final IBlockData iblockdata = world.getTypeIfLoaded(blockposition);
+ if (iblockdata == null) return;
+ int k = this.c(iblockdata.getBlock());
+ // Paper end
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());
@@ -294,7 +299,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.12.2.windows.2