From 6f4efeb7bd0f389680d9e365827f8f1af16d4467 Mon Sep 17 00:00:00 2001 From: NONPLAYT <76615486+NONPLAYT@users.noreply.github.com> Date: Wed, 5 Nov 2025 18:23:40 +0300 Subject: [PATCH] Updated Upstream (Purpur) Upstream has released updates that appear to apply and compile correctly Purpur Changes: PurpurMC/Purpur@56ac4ded Updated Upstream (Paper) --- .../features/0001-Rebrand.patch | 4 +- ...03-Completely-remove-Mojang-profiler.patch | 40 +++++++++---------- .../features/0035-Lag-compensation.patch | 4 +- .../features/0036-Virtual-Threads.patch | 4 +- ...-Command-block-parse-results-caching.patch | 8 ++-- ...-SparklyPaper-Parallel-world-ticking.patch | 10 ++--- .../0049-MSPT-Tracking-for-each-world.patch | 6 +-- .../0050-Catch-update-suppressors.patch | 4 +- .../features/0057-Leaves-Protocol-Core.patch | 4 +- .../0059-Linear-region-file-format.patch | 10 ++--- .../features/0068-Optimize-Moonrise.patch | 28 ++++--------- .../server/MinecraftServer.java.patch | 4 +- gradle.properties | 2 +- 13 files changed, 58 insertions(+), 70 deletions(-) diff --git a/divinemc-server/minecraft-patches/features/0001-Rebrand.patch b/divinemc-server/minecraft-patches/features/0001-Rebrand.patch index 7ba0734..b01cd28 100644 --- a/divinemc-server/minecraft-patches/features/0001-Rebrand.patch +++ b/divinemc-server/minecraft-patches/features/0001-Rebrand.patch @@ -120,10 +120,10 @@ index 42841fdc7e64311ba9217789a3dc758a351cf674..036c3931f4c1e453892f32e59085be70 String awtException = io.papermc.paper.util.ServerEnvironment.awtDependencyCheck(); if (awtException != null) { diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index f3fc79b93efdd6cade9d2a49999f55031049da1d..247f2eb2414e15c56ee17c7f7efc21dfc6641ec9 100644 +index 8a9e97f3b92def14f40c246ca0ff713ed8192b08..f29cee41258a8220256bf6b3b5b04f79c142cc19 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -1282,6 +1282,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0 && this.tickCount % autosavePeriod == 0; try { this.isSaving = true; -@@ -1684,10 +1627,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop serverPlayer1.connection.suspendFlushing()); this.server.getScheduler().mainThreadHeartbeat(); // CraftBukkit // Paper start - optimise Folia entity scheduler -@@ -1795,9 +1731,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Purpur - Ridables @@ -477,7 +477,7 @@ index 247f2eb2414e15c56ee17c7f7efc21dfc6641ec9..f9d60a28763e2c45b5dcf9687b8999fb try { serverLevel.tick(hasTimeLeft); } catch (Throwable var7) { -@@ -1853,37 +1782,25 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop(), new com.google.common.util.concurrent.ThreadFactoryBuilder() diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index 3de2d76bf118750932a56d02233e4e6aff0b2728..690c67f2051996d0888a946b8c089d39dcb004f6 100644 +index 9a3bd9f646889f43393c3cf54f5bcfa33ec6bbd1..21043f7ccc4a26ae5e016dd4e72092a032c3bddf 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -2738,8 +2738,11 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop states = new java.util.ArrayList<>(level.capturedBlockStates.values()); level.capturedBlockStates.clear(); diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index 698460d2dc19a0bdf6cf2a528a702d6dbc625eb2..311aa4ea612c706032d8d3b7ec8fba5b7714a6db 100644 +index 76fb33ddc89c699db5d0e423106f5bbbee17c958..c4c4c0c76a1763fa4c7dadffc89376f796b2d93b 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java @@ -289,6 +289,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop serverPlayer1.connection.suspendFlushing()); this.server.getScheduler().mainThreadHeartbeat(); // CraftBukkit -@@ -1765,28 +1790,43 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop, ServerLevel> oldLevels = this.levels; Map, ServerLevel> newLevels = Maps.newLinkedHashMap(oldLevels); newLevels.remove(level.dimension()); diff --git a/divinemc-server/minecraft-patches/features/0049-MSPT-Tracking-for-each-world.patch b/divinemc-server/minecraft-patches/features/0049-MSPT-Tracking-for-each-world.patch index 74d1502..984a792 100644 --- a/divinemc-server/minecraft-patches/features/0049-MSPT-Tracking-for-each-world.patch +++ b/divinemc-server/minecraft-patches/features/0049-MSPT-Tracking-for-each-world.patch @@ -5,10 +5,10 @@ Subject: [PATCH] MSPT Tracking for each world diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index fd9ef48ac8b23e8b409c00d154dbea27b701e3bc..6a714d59d01eafcd833f05208a948bf33b797392 100644 +index c4c4c0c76a1763fa4c7dadffc89376f796b2d93b..01a75f0a3692b954f43993b586945e26163e91e0 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -1735,7 +1735,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop Date: Mon, 11 Aug 2025 02:42:19 +0300 Subject: [PATCH] Optimize Moonrise +TODO: Recheck this patch diff --git a/ca/spottedleaf/moonrise/common/misc/NearbyPlayers.java b/ca/spottedleaf/moonrise/common/misc/NearbyPlayers.java index 93272808d94e81d31af728ebe85df9a2bc7aedab..b47be4b838f4c7f6c3fb62e4e18105c6b4972016 100644 @@ -306,10 +307,10 @@ index 18822bed7986348bbbed1712db7dac65884d39a9..906c0019cae2529962d1221939ce276f boolean ret = false; diff --git a/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/NewChunkHolder.java b/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/NewChunkHolder.java -index 2409c83b03cfa1f0285f6f7c3508dbdf53750316..6318aedb621134d4f3e33480a2e97ddf7be6b433 100644 +index 9a9a599ef178f851ee5c783631a724013a693586..7f8e7d0aac516489dbbc10da68161f3ff3b2908d 100644 --- a/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/NewChunkHolder.java +++ b/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/NewChunkHolder.java -@@ -645,12 +645,20 @@ public final class NewChunkHolder { +@@ -646,12 +646,20 @@ public final class NewChunkHolder { } public final ChunkHolder vanillaChunkHolder; @@ -330,7 +331,7 @@ index 2409c83b03cfa1f0285f6f7c3508dbdf53750316..6318aedb621134d4f3e33480a2e97ddf this.vanillaChunkHolder = new ChunkHolder( new ChunkPos(chunkX, chunkZ), ChunkHolderManager.MAX_TICKET_LEVEL, world, world.getLightEngine(), null, world.getChunkSource().chunkMap -@@ -791,9 +799,11 @@ public final class NewChunkHolder { +@@ -792,9 +800,11 @@ public final class NewChunkHolder { // note: these are completed with null to indicate that no write occurred // they are also completed with null to indicate a null write occurred @@ -345,20 +346,7 @@ index 2409c83b03cfa1f0285f6f7c3508dbdf53750316..6318aedb621134d4f3e33480a2e97ddf public static final record UnloadTask(CallbackCompletable completable, PrioritisedExecutor.PrioritisedTask task, LazyRunnable toRun) {} -@@ -878,7 +888,11 @@ public final class NewChunkHolder { - MoonriseRegionFileIO.scheduleSave(this.world, this.chunkX, this.chunkZ, data, type); - } - -- this.getUnloadTask(type).completable().complete(data); -+ // DivineMC start - Optimize Moonrise -+ UnloadTask task = this.getUnloadTask(type); -+ if (task == null) return; -+ task.completable().complete(data); -+ // DivineMC end - Optimize Moonrise - final ReentrantAreaLock.Node schedulingLock = this.scheduler.schedulingLockArea.lock(this.chunkX, this.chunkZ); - try { - // can only write to these fields while holding the schedule lock -@@ -1191,6 +1205,7 @@ public final class NewChunkHolder { +@@ -1168,6 +1178,7 @@ public final class NewChunkHolder { for (int dz = -NEIGHBOUR_RADIUS; dz <= NEIGHBOUR_RADIUS; ++dz) { for (int dx = -NEIGHBOUR_RADIUS; dx <= NEIGHBOUR_RADIUS; ++dx) { final NewChunkHolder holder = (dx | dz) == 0 ? this : this.scheduler.chunkHolderManager.getChunkHolder(dx + this.chunkX, dz + this.chunkZ); @@ -366,7 +354,7 @@ index 2409c83b03cfa1f0285f6f7c3508dbdf53750316..6318aedb621134d4f3e33480a2e97ddf if (loaded) { if (holder.setNeighbourFullLoaded(-dx, -dz)) { changedFullStatus.add(holder); -@@ -1215,6 +1230,19 @@ public final class NewChunkHolder { +@@ -1192,6 +1203,19 @@ public final class NewChunkHolder { private void updateCurrentState(final FullChunkStatus to) { this.currentFullChunkStatus = to; @@ -386,7 +374,7 @@ index 2409c83b03cfa1f0285f6f7c3508dbdf53750316..6318aedb621134d4f3e33480a2e97ddf } // only to be called on the main thread, no locks need to be held -@@ -1349,7 +1377,7 @@ public final class NewChunkHolder { +@@ -1326,7 +1350,7 @@ public final class NewChunkHolder { return this.requestedGenStatus; } @@ -395,7 +383,7 @@ index 2409c83b03cfa1f0285f6f7c3508dbdf53750316..6318aedb621134d4f3e33480a2e97ddf void addStatusConsumer(final ChunkStatus status, final Consumer consumer) { this.statusWaiters.computeIfAbsent(status, (final ChunkStatus keyInMap) -> { -@@ -1384,7 +1412,7 @@ public final class NewChunkHolder { +@@ -1361,7 +1385,7 @@ public final class NewChunkHolder { }, Priority.HIGHEST); } diff --git a/divinemc-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch b/divinemc-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch index 04a1dd4..ebc9313 100644 --- a/divinemc-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch +++ b/divinemc-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -1005,6 +_,13 @@ +@@ -1006,6 +_,13 @@ if (this.hasStopped) return; this.hasStopped = true; } @@ -14,7 +14,7 @@ if (!hasLoggedStop && isDebugging()) io.papermc.paper.util.TraceUtil.dumpTraceForThread("Server stopped"); // Paper - Debugging shutdownThread = Thread.currentThread(); // Paper - Improved watchdog support org.spigotmc.WatchdogThread.doStop(); // Paper - Improved watchdog support -@@ -1097,6 +_,7 @@ +@@ -1098,6 +_,7 @@ // Paper end - rewrite chunk system // Paper start - Improved watchdog support - move final shutdown items here Util.shutdownExecutors(); diff --git a/gradle.properties b/gradle.properties index 2ac742d..7800ec5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.bxteam.divinemc version=1.21.10-R0.1-SNAPSHOT mcVersion=1.21.10 -purpurRef=fc89fde56b69a3c0955cc0d6fb8e5470de0969fc +purpurRef=56ac4ded5a36554d23f61c85c78391698cab5c48 experimental=true org.gradle.configuration-cache=true