e56bbcdcda
may help #284 Cleans up the lighting queue system, reducing diff and improving implementation. We no longer stop chunk unloads due to lighting updates, and instead simply flush the lighting queue. The cost of forcing the chunk (and its neighbors!) to stay loaded waiting for its lighting work to finish is much greater than simply taking the hit and doing the work. This change also helps reduce the diff and avoid bugs with missed diffs by removing duplicated logic. Also switches to a more effecient data structure (ArrayDeque instead of LinkedList) for the queue itself.
23 lines
1,011 B
Diff
23 lines
1,011 B
Diff
From c0da998748217fabcbbea1ae21ca614b18409710 Mon Sep 17 00:00:00 2001
|
|
From: Aikar <aikar@aikar.co>
|
|
Date: Thu, 31 Mar 2016 19:17:58 -0400
|
|
Subject: [PATCH] Do not load chunks for light checks
|
|
|
|
Should only happen for blocks on the edge that uses neighbors light level
|
|
(certain blocks). In that case, there will be 3-4 other neighbors to get a light level from.
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
|
|
index 095d4b2..5223785 100644
|
|
--- a/src/main/java/net/minecraft/server/World.java
|
|
+++ b/src/main/java/net/minecraft/server/World.java
|
|
@@ -707,6 +707,7 @@ public abstract class World implements IBlockAccess {
|
|
if (blockposition.getY() >= 256) {
|
|
blockposition = new BlockPosition(blockposition.getX(), 255, blockposition.getZ());
|
|
}
|
|
+ if (!this.isLoaded(blockposition)) return 0; // Paper
|
|
|
|
Chunk chunk = this.getChunkAtWorldCoords(blockposition);
|
|
|
|
--
|
|
2.8.2
|
|
|