0708fa363b
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: eb2e6578 SPIGOT-5116: Fix concurrent modification exception inside ChunkMapDistance 989f9b3d SPIGOT-4849: Fix server crash when accessing chunks during chunk load/unload/populate events f554183c SPIGOT-5171: Don't fire PlayerTeleportEvent if not actually moving 2349feb8 SPIGOT-5163: Cancelling PlayerBucketFillEvent visually removes the targeted block Spigot Changes: 9a643a6a Remove DataWatcher Locking
57 lines
2.4 KiB
Diff
57 lines
2.4 KiB
Diff
From 067640ae81f0a55d2a5deb5a9703b7c7a39629ff 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 81e9717ae..49e3d7284 100644
|
|
--- a/src/main/java/net/minecraft/server/BlockFire.java
|
|
+++ b/src/main/java/net/minecraft/server/BlockFire.java
|
|
@@ -163,6 +163,7 @@ public class BlockFire extends Block {
|
|
}
|
|
|
|
blockposition_mutableblockposition.g(blockposition).e(l, j1, i1);
|
|
+ if (!world.isLoaded(blockposition_mutableblockposition)) continue; // Paper
|
|
int l1 = this.a((IWorldReader) world, (BlockPosition) blockposition_mutableblockposition);
|
|
|
|
if (l1 > 0) {
|
|
@@ -208,10 +209,16 @@ 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.q(world.getType(blockposition));
|
|
+ // Paper start
|
|
+ final IBlockData iblockdata = world.getTypeIfLoaded(blockposition);
|
|
+ if (iblockdata == null) {
|
|
+ return;
|
|
+ }
|
|
+ int k = this.q(iblockdata);
|
|
+ // 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());
|
|
@@ -269,8 +276,12 @@ public class BlockFire extends Block {
|
|
|
|
for (int k = 0; k < j; ++k) {
|
|
EnumDirection enumdirection = aenumdirection[k];
|
|
- IBlockData iblockdata = iworldreader.getType(blockposition.shift(enumdirection));
|
|
-
|
|
+ // Paper start
|
|
+ IBlockData iblockdata = iworldreader.getTypeIfLoaded(blockposition.shift(enumdirection));
|
|
+ if (iblockdata == null) {
|
|
+ continue;
|
|
+ }
|
|
+ // Paper end
|
|
i = Math.max(this.r(iblockdata), i);
|
|
}
|
|
|
|
--
|
|
2.22.0
|
|
|