geforkt von Mirrors/Paper
34731dd04e
Instead of overriding add within the queue, never add runnables to the queue if the light queue is disabled. This change is made to make timings reports and stacktraces less confusing for administrators, who prior to this change, would have seen the lighting queue referenced in both, regardless of whether or not it was enabled. This change should not affect performance, nor is it made with the intent to.
49 Zeilen
2.2 KiB
Diff
49 Zeilen
2.2 KiB
Diff
From 2153af4f9929cba896d12b8c3561f75ca8f7ea5d Mon Sep 17 00:00:00 2001
|
|
From: Shane Freeder <theboyetronic@gmail.com>
|
|
Date: Mon, 18 Dec 2017 07:26:56 +0000
|
|
Subject: [PATCH] Don't blindly send unlit chunks when lighting updates are
|
|
allowed
|
|
|
|
Spigot, by default, disables several mechanisms around how chunks are
|
|
lit, if ever, which has forced them to always send chunks before vanilla
|
|
would consider them ready to send, causing for lots of issues around
|
|
lighting glitches.
|
|
|
|
Shamefully, the amount of work to relight chunks can be detremental
|
|
to some servers, meaning that forcibily disabling light updates can
|
|
cause major performance issues.
|
|
|
|
as such, we make a compromise; if this "feature" is disabled, we will
|
|
only send chunks which are actually ready to be sent, otherwise, we
|
|
will always send chunks.
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
|
|
index d1066d82..001fca42 100644
|
|
--- a/src/main/java/net/minecraft/server/Chunk.java
|
|
+++ b/src/main/java/net/minecraft/server/Chunk.java
|
|
@@ -39,7 +39,7 @@ public class Chunk {
|
|
final PaperLightingQueue.LightingQueue lightingQueue = new PaperLightingQueue.LightingQueue(this); // Paper
|
|
private boolean done;
|
|
private boolean lit;
|
|
- private boolean r;
|
|
+ private boolean r; private boolean isTicked() { return r; }; // Paper - OBFHELPER
|
|
private boolean s;
|
|
private boolean t;
|
|
private long lastSaved;
|
|
@@ -1136,7 +1136,11 @@ public class Chunk {
|
|
* We cannot unfortunately do this lighting stage during chunk gen as it appears to put a lot more noticeable load on the server, than when it is done at play time.
|
|
* For now at least we will simply send all chunks, in accordance with pre 1.7 behaviour.
|
|
*/
|
|
- return true;
|
|
+ // Paper Start
|
|
+ // if randomLightUpdates are enabled, we should always return true, otherwise chunks may never send
|
|
+ // to the client due to not being lit, otherwise retain standard behavior and only send properly lit chunks.
|
|
+ return !this.world.spigotConfig.randomLightUpdates || (this.isTicked() && this.done && this.lit);
|
|
+ // Paper End
|
|
// Spigot End
|
|
}
|
|
|
|
--
|
|
2.15.1.windows.2
|
|
|