Skip to content

Commit a4a7461

Browse files
committed
Rebase fixups
Oops
1 parent dcd7847 commit a4a7461

11 files changed

+406
-746
lines changed

paper-server/patches/features/0001-Moonrise-optimisation-patches.patch

Lines changed: 68 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6725,10 +6725,10 @@ index 0000000000000000000000000000000000000000..7eafc5b7cba23d8dec92ecc1050afe3f
67256725
\ No newline at end of file
67266726
diff --git a/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkHolderManager.java b/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkHolderManager.java
67276727
new file mode 100644
6728-
index 0000000000000000000000000000000000000000..80f13315e8c7c0e3c82ab98f92387f56bb3b6481
6728+
index 0000000000000000000000000000000000000000..e03faa94df6c77ab4f3f5d9ffe107220387a0dde
67296729
--- /dev/null
67306730
+++ b/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkHolderManager.java
6731-
@@ -0,0 +1,1555 @@
6731+
@@ -0,0 +1,1560 @@
67326732
+package ca.spottedleaf.moonrise.patches.chunk_system.scheduling;
67336733
+
67346734
+import ca.spottedleaf.concurrentutil.collection.MultiThreadedQueue;
@@ -8203,6 +8203,11 @@ index 0000000000000000000000000000000000000000..80f13315e8c7c0e3c82ab98f92387f56
82038203
+
82048204
+ boolean ret = false;
82058205
+
8206+
+ if (pendingFullLoadUpdate.isEmpty()) {
8207+
+ // avoid allocating changedFullStatus
8208+
+ return ret;
8209+
+ }
8210+
+
82068211
+ final List<NewChunkHolder> changedFullStatus = new ArrayList<>();
82078212
+
82088213
+ NewChunkHolder holder;
@@ -8286,10 +8291,10 @@ index 0000000000000000000000000000000000000000..80f13315e8c7c0e3c82ab98f92387f56
82868291
+}
82878292
diff --git a/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkTaskScheduler.java b/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkTaskScheduler.java
82888293
new file mode 100644
8289-
index 0000000000000000000000000000000000000000..57f11ed1c8dfe7a10fddc53bcd2abc8cac29b2f4
8294+
index 0000000000000000000000000000000000000000..c47e77ceb15948cbd4a2a370738843c02542f6c1
82908295
--- /dev/null
82918296
+++ b/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkTaskScheduler.java
8292-
@@ -0,0 +1,1044 @@
8297+
@@ -0,0 +1,1055 @@
82938298
+package ca.spottedleaf.moonrise.patches.chunk_system.scheduling;
82948299
+
82958300
+import ca.spottedleaf.concurrentutil.executor.PrioritisedExecutor;
@@ -8630,6 +8635,17 @@ index 0000000000000000000000000000000000000000..57f11ed1c8dfe7a10fddc53bcd2abc8c
86308635
+ return this.mainThreadExecutor.executeTask();
86318636
+ }
86328637
+
8638+
+ // run only tasks queued before this function was invoked
8639+
+ public void executeAllRecentlyQueuedMainThreadTasks() {
8640+
+ // note: order of retrieval is important to avoid race conditions
8641+
+ final long executed = this.mainThreadExecutor.getTotalTasksExecuted();
8642+
+ final long scheduled = this.mainThreadExecutor.getTotalTasksScheduled();
8643+
+
8644+
+ final long left = scheduled - executed;
8645+
+ // may execute more tasks than expected due to recursion
8646+
+ for (long i = 0; i < left && this.mainThreadExecutor.executeTask(); ++i);
8647+
+ }
8648+
+
86338649
+ public void raisePriority(final int x, final int z, final Priority priority) {
86348650
+ this.chunkHolderManager.raisePriority(x, z, priority);
86358651
+ }
@@ -23005,7 +23021,7 @@ index e7510be12644b2edd966c538c84379a3d5fe89b5..8d299a75c80fddc61a2aa4dc5b0dc594
2300523021
thread1 -> {
2300623022
DedicatedServer dedicatedServer1 = new DedicatedServer(
2300723023
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
23008-
index 843229c35e5c198f335d47d520e6391c4569237f..a38d52b5b3c16b054332d38c44dfe28f91206284 100644
23024+
index 93668e31b976cad13d002042a9630ef6e70811e4..638990d0d89aa85285675d05e2a74aed6ceaf2f0 100644
2300923025
--- a/net/minecraft/server/MinecraftServer.java
2301023026
+++ b/net/minecraft/server/MinecraftServer.java
2301123027
@@ -177,7 +177,7 @@ import net.minecraft.world.phys.Vec2;
@@ -23017,7 +23033,7 @@ index 843229c35e5c198f335d47d520e6391c4569237f..a38d52b5b3c16b054332d38c44dfe28f
2301723033
private static MinecraftServer SERVER; // Paper
2301823034
public static final Logger LOGGER = LogUtils.getLogger();
2301923035
public static final net.kyori.adventure.text.logger.slf4j.ComponentLogger COMPONENT_LOGGER = net.kyori.adventure.text.logger.slf4j.ComponentLogger.logger(LOGGER.getName()); // Paper
23020-
@@ -326,6 +326,77 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
23036+
@@ -362,6 +362,77 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
2302123037
return minecraftServer;
2302223038
}
2302323039

@@ -23095,7 +23111,7 @@ index 843229c35e5c198f335d47d520e6391c4569237f..a38d52b5b3c16b054332d38c44dfe28f
2309523111
public MinecraftServer(
2309623112
// CraftBukkit start
2309723113
joptsimple.OptionSet options,
23098-
@@ -756,7 +827,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
23114+
@@ -792,7 +863,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
2309923115
serverLevel.setSpawnSettings(serverLevel.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && serverLevel.getGameRules().getBoolean(GameRules.RULE_SPAWN_MONSTERS)); // Paper - per level difficulty (from setDifficulty(ServerLevel, Difficulty, boolean))
2310023116
this.updateEffectiveRespawnData();
2310123117
this.forceTicks = false; // CraftBukkit
@@ -23104,7 +23120,7 @@ index 843229c35e5c198f335d47d520e6391c4569237f..a38d52b5b3c16b054332d38c44dfe28f
2310423120
new org.bukkit.event.world.WorldLoadEvent(serverLevel.getWorld()).callEvent(); // Paper - call WorldLoadEvent
2310523121
}
2310623122

23107-
@@ -779,6 +850,11 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
23123+
@@ -815,6 +886,11 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
2310823124
public abstract boolean shouldRconBroadcast();
2310923125

2311023126
public boolean saveAllChunks(boolean suppressLogs, boolean flush, boolean force) {
@@ -23116,7 +23132,7 @@ index 843229c35e5c198f335d47d520e6391c4569237f..a38d52b5b3c16b054332d38c44dfe28f
2311623132
boolean flag = false;
2311723133

2311823134
for (ServerLevel serverLevel : this.getAllLevels()) {
23119-
@@ -786,7 +862,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
23135+
@@ -822,7 +898,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
2312023136
LOGGER.info("Saving chunks for level '{}'/{}", serverLevel, serverLevel.dimension().location());
2312123137
}
2312223138

@@ -23125,7 +23141,7 @@ index 843229c35e5c198f335d47d520e6391c4569237f..a38d52b5b3c16b054332d38c44dfe28f
2312523141
flag = true;
2312623142
}
2312723143

23128-
@@ -876,7 +952,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
23144+
@@ -912,7 +988,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
2312923145
}
2313023146
}
2313123147

@@ -23134,7 +23150,7 @@ index 843229c35e5c198f335d47d520e6391c4569237f..a38d52b5b3c16b054332d38c44dfe28f
2313423150
this.nextTickTimeNanos = Util.getNanos() + TimeUtil.NANOSECONDS_PER_MILLISECOND;
2313523151

2313623152
for (ServerLevel serverLevelx : this.getAllLevels()) {
23137-
@@ -886,18 +962,14 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
23153+
@@ -922,18 +998,14 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
2313823154

2313923155
this.waitUntilNextTick();
2314023156
}
@@ -23160,7 +23176,7 @@ index 843229c35e5c198f335d47d520e6391c4569237f..a38d52b5b3c16b054332d38c44dfe28f
2316023176

2316123177
this.isSaving = false;
2316223178
this.resources.close();
23163-
@@ -917,6 +989,14 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
23179+
@@ -953,6 +1025,14 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
2316423180
this.services().nameToIdCache().save(false); // Paper - Perf: Async GameProfileCache saving
2316523181
}
2316623182
// Spigot end
@@ -23175,9 +23191,44 @@ index 843229c35e5c198f335d47d520e6391c4569237f..a38d52b5b3c16b054332d38c44dfe28f
2317523191
// Paper start - Improved watchdog support - move final shutdown items here
2317623192
Util.shutdownExecutors();
2317723193
try {
23178-
@@ -1102,6 +1182,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
23179-
profilerFiller.push("tick");
23194+
@@ -1045,16 +1125,31 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
23195+
// execute small amounts of other tasks just in case the number of tasks we are
23196+
// draining is large - chunk system and packet processing may be latency sensitive
23197+
23198+
- // TODO - Chunk System mid-tick
23199+
+ ((ca.spottedleaf.moonrise.patches.chunk_system.server.ChunkSystemMinecraftServer)this).moonrise$executeMidTickTasks(); // Paper - rewrite chunk system
23200+
this.packetProcessor.executeSinglePacket();
23201+
}
23202+
profiler.popPush("moonrise:run_all_packets");
23203+
while (this.packetProcessor.executeSinglePacket()) {
23204+
// execute possibly latency sensitive chunk system tasks (see above)
23205+
- // TODO - Chunk System mid-tick
23206+
+ ((ca.spottedleaf.moonrise.patches.chunk_system.server.ChunkSystemMinecraftServer)this).moonrise$executeMidTickTasks(); // Paper - rewrite chunk system
23207+
}
23208+
profiler.popPush("moonrise:run_all_chunk");
23209+
- // TODO - Chunk System tasks
23210+
+ // Paper start - rewrite chunk system
23211+
+ for (final ServerLevel world : this.getAllLevels()) {
23212+
+ profiler.push(world.toString() + " " + world.dimension().location()); // keep same formatting from regular tick, see tickChildren
23213+
+
23214+
+ // note: legacy tasks may expect a distance manager update
23215+
+ profiler.push("moonrise:distance_manager_update");
23216+
+ ((ca.spottedleaf.moonrise.patches.chunk_system.level.ChunkSystemServerLevel)world).moonrise$getChunkTaskScheduler().chunkHolderManager.processTicketUpdates();
23217+
+ profiler.popPush("moonrise:legacy_chunk_tasks");
23218+
+ world.getChunkSource().mainThreadProcessor.executeAllRecentInternalTasks();
23219+
+ profiler.popPush("moonrise:chunk_system_tasks");
23220+
+ ((ca.spottedleaf.moonrise.patches.chunk_system.level.ChunkSystemServerLevel)world).moonrise$getChunkTaskScheduler().executeAllRecentlyQueuedMainThreadTasks();
23221+
+ profiler.pop();
23222+
+
23223+
+ profiler.pop(); // world name
23224+
+ }
23225+
+ // Paper end - rewrite chunk system
23226+
profiler.pop(); // moonrise:run_all_chunk
23227+
profiler.pop(); // moonrise:run_all_tasks
23228+
23229+
@@ -1196,6 +1291,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
2318023230
this.tickFrame.start();
23231+
this.runAllTasksAtTickStart(); // Paper - improve tick loop
2318123232
this.tickServer(flag ? () -> false : this::haveTime);
2318223233
+ // Paper start - rewrite chunk system
2318323234
+ final Throwable crash = this.chunkSystemCrash;
@@ -23187,17 +23238,17 @@ index 843229c35e5c198f335d47d520e6391c4569237f..a38d52b5b3c16b054332d38c44dfe28f
2318723238
+ }
2318823239
+ // Paper end - rewrite chunk system
2318923240
this.tickFrame.end();
23241+
this.recordEndOfTick(); // Paper - improve tick loop
2319023242
profilerFiller.popPush("nextTickWait");
23191-
this.mayHaveDelayedTasks = true;
23192-
@@ -1276,6 +1363,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
23243+
@@ -1368,6 +1470,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
2319323244

2319423245
private boolean pollTaskInternal() {
2319523246
if (super.pollTask()) {
2319623247
+ this.moonrise$executeMidTickTasks(); // Paper - rewrite chunk system
2319723248
return true;
2319823249
} else {
2319923250
boolean ret = false; // Paper - force execution of all worlds, do not just bias the first
23200-
@@ -2457,6 +2545,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
23251+
@@ -2543,6 +2646,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
2320123252
}
2320223253
}
2320323254

paper-server/patches/features/0002-Rewrite-dataconverter-system.patch

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32907,11 +32907,11 @@ index 71b8bbeda2fecf930870a9b6e856e20639d31645..91650a92a21fcaac65a5dfcac0cc856b
3290732907
return structureTemplate.save(new CompoundTag());
3290832908
}
3290932909
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
32910-
index a38d52b5b3c16b054332d38c44dfe28f91206284..b00241f8ec8da9b009b2526725f4864f3a5c515d 100644
32910+
index 638990d0d89aa85285675d05e2a74aed6ceaf2f0..cc0834ac0ecac9735c7bd399fc7f5b908437676e 100644
3291132911
--- a/net/minecraft/server/MinecraftServer.java
3291232912
+++ b/net/minecraft/server/MinecraftServer.java
32913-
@@ -312,6 +312,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
32914-
public static final long SERVER_INIT = System.nanoTime(); // Paper - Lag compensation
32913+
@@ -348,6 +348,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
32914+
// Paper end - improve tick loop
3291532915

3291632916
public static <S extends MinecraftServer> S spin(Function<Thread, S> threadFunction) {
3291732917
+ ca.spottedleaf.dataconverter.minecraft.datatypes.MCTypeRegistry.init(); // Paper - rewrite data converter system

paper-server/patches/features/0021-Incremental-chunk-and-player-saving.patch

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ Subject: [PATCH] Incremental chunk and player saving
55

66

77
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
8-
index 77aa4307fdbe9a52c4d35a7a74282f87a176da5e..853d4603249c19c31d4252fb0e411d5b41b851ad 100644
8+
index cc0834ac0ecac9735c7bd399fc7f5b908437676e..c3bb59a755e9c5cb4bb9b5c4f03475c6170a8c3a 100644
99
--- a/net/minecraft/server/MinecraftServer.java
1010
+++ b/net/minecraft/server/MinecraftServer.java
11-
@@ -886,7 +886,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
11+
@@ -922,7 +922,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
1212
boolean var4;
1313
try {
1414
this.isSaving = true;
@@ -17,7 +17,7 @@ index 77aa4307fdbe9a52c4d35a7a74282f87a176da5e..853d4603249c19c31d4252fb0e411d5b
1717
var4 = this.saveAllChunks(suppressLogs, flush, force);
1818
} finally {
1919
this.isSaving = false;
20-
@@ -1471,9 +1471,29 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
20+
@@ -1578,9 +1578,29 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
2121
}
2222

2323
this.ticksUntilAutosave--;
@@ -48,9 +48,9 @@ index 77aa4307fdbe9a52c4d35a7a74282f87a176da5e..853d4603249c19c31d4252fb0e411d5b
4848
+ // Paper end - Incremental chunk and player saving
4949

5050
ProfilerFiller profilerFiller = Profiler.get();
51-
this.runAllTasks(); // Paper - move runAllTasks() into full server tick (previously for timings)
51+
this.server.spark.executeMainThreadTasks(); // Paper - spark
5252
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
53-
index 9aa154a7349ffb7b6af167fd84955168dbcd2bd9..5993a9530586e9792691e26d0a0a57febff5b447 100644
53+
index f609b9707b4265018b19dbc5a0191923035b7723..8891d2a8832a76ef4a0c62f43d0bbf9c68f05016 100644
5454
--- a/net/minecraft/server/level/ServerLevel.java
5555
+++ b/net/minecraft/server/level/ServerLevel.java
5656
@@ -1371,6 +1371,26 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
@@ -81,7 +81,7 @@ index 9aa154a7349ffb7b6af167fd84955168dbcd2bd9..5993a9530586e9792691e26d0a0a57fe
8181
// Paper start - add close param
8282
this.save(progress, flush, skipSave, false);
8383
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
84-
index 0b41d4c924b77fe46089b2e5a0ebc92014a1f143..ff507ab2ec9391e899785fd42150fb4547eac83c 100644
84+
index be318510a571de3064b3b13187456049bbb52cdf..165e16cafc2787267ceaca637441a13e9bc1826a 100644
8585
--- a/net/minecraft/server/level/ServerPlayer.java
8686
+++ b/net/minecraft/server/level/ServerPlayer.java
8787
@@ -203,6 +203,7 @@ import org.slf4j.Logger;

paper-server/patches/features/0026-Optimise-EntityScheduler-ticking.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@ index a2fbc13105673e926cbaed69221826ebd392140f..a42938e1abd371dba6806e65552fde71
2020

2121
@Override
2222
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
23-
index 853d4603249c19c31d4252fb0e411d5b41b851ad..c4b2eac96d3ab118cfc6b66e789b8aaa4d2a70ec 100644
23+
index c3bb59a755e9c5cb4bb9b5c4f03475c6170a8c3a..fefc1d9392a6c02531a772ca4ff0aeda2abe27b2 100644
2424
--- a/net/minecraft/server/MinecraftServer.java
2525
+++ b/net/minecraft/server/MinecraftServer.java
26-
@@ -1591,33 +1591,22 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
26+
@@ -1692,33 +1692,22 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
2727
}
2828
}
2929

paper-server/patches/features/0029-Optimize-Hoppers.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,10 @@ index 0000000000000000000000000000000000000000..24a2090e068ad3c0d08705050944abdf
4848
+ }
4949
+}
5050
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
51-
index c4b2eac96d3ab118cfc6b66e789b8aaa4d2a70ec..f0e16de0cd2e5794c0a86b54979d9ac043c704df 100644
51+
index fefc1d9392a6c02531a772ca4ff0aeda2abe27b2..20efafc39eb219158c5dc126f527cc009fe15b15 100644
5252
--- a/net/minecraft/server/MinecraftServer.java
5353
+++ b/net/minecraft/server/MinecraftServer.java
54-
@@ -1646,6 +1646,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
54+
@@ -1747,6 +1747,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
5555
serverLevel.hasPhysicsEvent = org.bukkit.event.block.BlockPhysicsEvent.getHandlerList().getRegisteredListeners().length > 0; // Paper - BlockPhysicsEvent
5656
serverLevel.hasEntityMoveEvent = io.papermc.paper.event.entity.EntityMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Paper - Add EntityMoveEvent
5757
serverLevel.updateLagCompensationTick(); // Paper - lag compensation

0 commit comments

Comments
 (0)