2024-10-29 20:46:33 +01:00
|
|
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
|
|
From: Jason Penilla <11360596+jpenilla@users.noreply.github.com>
|
|
|
|
Date: Sun, 27 Oct 2024 14:18:28 -0700
|
|
|
|
Subject: [PATCH] Avoid issues with certain tasks not processing during sleep
|
|
|
|
|
|
|
|
Execute processQueue tasks during sleep: needed for console tab completions, pre join event, etc.
|
|
|
|
|
|
|
|
Upstream has set precedent that the bukkit scheduler will still tick during sleep, which avoids some problems
|
|
|
|
with plugins not accounting for the new sleep feature, but can still lead to others. Because of this we have disabled
|
|
|
|
sleep by default, which avoids the problem and makes it more obvious to check if this is the cause of issues when
|
|
|
|
enabled. We also unload chunks during sleep to prevent memory leaks caused by plugin chunk loads.
|
|
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
2024-11-18 21:09:44 +01:00
|
|
|
index e636a96ea6220fda671a31d3d9cdea468a558768..64b56abf8900d0424100da460fc68ac964394793 100644
|
2024-10-29 20:46:33 +01:00
|
|
|
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
|
|
|
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
2024-10-31 22:30:18 +01:00
|
|
|
@@ -1638,6 +1638,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
2024-10-29 20:46:33 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
this.server.getScheduler().mainThreadHeartbeat(); // CraftBukkit
|
|
|
|
+ // Paper start - avoid issues with certain tasks not processing during sleep
|
|
|
|
+ Runnable task;
|
|
|
|
+ while ((task = this.processQueue.poll()) != null) {
|
|
|
|
+ task.run();
|
|
|
|
+ }
|
|
|
|
+ for (final ServerLevel level : this.levels.values()) {
|
|
|
|
+ // process unloads
|
|
|
|
+ level.getChunkSource().tick(() -> true, false);
|
|
|
|
+ }
|
|
|
|
+ // Paper end - avoid issues with certain tasks not processing during sleep
|
|
|
|
this.server.spark.executeMainThreadTasks(); // Paper - spark
|
|
|
|
this.tickConnection();
|
|
|
|
this.server.spark.tickEnd(((double)(System.nanoTime() - lastTick) / 1000000D)); // Paper - spark
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java
|
2024-11-18 21:09:44 +01:00
|
|
|
index a2633780619d73c29a23cb8b6a208ca9ba549fb0..c3ec370b83b895be0f03662e3884fa4a2442a2a6 100644
|
2024-10-29 20:46:33 +01:00
|
|
|
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java
|
|
|
|
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java
|
|
|
|
@@ -160,7 +160,7 @@ public class DedicatedServerProperties extends Settings<DedicatedServerPropertie
|
|
|
|
this.whiteList = this.getMutable("white-list", false);
|
|
|
|
this.enforceSecureProfile = this.get("enforce-secure-profile", true);
|
|
|
|
this.logIPs = this.get("log-ips", true);
|
|
|
|
- this.pauseWhenEmptySeconds = this.get("pause-when-empty-seconds", 60);
|
|
|
|
+ this.pauseWhenEmptySeconds = this.get("pause-when-empty-seconds", -1); // Paper - disable tick sleeping by default
|
|
|
|
this.acceptsTransfers = this.get("accepts-transfers", false);
|
|
|
|
String s = this.get("level-seed", "");
|
|
|
|
boolean flag = this.get("generate-structures", true);
|