NOT FINISHED!!! Current Progress on 1.13-pre7 update
This work is 100% unfinished. I am pushing it up so that we as a team can work on this update. Do not try to use this branch. You will fail.
This commit is contained in:
@@ -6,7 +6,7 @@ Subject: [PATCH] Lighting Queue
|
||||
This provides option to queue lighting updates to ensure they do not cause the server lag
|
||||
|
||||
diff --git a/src/main/java/co/aikar/timings/WorldTimingsHandler.java b/src/main/java/co/aikar/timings/WorldTimingsHandler.java
|
||||
index e0ad559b7..4eebd9fae 100644
|
||||
index 145cb274b..eff9dcf54 100644
|
||||
--- a/src/main/java/co/aikar/timings/WorldTimingsHandler.java
|
||||
+++ b/src/main/java/co/aikar/timings/WorldTimingsHandler.java
|
||||
@@ -0,0 +0,0 @@ public class WorldTimingsHandler {
|
||||
@@ -25,9 +25,10 @@ index e0ad559b7..4eebd9fae 100644
|
||||
+
|
||||
+ lightingQueueTimer = Timings.ofSafe(name + "Lighting Queue");
|
||||
}
|
||||
}
|
||||
|
||||
public static Timing getTickList(WorldServer worldserver, String timingsType) {
|
||||
diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
||||
index bf7af475c..94a173045 100644
|
||||
index a340866f3..1e3405cc1 100644
|
||||
--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
||||
+++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
||||
@@ -0,0 +0,0 @@ public class PaperWorldConfig {
|
||||
@@ -42,19 +43,19 @@ index bf7af475c..94a173045 100644
|
||||
+ }
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
|
||||
index 50113c303..aaf253c89 100644
|
||||
index 36ea4ad47..e5567701e 100644
|
||||
--- a/src/main/java/net/minecraft/server/Chunk.java
|
||||
+++ b/src/main/java/net/minecraft/server/Chunk.java
|
||||
@@ -0,0 +0,0 @@ public class Chunk {
|
||||
@@ -0,0 +0,0 @@ public class Chunk implements IChunkAccess {
|
||||
return removed;
|
||||
}
|
||||
}
|
||||
+ final PaperLightingQueue.LightingQueue lightingQueue = new PaperLightingQueue.LightingQueue(this);
|
||||
// Paper end
|
||||
private boolean done;
|
||||
private boolean lit;
|
||||
@@ -0,0 +0,0 @@ public class Chunk {
|
||||
private void h(boolean flag) {
|
||||
public boolean areNeighborsLoaded(final int radius) {
|
||||
switch (radius) {
|
||||
@@ -0,0 +0,0 @@ public class Chunk implements IChunkAccess {
|
||||
private void g(boolean flag) {
|
||||
this.world.methodProfiler.a("recheckGaps");
|
||||
if (this.world.areChunksLoaded(new BlockPosition(this.locX * 16 + 8, 0, this.locZ * 16 + 8), 16)) {
|
||||
+ this.runOrQueueLightUpdate(() -> recheckGaps(flag)); // Paper - Queue light update
|
||||
@@ -66,25 +67,25 @@ index 50113c303..aaf253c89 100644
|
||||
+ // Paper end
|
||||
for (int i = 0; i < 16; ++i) {
|
||||
for (int j = 0; j < 16; ++j) {
|
||||
if (this.i[i + j * 16]) {
|
||||
@@ -0,0 +0,0 @@ public class Chunk {
|
||||
if (flag) {
|
||||
if (this.h[i + j * 16]) {
|
||||
@@ -0,0 +0,0 @@ public class Chunk implements IChunkAccess {
|
||||
if (flag1) {
|
||||
this.initLighting();
|
||||
} else {
|
||||
+ this.runOrQueueLightUpdate(() -> { // Paper - Queue light update
|
||||
int j1 = iblockdata.c();
|
||||
int k1 = iblockdata1.c();
|
||||
int i1 = iblockdata.b(this.world, blockposition);
|
||||
int j1 = iblockdata1.b(this.world, blockposition);
|
||||
|
||||
@@ -0,0 +0,0 @@ public class Chunk {
|
||||
if (j1 != k1 && (j1 < k1 || this.getBrightness(EnumSkyBlock.SKY, blockposition) > 0 || this.getBrightness(EnumSkyBlock.BLOCK, blockposition) > 0)) {
|
||||
this.d(i, k);
|
||||
@@ -0,0 +0,0 @@ public class Chunk implements IChunkAccess {
|
||||
if (i1 != j1 && (i1 < j1 || this.getBrightness(EnumSkyBlock.SKY, blockposition) > 0 || this.getBrightness(EnumSkyBlock.BLOCK, blockposition) > 0)) {
|
||||
this.c(i, k);
|
||||
}
|
||||
+ }); // Paper
|
||||
}
|
||||
|
||||
TileEntity tileentity;
|
||||
@@ -0,0 +0,0 @@ public class Chunk {
|
||||
this.w = i;
|
||||
@@ -0,0 +0,0 @@ public class Chunk implements IChunkAccess {
|
||||
return this.E == 8;
|
||||
}
|
||||
|
||||
+ // Paper start
|
||||
@@ -101,7 +102,7 @@ index 50113c303..aaf253c89 100644
|
||||
|
||||
IMMEDIATE, QUEUED, CHECK;
|
||||
diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java
|
||||
index bd006ef74..2b320cbd1 100644
|
||||
index badfe86b2..51bc23daf 100644
|
||||
--- a/src/main/java/net/minecraft/server/ChunkProviderServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java
|
||||
@@ -0,0 +0,0 @@ public class ChunkProviderServer implements IChunkProvider {
|
||||
@@ -113,24 +114,24 @@ index bd006ef74..2b320cbd1 100644
|
||||
// Update neighbor counts
|
||||
for (int x = -2; x < 3; x++) {
|
||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
index 47fe9262a..d63a243f3 100644
|
||||
index 2e691b9f6..4473c3b51 100644
|
||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
|
||||
protected void C() throws ExceptionWorldConflict { // CraftBukkit - added throws
|
||||
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements IAsyncTaskHandler, IMojangStati
|
||||
protected void v() {
|
||||
co.aikar.timings.TimingsManager.FULL_SERVER_TICK.startTiming(); // Paper
|
||||
this.slackActivityAccountant.tickStarted(); // Spigot
|
||||
- long i = System.nanoTime();
|
||||
+ long i = System.nanoTime(); long startTime = i; // Paper
|
||||
- long i = SystemUtils.c();
|
||||
+ long i = SystemUtils.c(); long startTime = i; // Paper
|
||||
|
||||
++this.ticks;
|
||||
if (this.T) {
|
||||
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
|
||||
this.methodProfiler.b();
|
||||
|
||||
if (this.S) {
|
||||
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements IAsyncTaskHandler, IMojangStati
|
||||
this.methodProfiler.e();
|
||||
this.methodProfiler.e();
|
||||
org.spigotmc.WatchdogThread.tick(); // Spigot
|
||||
+ PaperLightingQueue.processQueue(startTime); // Paper
|
||||
this.slackActivityAccountant.tickEnded(tickNanos); // Spigot
|
||||
this.slackActivityAccountant.tickEnded(l); // Spigot
|
||||
co.aikar.timings.TimingsManager.FULL_SERVER_TICK.stopTiming(); // Paper
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/PaperLightingQueue.java b/src/main/java/net/minecraft/server/PaperLightingQueue.java
|
||||
@@ -232,16 +233,16 @@ index 000000000..345cd5824
|
||||
+ }
|
||||
+}
|
||||
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
|
||||
index fd5f8102a..77ed2d249 100644
|
||||
index c605d7e52..f57bd081b 100644
|
||||
--- a/src/main/java/net/minecraft/server/World.java
|
||||
+++ b/src/main/java/net/minecraft/server/World.java
|
||||
@@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess {
|
||||
} else {
|
||||
if (iblockdata.c() != iblockdata1.c() || iblockdata.d() != iblockdata1.d()) {
|
||||
@@ -0,0 +0,0 @@ public abstract class World implements GeneratorAccess, IIBlockAccess, AutoClose
|
||||
|
||||
if (iblockdata2.b(this, blockposition) != iblockdata1.b(this, blockposition) || iblockdata2.e() != iblockdata1.e()) {
|
||||
this.methodProfiler.a("checkLight");
|
||||
- this.w(blockposition);
|
||||
+ chunk.runOrQueueLightUpdate(() -> this.w(blockposition)); // Paper - Queue light update
|
||||
this.methodProfiler.b();
|
||||
- this.r(blockposition);
|
||||
+ chunk.runOrQueueLightUpdate(() -> this.r(blockposition)); // Paper - Queue light update
|
||||
this.methodProfiler.e();
|
||||
}
|
||||
|
||||
--
|
||||
Reference in New Issue
Block a user