mirror of
https://github.com/Winds-Studio/Leaf.git
synced 2025-12-23 08:59:23 +00:00
move shutdown executor
This commit is contained in:
@@ -22,7 +22,7 @@ and, in my opinion, worth the low risk of minor mob-spawning-related
|
|||||||
inconsistencies.
|
inconsistencies.
|
||||||
|
|
||||||
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
||||||
index 4ba85d704ffebae38f7a76a97a182e3674730c6f..d19e31d3b280325defcaf46e7168eafb3d6587d2 100644
|
index 4ba85d704ffebae38f7a76a97a182e3674730c6f..48ca0ba4c18e596e0d122fdc533dfd65bde19db7 100644
|
||||||
--- a/net/minecraft/server/MinecraftServer.java
|
--- a/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/net/minecraft/server/MinecraftServer.java
|
+++ b/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -286,6 +286,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -286,6 +286,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
@@ -33,21 +33,14 @@ index 4ba85d704ffebae38f7a76a97a182e3674730c6f..d19e31d3b280325defcaf46e7168eafb
|
|||||||
|
|
||||||
public static <S extends MinecraftServer> S spin(Function<Thread, S> threadFunction) {
|
public static <S extends MinecraftServer> S spin(Function<Thread, S> threadFunction) {
|
||||||
ca.spottedleaf.dataconverter.minecraft.datatypes.MCTypeRegistry.init(); // Paper - rewrite data converter system
|
ca.spottedleaf.dataconverter.minecraft.datatypes.MCTypeRegistry.init(); // Paper - rewrite data converter system
|
||||||
@@ -1055,6 +1056,14 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -1048,6 +1049,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
io.papermc.paper.log.CustomLogManager.forceReset(); // Paper - Reset loggers after shutdown
|
// Paper end - rewrite chunk system
|
||||||
this.onServerExit();
|
// Paper start - Improved watchdog support - move final shutdown items here
|
||||||
// Paper end - Improved watchdog support - move final shutdown items here
|
Util.shutdownExecutors();
|
||||||
+ // Leaf start - Async mob spawning
|
+ org.dreeam.leaf.async.ShutdownExecutors.shutdown(this); // Leaf
|
||||||
+ if (this.mobSpawnExecutor != null) {
|
try {
|
||||||
+ try {
|
net.minecrell.terminalconsole.TerminalConsoleAppender.close(); // Paper - Use TerminalConsoleAppender
|
||||||
+ this.mobSpawnExecutor.kill();
|
} catch (final Exception ignored) {
|
||||||
+ } catch (java.lang.InterruptedException ignored) {
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ // Leaf end - Async mob spawning
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getLocalIp() {
|
|
||||||
diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java
|
diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
index bd7f792c45059f0652e530608ef0c77c5caf7cfa..649403ef1d5d898052412d6d47783769f291b94f 100644
|
index bd7f792c45059f0652e530608ef0c77c5caf7cfa..649403ef1d5d898052412d6d47783769f291b94f 100644
|
||||||
--- a/net/minecraft/server/dedicated/DedicatedServer.java
|
--- a/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
|
|||||||
@@ -309,7 +309,7 @@ index 344d5ead46c33e303ac375922aad298481253ff2..c5e8eff72f9f9fb49885bc21f6103399
|
|||||||
io.papermc.paper.plugin.PluginInitializerManager.load(optionSet); // Paper
|
io.papermc.paper.plugin.PluginInitializerManager.load(optionSet); // Paper
|
||||||
Bootstrap.bootStrap();
|
Bootstrap.bootStrap();
|
||||||
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
||||||
index d19e31d3b280325defcaf46e7168eafb3d6587d2..68442c7d3d34596b0b0bdc47bcf56d44090fcbce 100644
|
index 48ca0ba4c18e596e0d122fdc533dfd65bde19db7..f444e53b8ad596cf64fb6ed33921e18e0d054fc0 100644
|
||||||
--- a/net/minecraft/server/MinecraftServer.java
|
--- a/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/net/minecraft/server/MinecraftServer.java
|
+++ b/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -266,6 +266,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -266,6 +266,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
@@ -346,7 +346,7 @@ index d19e31d3b280325defcaf46e7168eafb3d6587d2..68442c7d3d34596b0b0bdc47bcf56d44
|
|||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
if (this.server != null) {
|
if (this.server != null) {
|
||||||
this.server.spark.disable(); // Paper - spark
|
this.server.spark.disable(); // Paper - spark
|
||||||
@@ -1083,6 +1095,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -1076,6 +1088,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
this.safeShutdown(waitForServer, false);
|
this.safeShutdown(waitForServer, false);
|
||||||
}
|
}
|
||||||
public void safeShutdown(boolean waitForServer, boolean isRestarting) {
|
public void safeShutdown(boolean waitForServer, boolean isRestarting) {
|
||||||
@@ -355,7 +355,7 @@ index d19e31d3b280325defcaf46e7168eafb3d6587d2..68442c7d3d34596b0b0bdc47bcf56d44
|
|||||||
this.isRestarting = isRestarting;
|
this.isRestarting = isRestarting;
|
||||||
this.hasLoggedStop = true; // Paper - Debugging
|
this.hasLoggedStop = true; // Paper - Debugging
|
||||||
if (isDebugging()) io.papermc.paper.util.TraceUtil.dumpTraceForThread("Server stopped"); // Paper - Debugging
|
if (isDebugging()) io.papermc.paper.util.TraceUtil.dumpTraceForThread("Server stopped"); // Paper - Debugging
|
||||||
@@ -1194,6 +1208,26 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -1187,6 +1201,26 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
}
|
}
|
||||||
// Paper end - Add onboarding message for initial server start
|
// Paper end - Add onboarding message for initial server start
|
||||||
|
|
||||||
@@ -382,7 +382,7 @@ index d19e31d3b280325defcaf46e7168eafb3d6587d2..68442c7d3d34596b0b0bdc47bcf56d44
|
|||||||
while (this.running) {
|
while (this.running) {
|
||||||
long l;
|
long l;
|
||||||
if (!this.isPaused() && this.tickRateManager.isSprinting() && this.tickRateManager.checkShouldSprintThisTick()) {
|
if (!this.isPaused() && this.tickRateManager.isSprinting() && this.tickRateManager.checkShouldSprintThisTick()) {
|
||||||
@@ -1227,6 +1261,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -1220,6 +1254,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
this.recentTps[0] = tps1.getAverage();
|
this.recentTps[0] = tps1.getAverage();
|
||||||
this.recentTps[1] = tps5.getAverage();
|
this.recentTps[1] = tps5.getAverage();
|
||||||
this.recentTps[2] = tps15.getAverage();
|
this.recentTps[2] = tps15.getAverage();
|
||||||
@@ -390,7 +390,7 @@ index d19e31d3b280325defcaf46e7168eafb3d6587d2..68442c7d3d34596b0b0bdc47bcf56d44
|
|||||||
tickSection = currentTime;
|
tickSection = currentTime;
|
||||||
}
|
}
|
||||||
// Paper end - further improve server tick loop
|
// Paper end - further improve server tick loop
|
||||||
@@ -1252,6 +1287,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -1245,6 +1280,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
this.tickFrame.end();
|
this.tickFrame.end();
|
||||||
this.mayHaveDelayedTasks = true;
|
this.mayHaveDelayedTasks = true;
|
||||||
this.delayedTasksMaxNextTickTimeNanos = Math.max(Util.getNanos() + l, this.nextTickTimeNanos);
|
this.delayedTasksMaxNextTickTimeNanos = Math.max(Util.getNanos() + l, this.nextTickTimeNanos);
|
||||||
@@ -403,7 +403,7 @@ index d19e31d3b280325defcaf46e7168eafb3d6587d2..68442c7d3d34596b0b0bdc47bcf56d44
|
|||||||
this.startMeasuringTaskExecutionTime();
|
this.startMeasuringTaskExecutionTime();
|
||||||
this.waitUntilNextTick();
|
this.waitUntilNextTick();
|
||||||
this.finishMeasuringTaskExecutionTime();
|
this.finishMeasuringTaskExecutionTime();
|
||||||
@@ -1667,7 +1708,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -1660,7 +1701,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
long worldTime = level.getGameTime();
|
long worldTime = level.getGameTime();
|
||||||
final ClientboundSetTimePacket worldPacket = new ClientboundSetTimePacket(worldTime, dayTime, doDaylight);
|
final ClientboundSetTimePacket worldPacket = new ClientboundSetTimePacket(worldTime, dayTime, doDaylight);
|
||||||
for (Player entityhuman : level.players()) {
|
for (Player entityhuman : level.players()) {
|
||||||
@@ -412,7 +412,7 @@ index d19e31d3b280325defcaf46e7168eafb3d6587d2..68442c7d3d34596b0b0bdc47bcf56d44
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
ServerPlayer entityplayer = (ServerPlayer) entityhuman;
|
ServerPlayer entityplayer = (ServerPlayer) entityhuman;
|
||||||
@@ -1686,6 +1727,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -1679,6 +1720,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
serverLevel.hasEntityMoveEvent = io.papermc.paper.event.entity.EntityMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Paper - Add EntityMoveEvent
|
serverLevel.hasEntityMoveEvent = io.papermc.paper.event.entity.EntityMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Paper - Add EntityMoveEvent
|
||||||
serverLevel.updateLagCompensationTick(); // Paper - lag compensation
|
serverLevel.updateLagCompensationTick(); // Paper - lag compensation
|
||||||
net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = serverLevel.paperConfig().hopper.disableMoveEvent || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper - Perf: Optimize Hoppers
|
net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = serverLevel.paperConfig().hopper.disableMoveEvent || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper - Perf: Optimize Hoppers
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Fix Pufferfish and Purpur patches
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
||||||
index 68442c7d3d34596b0b0bdc47bcf56d44090fcbce..61f9e55d6cfeecaf01d6c63a1e7db1c1706bfc62 100644
|
index f444e53b8ad596cf64fb6ed33921e18e0d054fc0..719615a559fbcbb2ba78f2f8b333919f4875ae0d 100644
|
||||||
--- a/net/minecraft/server/MinecraftServer.java
|
--- a/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/net/minecraft/server/MinecraftServer.java
|
+++ b/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -277,7 +277,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -277,7 +277,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
@@ -26,7 +26,7 @@ index 68442c7d3d34596b0b0bdc47bcf56d44090fcbce..61f9e55d6cfeecaf01d6c63a1e7db1c1
|
|||||||
|
|
||||||
public static <S extends MinecraftServer> S spin(Function<Thread, S> threadFunction) {
|
public static <S extends MinecraftServer> S spin(Function<Thread, S> threadFunction) {
|
||||||
ca.spottedleaf.dataconverter.minecraft.datatypes.MCTypeRegistry.init(); // Paper - rewrite data converter system
|
ca.spottedleaf.dataconverter.minecraft.datatypes.MCTypeRegistry.init(); // Paper - rewrite data converter system
|
||||||
@@ -1258,9 +1258,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -1251,9 +1251,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
tps15.add(currentTps, diff);
|
tps15.add(currentTps, diff);
|
||||||
|
|
||||||
// Backwards compat with bad plugins
|
// Backwards compat with bad plugins
|
||||||
@@ -42,7 +42,7 @@ index 68442c7d3d34596b0b0bdc47bcf56d44090fcbce..61f9e55d6cfeecaf01d6c63a1e7db1c1
|
|||||||
lagging = recentTps[0] < org.purpurmc.purpur.PurpurConfig.laggingThreshold; // Purpur - Lagging threshold
|
lagging = recentTps[0] < org.purpurmc.purpur.PurpurConfig.laggingThreshold; // Purpur - Lagging threshold
|
||||||
tickSection = currentTime;
|
tickSection = currentTime;
|
||||||
}
|
}
|
||||||
@@ -1288,7 +1291,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -1281,7 +1284,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
this.mayHaveDelayedTasks = true;
|
this.mayHaveDelayedTasks = true;
|
||||||
this.delayedTasksMaxNextTickTimeNanos = Math.max(Util.getNanos() + l, this.nextTickTimeNanos);
|
this.delayedTasksMaxNextTickTimeNanos = Math.max(Util.getNanos() + l, this.nextTickTimeNanos);
|
||||||
// Purpur start - Configurable TPS Catchup
|
// Purpur start - Configurable TPS Catchup
|
||||||
|
|||||||
@@ -7,10 +7,10 @@ Original license: MIT
|
|||||||
Original project: https://github.com/PurpurMC/Purpur
|
Original project: https://github.com/PurpurMC/Purpur
|
||||||
|
|
||||||
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
||||||
index 61f9e55d6cfeecaf01d6c63a1e7db1c1706bfc62..dfcf218a307eee9457563021e24ff471d395baa2 100644
|
index 719615a559fbcbb2ba78f2f8b333919f4875ae0d..93572d8cc3cff757f36387940dd593885b95ff82 100644
|
||||||
--- a/net/minecraft/server/MinecraftServer.java
|
--- a/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/net/minecraft/server/MinecraftServer.java
|
+++ b/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -1857,7 +1857,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -1850,7 +1850,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
|
|
||||||
@DontObfuscate
|
@DontObfuscate
|
||||||
public String getServerModName() {
|
public String getServerModName() {
|
||||||
|
|||||||
@@ -41,10 +41,10 @@ index fb263fa1f30a7dfcb7ec2656abfb38e5fe88eac9..7e19dfe90a63ff26f03b95891dacb736
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
||||||
index dfcf218a307eee9457563021e24ff471d395baa2..b370bf88d790f8022927be6022c7fdf676215e8c 100644
|
index 93572d8cc3cff757f36387940dd593885b95ff82..ea5ce91b7114149f2e0f77978ecd1bb15062be71 100644
|
||||||
--- a/net/minecraft/server/MinecraftServer.java
|
--- a/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/net/minecraft/server/MinecraftServer.java
|
+++ b/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -1755,6 +1755,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -1748,6 +1748,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
GameTestTicker.SINGLETON.tick();
|
GameTestTicker.SINGLETON.tick();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -92,10 +92,10 @@ index b305ba9bab617bf4e52d0e6ddf160bacc5751a94..c9b4f00d5ccde83898ecf69efdbfee7a
|
|||||||
if (players.size() >= resultLimit) {
|
if (players.size() >= resultLimit) {
|
||||||
return players;
|
return players;
|
||||||
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
||||||
index b370bf88d790f8022927be6022c7fdf676215e8c..1ebd311978edbb0b786caaac13f41a7a06ee04e1 100644
|
index ea5ce91b7114149f2e0f77978ecd1bb15062be71..0412b0183f44f6b7efe65c8d30f86d5ddf30912e 100644
|
||||||
--- a/net/minecraft/server/MinecraftServer.java
|
--- a/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/net/minecraft/server/MinecraftServer.java
|
+++ b/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -1658,7 +1658,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -1651,7 +1651,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
}
|
}
|
||||||
|
|
||||||
private ServerStatus.Players buildPlayerStatus() {
|
private ServerStatus.Players buildPlayerStatus() {
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ To avoid the hefty ArrayDeque's size() call, we check if we *really* need to exe
|
|||||||
Most entities won't have any scheduled tasks, so this is a nice performance bonus. These optimizations, however, wouldn't work in a Folia environment, but because in SparklyPaper executeTick is always executed on the main thread, it ain't an issue for us (yay).
|
Most entities won't have any scheduled tasks, so this is a nice performance bonus. These optimizations, however, wouldn't work in a Folia environment, but because in SparklyPaper executeTick is always executed on the main thread, it ain't an issue for us (yay).
|
||||||
|
|
||||||
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
||||||
index 4baef697c806993e3f8b09a2b73e3a581d2e598b..8aeb6e84ed9436bd4511350493314143aa3d56b6 100644
|
index 0546b48d1142be86d2e8fd77f786b32fb2ae0606..7eb59f4f5d65927df2d752e8be3e44c5427f5d81 100644
|
||||||
--- a/net/minecraft/server/MinecraftServer.java
|
--- a/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/net/minecraft/server/MinecraftServer.java
|
+++ b/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -290,6 +290,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -290,6 +290,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
@@ -24,7 +24,7 @@ index 4baef697c806993e3f8b09a2b73e3a581d2e598b..8aeb6e84ed9436bd4511350493314143
|
|||||||
|
|
||||||
public static <S extends MinecraftServer> S spin(Function<Thread, S> threadFunction) {
|
public static <S extends MinecraftServer> S spin(Function<Thread, S> threadFunction) {
|
||||||
ca.spottedleaf.dataconverter.minecraft.datatypes.MCTypeRegistry.init(); // Paper - rewrite data converter system
|
ca.spottedleaf.dataconverter.minecraft.datatypes.MCTypeRegistry.init(); // Paper - rewrite data converter system
|
||||||
@@ -1682,6 +1683,22 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -1675,6 +1676,22 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
this.server.getScheduler().mainThreadHeartbeat(); // CraftBukkit
|
this.server.getScheduler().mainThreadHeartbeat(); // CraftBukkit
|
||||||
// Paper start - Folia scheduler API
|
// Paper start - Folia scheduler API
|
||||||
((io.papermc.paper.threadedregions.scheduler.FoliaGlobalRegionScheduler) org.bukkit.Bukkit.getGlobalRegionScheduler()).tick();
|
((io.papermc.paper.threadedregions.scheduler.FoliaGlobalRegionScheduler) org.bukkit.Bukkit.getGlobalRegionScheduler()).tick();
|
||||||
@@ -47,7 +47,7 @@ index 4baef697c806993e3f8b09a2b73e3a581d2e598b..8aeb6e84ed9436bd4511350493314143
|
|||||||
getAllLevels().forEach(level -> {
|
getAllLevels().forEach(level -> {
|
||||||
for (final net.minecraft.world.entity.Entity entity : level.getEntities().getAll()) {
|
for (final net.minecraft.world.entity.Entity entity : level.getEntities().getAll()) {
|
||||||
if (entity.isRemoved()) {
|
if (entity.isRemoved()) {
|
||||||
@@ -1693,6 +1710,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -1686,6 +1703,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Virtual thread for chat executor
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
||||||
index 8aeb6e84ed9436bd4511350493314143aa3d56b6..0e43622a95d12c249ff4a858d3064e1d44dfd1a6 100644
|
index 7eb59f4f5d65927df2d752e8be3e44c5427f5d81..87d68de399886379dbe31cb926d3d11c4f557300 100644
|
||||||
--- a/net/minecraft/server/MinecraftServer.java
|
--- a/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/net/minecraft/server/MinecraftServer.java
|
+++ b/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -2686,7 +2686,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -2679,7 +2679,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
}
|
}
|
||||||
|
|
||||||
public final java.util.concurrent.ExecutorService chatExecutor = java.util.concurrent.Executors.newCachedThreadPool(
|
public final java.util.concurrent.ExecutorService chatExecutor = java.util.concurrent.Executors.newCachedThreadPool(
|
||||||
|
|||||||
@@ -6,23 +6,6 @@ Subject: [PATCH] Nitori: Async playerdata saving
|
|||||||
Original license: GPL v3
|
Original license: GPL v3
|
||||||
Original project: https://github.com/Gensokyo-Reimagined/Nitori
|
Original project: https://github.com/Gensokyo-Reimagined/Nitori
|
||||||
|
|
||||||
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
|
||||||
index 0e43622a95d12c249ff4a858d3064e1d44dfd1a6..3ff39af93f5ea857099dbff6251879c7f3f371d4 100644
|
|
||||||
--- a/net/minecraft/server/MinecraftServer.java
|
|
||||||
+++ b/net/minecraft/server/MinecraftServer.java
|
|
||||||
@@ -1077,6 +1077,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Leaf end - Async mob spawning
|
|
||||||
+ // Leaf start - Async playerdata saving
|
|
||||||
+ org.dreeam.leaf.async.AsyncPlayerDataSaving.IO_POOL.shutdown();
|
|
||||||
+ try {
|
|
||||||
+ org.dreeam.leaf.async.AsyncPlayerDataSaving.IO_POOL.awaitTermination(30, java.util.concurrent.TimeUnit.SECONDS);
|
|
||||||
+ } catch (java.lang.InterruptedException ignored) {}
|
|
||||||
+ // Leaf end - Async playerdata saving
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getLocalIp() {
|
|
||||||
diff --git a/net/minecraft/world/level/storage/LevelStorageSource.java b/net/minecraft/world/level/storage/LevelStorageSource.java
|
diff --git a/net/minecraft/world/level/storage/LevelStorageSource.java b/net/minecraft/world/level/storage/LevelStorageSource.java
|
||||||
index de43e54698125ce9f319d4889dd49f7029fe95e0..742bd4b60321adc9e63c3de910ea95f4990b618d 100644
|
index de43e54698125ce9f319d4889dd49f7029fe95e0..742bd4b60321adc9e63c3de910ea95f4990b618d 100644
|
||||||
--- a/net/minecraft/world/level/storage/LevelStorageSource.java
|
--- a/net/minecraft/world/level/storage/LevelStorageSource.java
|
||||||
|
|||||||
@@ -7,10 +7,10 @@ Original license: AGPL-3.0
|
|||||||
Original project: https://github.com/snackbag/TT20
|
Original project: https://github.com/snackbag/TT20
|
||||||
|
|
||||||
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
||||||
index 3ff39af93f5ea857099dbff6251879c7f3f371d4..4e8abd0fdb79eb1c6582fe12fed163a4a90a8562 100644
|
index 87d68de399886379dbe31cb926d3d11c4f557300..63ff20f467c7508486a8f274442269b90faea108 100644
|
||||||
--- a/net/minecraft/server/MinecraftServer.java
|
--- a/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/net/minecraft/server/MinecraftServer.java
|
+++ b/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -1564,6 +1564,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -1551,6 +1551,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
|
|
||||||
this.server.spark.tickStart(); // Paper - spark
|
this.server.spark.tickStart(); // Paper - spark
|
||||||
new com.destroystokyo.paper.event.server.ServerTickStartEvent(this.tickCount+1).callEvent(); // Paper - Server Tick Events
|
new com.destroystokyo.paper.event.server.ServerTickStartEvent(this.tickCount+1).callEvent(); // Paper - Server Tick Events
|
||||||
|
|||||||
@@ -265,7 +265,7 @@ index 5ab2c8333178335515e619b87ae420f948c83bd1..be3b2f023897a8823560ee059cb16ec9
|
|||||||
}
|
}
|
||||||
|
|
||||||
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
||||||
index 4e8abd0fdb79eb1c6582fe12fed163a4a90a8562..f57ca213010892e6a2f5ec84871969be51c9c9f5 100644
|
index 63ff20f467c7508486a8f274442269b90faea108..15de8904a43c0ee1e6d55d511ebd84df57774e32 100644
|
||||||
--- a/net/minecraft/server/MinecraftServer.java
|
--- a/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/net/minecraft/server/MinecraftServer.java
|
+++ b/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -291,6 +291,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -291,6 +291,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
@@ -339,7 +339,7 @@ index 4e8abd0fdb79eb1c6582fe12fed163a4a90a8562..f57ca213010892e6a2f5ec84871969be
|
|||||||
flag = true;
|
flag = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1685,6 +1704,18 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -1672,6 +1691,18 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -358,7 +358,7 @@ index 4e8abd0fdb79eb1c6582fe12fed163a4a90a8562..f57ca213010892e6a2f5ec84871969be
|
|||||||
protected void tickChildren(BooleanSupplier hasTimeLeft) {
|
protected void tickChildren(BooleanSupplier hasTimeLeft) {
|
||||||
this.getPlayerList().getPlayers().forEach(serverPlayer1 -> serverPlayer1.connection.suspendFlushing());
|
this.getPlayerList().getPlayers().forEach(serverPlayer1 -> serverPlayer1.connection.suspendFlushing());
|
||||||
this.server.getScheduler().mainThreadHeartbeat(); // CraftBukkit
|
this.server.getScheduler().mainThreadHeartbeat(); // CraftBukkit
|
||||||
@@ -1751,28 +1782,50 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -1738,28 +1769,50 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
}
|
}
|
||||||
|
|
||||||
this.isIteratingOverLevels = true; // Paper - Throw exception on world create while being ticked
|
this.isIteratingOverLevels = true; // Paper - Throw exception on world create while being ticked
|
||||||
@@ -427,7 +427,7 @@ index 4e8abd0fdb79eb1c6582fe12fed163a4a90a8562..f57ca213010892e6a2f5ec84871969be
|
|||||||
this.isIteratingOverLevels = false; // Paper - Throw exception on world create while being ticked
|
this.isIteratingOverLevels = false; // Paper - Throw exception on world create while being ticked
|
||||||
|
|
||||||
this.tickConnection();
|
this.tickConnection();
|
||||||
@@ -1852,6 +1905,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -1839,6 +1892,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
Map<ResourceKey<Level>, ServerLevel> oldLevels = this.levels;
|
Map<ResourceKey<Level>, ServerLevel> oldLevels = this.levels;
|
||||||
Map<ResourceKey<Level>, ServerLevel> newLevels = Maps.newLinkedHashMap(oldLevels);
|
Map<ResourceKey<Level>, ServerLevel> newLevels = Maps.newLinkedHashMap(oldLevels);
|
||||||
newLevels.remove(level.dimension());
|
newLevels.remove(level.dimension());
|
||||||
|
|||||||
@@ -6,10 +6,10 @@ Subject: [PATCH] SparklyPaper: Track each world MSPT
|
|||||||
Original project: https://github.com/SparklyPower/SparklyPaper
|
Original project: https://github.com/SparklyPower/SparklyPaper
|
||||||
|
|
||||||
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
||||||
index f57ca213010892e6a2f5ec84871969be51c9c9f5..97e5adf229ba514656d670521198b1f4c34c7d05 100644
|
index 15de8904a43c0ee1e6d55d511ebd84df57774e32..fd1de4607b64860332432c8781f60d9933065d95 100644
|
||||||
--- a/net/minecraft/server/MinecraftServer.java
|
--- a/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/net/minecraft/server/MinecraftServer.java
|
+++ b/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -1707,7 +1707,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -1694,7 +1694,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
// Leaf start - SparklyPaper - parallel world ticking mod (move level ticking logic out for branch convergence)
|
// Leaf start - SparklyPaper - parallel world ticking mod (move level ticking logic out for branch convergence)
|
||||||
private void tickLevel(ServerLevel serverLevel, BooleanSupplier hasTimeLeft) {
|
private void tickLevel(ServerLevel serverLevel, BooleanSupplier hasTimeLeft) {
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ index b6af8da084c83ee38bb3ecea6a98feb0c1c74d2a..561723eeb1dd80f7fdd9aff33f6e1c4c
|
|||||||
final EntityCollectionBySection byType = this.entitiesByType.get(entity.getType());
|
final EntityCollectionBySection byType = this.entitiesByType.get(entity.getType());
|
||||||
byType.removeEntity(entity, sectionIndex);
|
byType.removeEntity(entity, sectionIndex);
|
||||||
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
||||||
index 97e5adf229ba514656d670521198b1f4c34c7d05..272204ae3f94f6f50454d0b5f5bcdd264971774e 100644
|
index fd1de4607b64860332432c8781f60d9933065d95..f5f0e4f5d7a4b34514e102020d2a7be313292f7f 100644
|
||||||
--- a/net/minecraft/server/MinecraftServer.java
|
--- a/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/net/minecraft/server/MinecraftServer.java
|
+++ b/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -292,6 +292,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -292,6 +292,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
@@ -117,21 +117,6 @@ index 97e5adf229ba514656d670521198b1f4c34c7d05..272204ae3f94f6f50454d0b5f5bcdd26
|
|||||||
|
|
||||||
public static <S extends MinecraftServer> S spin(Function<Thread, S> threadFunction) {
|
public static <S extends MinecraftServer> S spin(Function<Thread, S> threadFunction) {
|
||||||
ca.spottedleaf.dataconverter.minecraft.datatypes.MCTypeRegistry.init(); // Paper - rewrite data converter system
|
ca.spottedleaf.dataconverter.minecraft.datatypes.MCTypeRegistry.init(); // Paper - rewrite data converter system
|
||||||
@@ -1102,6 +1103,14 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
|
||||||
org.dreeam.leaf.async.AsyncPlayerDataSaving.IO_POOL.awaitTermination(30, java.util.concurrent.TimeUnit.SECONDS);
|
|
||||||
} catch (java.lang.InterruptedException ignored) {}
|
|
||||||
// Leaf end - Async playerdata saving
|
|
||||||
+ // Leaf start - Async target finding
|
|
||||||
+ if (this.asyncGoalThread != null) {
|
|
||||||
+ try {
|
|
||||||
+ this.asyncGoalThread.join();
|
|
||||||
+ } catch (java.lang.InterruptedException ignored) {
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ // Leaf end - Async target finding
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getLocalIp() {
|
|
||||||
diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java
|
diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
index 33dd16a26edd2974f04d9a868d3e58e8e3060032..eb0589b203bcf72cd24bb37f2c448c23cb8d6f2b 100644
|
index 33dd16a26edd2974f04d9a868d3e58e8e3060032..eb0589b203bcf72cd24bb37f2c448c23cb8d6f2b 100644
|
||||||
--- a/net/minecraft/server/dedicated/DedicatedServer.java
|
--- a/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
|
|||||||
@@ -22,10 +22,10 @@ index 7e19dfe90a63ff26f03b95891dacb7360bba5a3c..5d0961f06c23121883c4f0b889ccdf32
|
|||||||
}
|
}
|
||||||
|
|
||||||
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
||||||
index 272204ae3f94f6f50454d0b5f5bcdd264971774e..52c4a93d0c1fd40e7a92d9ed6d2d8010569f8f2b 100644
|
index f5f0e4f5d7a4b34514e102020d2a7be313292f7f..0baa48054beead8f187b56ea8d71916600ccea9f 100644
|
||||||
--- a/net/minecraft/server/MinecraftServer.java
|
--- a/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/net/minecraft/server/MinecraftServer.java
|
+++ b/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -1853,6 +1853,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -1832,6 +1832,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
}
|
}
|
||||||
|
|
||||||
org.leavesmc.leaves.protocol.core.LeavesProtocolManager.handleTick(); // Leaves - protocol
|
org.leavesmc.leaves.protocol.core.LeavesProtocolManager.handleTick(); // Leaves - protocol
|
||||||
|
|||||||
@@ -0,0 +1,39 @@
|
|||||||
|
package org.dreeam.leaf.async;
|
||||||
|
|
||||||
|
import net.minecraft.server.MinecraftServer;
|
||||||
|
import org.dreeam.leaf.async.tracker.MultithreadedTracker;
|
||||||
|
|
||||||
|
public class ShutdownExecutors {
|
||||||
|
public static void shutdown(MinecraftServer server) {
|
||||||
|
|
||||||
|
if (server.mobSpawnExecutor != null) {
|
||||||
|
try {
|
||||||
|
server.mobSpawnExecutor.kill();
|
||||||
|
} catch (InterruptedException ignored) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (AsyncPlayerDataSaving.IO_POOL != null) {
|
||||||
|
AsyncPlayerDataSaving.IO_POOL.shutdown();
|
||||||
|
try {
|
||||||
|
AsyncPlayerDataSaving.IO_POOL.awaitTermination(300L, java.util.concurrent.TimeUnit.SECONDS);
|
||||||
|
} catch (InterruptedException ignored) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (server.asyncGoalThread != null) {
|
||||||
|
try {
|
||||||
|
server.asyncGoalThread.join();
|
||||||
|
} catch (InterruptedException ignored) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (MultithreadedTracker.TRACKER_EXECUTOR != null) {
|
||||||
|
MultithreadedTracker.TRACKER_EXECUTOR.shutdown();
|
||||||
|
try {
|
||||||
|
MultithreadedTracker.TRACKER_EXECUTOR.awaitTermination(10L, java.util.concurrent.TimeUnit.SECONDS);
|
||||||
|
} catch (InterruptedException ignored) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -30,7 +30,7 @@ public class MultithreadedTracker {
|
|||||||
private static final String THREAD_PREFIX = "Leaf Async Tracker";
|
private static final String THREAD_PREFIX = "Leaf Async Tracker";
|
||||||
private static final Logger LOGGER = LogManager.getLogger(THREAD_PREFIX);
|
private static final Logger LOGGER = LogManager.getLogger(THREAD_PREFIX);
|
||||||
private static long lastWarnMillis = System.currentTimeMillis();
|
private static long lastWarnMillis = System.currentTimeMillis();
|
||||||
private static ThreadPoolExecutor TRACKER_EXECUTOR = null;
|
public static ThreadPoolExecutor TRACKER_EXECUTOR = null;
|
||||||
|
|
||||||
private MultithreadedTracker() {
|
private MultithreadedTracker() {
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user