From 14e7cbe186be2b7372c32424ec38e25f31f98d85 Mon Sep 17 00:00:00 2001 From: MrHua269 Date: Sat, 13 Apr 2024 11:41:31 +0000 Subject: [PATCH] Clean patches --- .../server/0003-Empty-config-file-base.patch | 19 +-- patches/server/0009-Add-a-simple-tpsbar.patch | 4 +- ...-Add-config-for-offline-mode-warning.patch | 4 +- ...ju-linear-region-format-and-settings.patch | 71 +++++++---- ...a-and-Optional-allocation-in-Entity.patch} | 2 +- ...linear-region-flush-task-dispatching.patch | 120 ------------------ 6 files changed, 56 insertions(+), 164 deletions(-) rename patches/server/{0049-Gale-Reduce-lambda-and-Optional-allocation-in.patch => 0049-Gale-Reduce-lambda-and-Optional-allocation-in-Entity.patch} (96%) delete mode 100644 patches/server/0064-Rewrite-linear-region-flush-task-dispatching.patch diff --git a/patches/server/0003-Empty-config-file-base.patch b/patches/server/0003-Empty-config-file-base.patch index 802d5a5..bdc5b82 100644 --- a/patches/server/0003-Empty-config-file-base.patch +++ b/patches/server/0003-Empty-config-file-base.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Empty config file base diff --git a/build.gradle.kts b/build.gradle.kts -index 48e9f6ff317bfc7077563e9c651d2a90da6bb37a..d4baa7a193eba22be23921029ca4808a73de063d 100644 +index c0608731dd7a352628a1e31997d0658dfa9f2ea8..66c34f883a93dd86fcac8029cce63ffe7340c89b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -19,6 +19,7 @@ dependencies { @@ -414,24 +414,15 @@ index 0000000000000000000000000000000000000000..2b4e64796bf01b0a5fcb306850cd6083 + } +} diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 6b3242117d62175de462d04e4d178b49ae2521e9..4744ace98d1741db80ac2aea198f332d95c0ba33 100644 +index 6b3242117d62175de462d04e4d178b49ae2521e9..68355b9a0a88c871e18031d04581c9ef53313f48 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -@@ -19,6 +19,8 @@ import java.util.Locale; - import java.util.Optional; - import java.util.function.BooleanSupplier; - import javax.annotation.Nullable; -+ -+import me.earthme.luminol.config.LuminolConfig; - import net.minecraft.DefaultUncaughtExceptionHandler; - import net.minecraft.DefaultUncaughtExceptionHandlerWithName; - import net.minecraft.SharedConstants; -@@ -209,6 +211,8 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -209,6 +209,8 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface this.paperConfigurations.initializeGlobalConfiguration(this.registryAccess()); this.paperConfigurations.initializeWorldDefaultsConfiguration(this.registryAccess()); // Paper end - initialize global and world-defaults configuration -+ LuminolConfig.loadConfig(); //Luminol - load config file -+ LuminolConfig.setupLatch(); //Luminol - load config file ++ me.earthme.luminol.config.LuminolConfig.loadConfig(); //Luminol - load config file ++ me.earthme.luminol.config.LuminolConfig.setupLatch(); //Luminol - load config file // Paper start - fix converting txt to json file; convert old users earlier after PlayerList creation but before file load/save if (this.convertOldUsers()) { this.getProfileCache().save(false); // Paper diff --git a/patches/server/0009-Add-a-simple-tpsbar.patch b/patches/server/0009-Add-a-simple-tpsbar.patch index b8fdde3..e5bdbf7 100644 --- a/patches/server/0009-Add-a-simple-tpsbar.patch +++ b/patches/server/0009-Add-a-simple-tpsbar.patch @@ -347,10 +347,10 @@ index 0000000000000000000000000000000000000000..3f1478dde900d671c4bfa43df80f6295 + } +} diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 4744ace98d1741db80ac2aea198f332d95c0ba33..550fb11c64e3adb35bb7f78c53f0b5ae5ce9ff58 100644 +index 68355b9a0a88c871e18031d04581c9ef53313f48..c626018d786fe231cd74a28c83515715d896f214 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -@@ -832,6 +832,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -830,6 +830,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface @Override public void stopServer() { diff --git a/patches/server/0011-Add-config-for-offline-mode-warning.patch b/patches/server/0011-Add-config-for-offline-mode-warning.patch index b5ba33f..4247a54 100644 --- a/patches/server/0011-Add-config-for-offline-mode-warning.patch +++ b/patches/server/0011-Add-config-for-offline-mode-warning.patch @@ -31,10 +31,10 @@ index 0000000000000000000000000000000000000000..502b93c7bda9e8577a1901a8777b7cf9 + } +} diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 550fb11c64e3adb35bb7f78c53f0b5ae5ce9ff58..71151811c36c75ace1e41837123b320ae48a4b53 100644 +index c626018d786fe231cd74a28c83515715d896f214..49555381641e9cf9a5c3f00db1e193c9d992637b 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -@@ -284,7 +284,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -282,7 +282,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface String proxyFlavor = (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.velocity.enabled) ? "Velocity" : "BungeeCord"; String proxyLink = (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.velocity.enabled) ? "https://docs.papermc.io/velocity/security" : "http://www.spigotmc.org/wiki/firewall-guide/"; // Paper end - Add Velocity IP Forwarding Support diff --git a/patches/server/0019-Kaiiju-linear-region-format-and-settings.patch b/patches/server/0019-Kaiiju-linear-region-format-and-settings.patch index 85b9dc1..4066e1d 100644 --- a/patches/server/0019-Kaiiju-linear-region-format-and-settings.patch +++ b/patches/server/0019-Kaiiju-linear-region-format-and-settings.patch @@ -93,10 +93,10 @@ index 0000000000000000000000000000000000000000..dcfbabf54b19a4c29d5c95830242c5c2 +} diff --git a/src/main/java/dev/kaiijumc/kaiiju/region/LinearRegionFile.java b/src/main/java/dev/kaiijumc/kaiiju/region/LinearRegionFile.java new file mode 100644 -index 0000000000000000000000000000000000000000..e40989889f3821bb7484fc0bae5d94b033013904 +index 0000000000000000000000000000000000000000..dc5a5f42c9ca7a50295c18424722568a3ad33fa5 --- /dev/null +++ b/src/main/java/dev/kaiijumc/kaiiju/region/LinearRegionFile.java -@@ -0,0 +1,316 @@ +@@ -0,0 +1,324 @@ +package dev.kaiijumc.kaiiju.region; + +import com.github.luben.zstd.ZstdInputStream; @@ -225,7 +225,7 @@ index 0000000000000000000000000000000000000000..e40989889f3821bb7484fc0bae5d94b0 + } + + public void flush() throws IOException { -+ if (isMarkedToSave()) flushWrapper(); // sync ++ if (getAndResetSaveMarker()) flushWrapper(); // sync + } + + private void markToSave() { @@ -233,10 +233,18 @@ index 0000000000000000000000000000000000000000..e40989889f3821bb7484fc0bae5d94b0 + markedToSave.set(true); + } + -+ public boolean isMarkedToSave() { ++ public boolean getAndResetSaveMarker() { + return markedToSave.getAndSet(false); + } + ++ public boolean isMarkedToSave(){ ++ return this.markedToSave.get(); ++ } ++ ++ public void resetSaveMarker(){ ++ this.markedToSave.set(false); ++ } ++ + public void flushWrapper() { + try { + save(); @@ -415,24 +423,21 @@ index 0000000000000000000000000000000000000000..e40989889f3821bb7484fc0bae5d94b0 +} diff --git a/src/main/java/dev/kaiijumc/kaiiju/region/LinearRegionFileFlusher.java b/src/main/java/dev/kaiijumc/kaiiju/region/LinearRegionFileFlusher.java new file mode 100644 -index 0000000000000000000000000000000000000000..f06d7767c79e465f999b2032086cc224de95152a +index 0000000000000000000000000000000000000000..65435eb666b2e1cabffc145e016faa5e3b373464 --- /dev/null +++ b/src/main/java/dev/kaiijumc/kaiiju/region/LinearRegionFileFlusher.java -@@ -0,0 +1,44 @@ +@@ -0,0 +1,57 @@ +package dev.kaiijumc.kaiiju.region; + +import com.google.common.util.concurrent.ThreadFactoryBuilder; -+import java.util.Queue; ++ ++import java.util.Set; +import java.util.concurrent.*; +import org.bukkit.Bukkit; + +public class LinearRegionFileFlusher { -+ private final Queue savingQueue = new LinkedBlockingQueue<>(); -+ private final ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor( -+ new ThreadFactoryBuilder() -+ .setNameFormat("linear-flush-scheduler") -+ .build() -+ ); ++ private final Set pendingSaving = ConcurrentHashMap.newKeySet(); ++ + private final ExecutorService executor = Executors.newFixedThreadPool( + me.earthme.luminol.config.modules.misc.RegionFormatConfig.linearFlushThreads, + new ThreadFactoryBuilder() @@ -440,27 +445,43 @@ index 0000000000000000000000000000000000000000..f06d7767c79e465f999b2032086cc224 + .build() + ); + ++ private final Executor delayedFlusher = CompletableFuture.delayedExecutor( ++ me.earthme.luminol.config.modules.misc.RegionFormatConfig.linearFlushFrequency, ++ TimeUnit.SECONDS, ++ executor ++ ); ++ + public LinearRegionFileFlusher() { + Bukkit.getLogger().info("Using " + me.earthme.luminol.config.modules.misc.RegionFormatConfig.linearFlushThreads + " threads for linear region flushing."); -+ scheduler.scheduleAtFixedRate(this::pollAndFlush, 0L, me.earthme.luminol.config.modules.misc.RegionFormatConfig.linearFlushFrequency, TimeUnit.SECONDS); + } + + public void scheduleSave(LinearRegionFile regionFile) { -+ if (savingQueue.contains(regionFile)) return; -+ savingQueue.add(regionFile); -+ } -+ -+ private void pollAndFlush() { -+ while (!savingQueue.isEmpty()) { -+ LinearRegionFile regionFile = savingQueue.poll(); -+ if (!regionFile.closed && regionFile.isMarkedToSave()) -+ executor.execute(regionFile::flushWrapper); ++ if (this.pendingSaving.contains(regionFile) || !regionFile.isMarkedToSave()){ ++ return; + } ++ ++ this.pendingSaving.add(regionFile); ++ this.delayedFlusher.execute(()->{ ++ try { ++ if (!regionFile.closed && regionFile.isMarkedToSave()){ ++ regionFile.flushWrapper(); ++ } ++ }finally { ++ regionFile.resetSaveMarker(); ++ this.pendingSaving.remove(regionFile); ++ } ++ }); + } + + public void shutdown() { -+ executor.shutdown(); -+ scheduler.shutdown(); ++ this.executor.shutdown(); ++ for (;;) { ++ try { ++ if (this.executor.awaitTermination(5_00,TimeUnit.MILLISECONDS)) break; ++ } catch (InterruptedException e) { ++ e.printStackTrace(); ++ } ++ } + } +} diff --git a/src/main/java/dev/kaiijumc/kaiiju/region/RegionFileFormat.java b/src/main/java/dev/kaiijumc/kaiiju/region/RegionFileFormat.java diff --git a/patches/server/0049-Gale-Reduce-lambda-and-Optional-allocation-in.patch b/patches/server/0049-Gale-Reduce-lambda-and-Optional-allocation-in-Entity.patch similarity index 96% rename from patches/server/0049-Gale-Reduce-lambda-and-Optional-allocation-in.patch rename to patches/server/0049-Gale-Reduce-lambda-and-Optional-allocation-in-Entity.patch index bace207..b70b37f 100644 --- a/patches/server/0049-Gale-Reduce-lambda-and-Optional-allocation-in.patch +++ b/patches/server/0049-Gale-Reduce-lambda-and-Optional-allocation-in-Entity.patch @@ -1,7 +1,7 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: MrHua269 Date: Sat, 6 Apr 2024 05:14:57 +0000 -Subject: [PATCH] Gale Reduce lambda and Optional allocation in +Subject: [PATCH] Gale Reduce lambda and Optional allocation in EntityBasedExplosionDamageCalculator diff --git a/patches/server/0064-Rewrite-linear-region-flush-task-dispatching.patch b/patches/server/0064-Rewrite-linear-region-flush-task-dispatching.patch deleted file mode 100644 index f5dfafa..0000000 --- a/patches/server/0064-Rewrite-linear-region-flush-task-dispatching.patch +++ /dev/null @@ -1,120 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: MrHua269 -Date: Fri, 12 Apr 2024 13:48:09 +0000 -Subject: [PATCH] Rewrite linear region flush task dispatching - - -diff --git a/src/main/java/dev/kaiijumc/kaiiju/region/LinearRegionFile.java b/src/main/java/dev/kaiijumc/kaiiju/region/LinearRegionFile.java -index e40989889f3821bb7484fc0bae5d94b033013904..dc5a5f42c9ca7a50295c18424722568a3ad33fa5 100644 ---- a/src/main/java/dev/kaiijumc/kaiiju/region/LinearRegionFile.java -+++ b/src/main/java/dev/kaiijumc/kaiiju/region/LinearRegionFile.java -@@ -126,7 +126,7 @@ public class LinearRegionFile implements AbstractRegionFile, AutoCloseable { - } - - public void flush() throws IOException { -- if (isMarkedToSave()) flushWrapper(); // sync -+ if (getAndResetSaveMarker()) flushWrapper(); // sync - } - - private void markToSave() { -@@ -134,10 +134,18 @@ public class LinearRegionFile implements AbstractRegionFile, AutoCloseable { - markedToSave.set(true); - } - -- public boolean isMarkedToSave() { -+ public boolean getAndResetSaveMarker() { - return markedToSave.getAndSet(false); - } - -+ public boolean isMarkedToSave(){ -+ return this.markedToSave.get(); -+ } -+ -+ public void resetSaveMarker(){ -+ this.markedToSave.set(false); -+ } -+ - public void flushWrapper() { - try { - save(); -diff --git a/src/main/java/dev/kaiijumc/kaiiju/region/LinearRegionFileFlusher.java b/src/main/java/dev/kaiijumc/kaiiju/region/LinearRegionFileFlusher.java -index f06d7767c79e465f999b2032086cc224de95152a..65435eb666b2e1cabffc145e016faa5e3b373464 100644 ---- a/src/main/java/dev/kaiijumc/kaiiju/region/LinearRegionFileFlusher.java -+++ b/src/main/java/dev/kaiijumc/kaiiju/region/LinearRegionFileFlusher.java -@@ -1,17 +1,14 @@ - package dev.kaiijumc.kaiiju.region; - - import com.google.common.util.concurrent.ThreadFactoryBuilder; --import java.util.Queue; -+ -+import java.util.Set; - import java.util.concurrent.*; - import org.bukkit.Bukkit; - - public class LinearRegionFileFlusher { -- private final Queue savingQueue = new LinkedBlockingQueue<>(); -- private final ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor( -- new ThreadFactoryBuilder() -- .setNameFormat("linear-flush-scheduler") -- .build() -- ); -+ private final Set pendingSaving = ConcurrentHashMap.newKeySet(); -+ - private final ExecutorService executor = Executors.newFixedThreadPool( - me.earthme.luminol.config.modules.misc.RegionFormatConfig.linearFlushThreads, - new ThreadFactoryBuilder() -@@ -19,26 +16,42 @@ public class LinearRegionFileFlusher { - .build() - ); - -+ private final Executor delayedFlusher = CompletableFuture.delayedExecutor( -+ me.earthme.luminol.config.modules.misc.RegionFormatConfig.linearFlushFrequency, -+ TimeUnit.SECONDS, -+ executor -+ ); -+ - public LinearRegionFileFlusher() { - Bukkit.getLogger().info("Using " + me.earthme.luminol.config.modules.misc.RegionFormatConfig.linearFlushThreads + " threads for linear region flushing."); -- scheduler.scheduleAtFixedRate(this::pollAndFlush, 0L, me.earthme.luminol.config.modules.misc.RegionFormatConfig.linearFlushFrequency, TimeUnit.SECONDS); - } - - public void scheduleSave(LinearRegionFile regionFile) { -- if (savingQueue.contains(regionFile)) return; -- savingQueue.add(regionFile); -- } -- -- private void pollAndFlush() { -- while (!savingQueue.isEmpty()) { -- LinearRegionFile regionFile = savingQueue.poll(); -- if (!regionFile.closed && regionFile.isMarkedToSave()) -- executor.execute(regionFile::flushWrapper); -+ if (this.pendingSaving.contains(regionFile) || !regionFile.isMarkedToSave()){ -+ return; - } -+ -+ this.pendingSaving.add(regionFile); -+ this.delayedFlusher.execute(()->{ -+ try { -+ if (!regionFile.closed && regionFile.isMarkedToSave()){ -+ regionFile.flushWrapper(); -+ } -+ }finally { -+ regionFile.resetSaveMarker(); -+ this.pendingSaving.remove(regionFile); -+ } -+ }); - } - - public void shutdown() { -- executor.shutdown(); -- scheduler.shutdown(); -+ this.executor.shutdown(); -+ for (;;) { -+ try { -+ if (this.executor.awaitTermination(5_00,TimeUnit.MILLISECONDS)) break; -+ } catch (InterruptedException e) { -+ e.printStackTrace(); -+ } -+ } - } - }