From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Helvetica Volubi Date: Fri, 16 Jan 2026 02:34:43 +0800 Subject: [PATCH] Add config to enable save-all command diff --git a/io/papermc/paper/threadedregions/RegionizedServer.java b/io/papermc/paper/threadedregions/RegionizedServer.java index a2db29aa47a4b7213d4956f02f6e83122ccfdbd1..6fb3c88463ff69bddb7d8dcde0e5339567d3e1c6 100644 --- a/io/papermc/paper/threadedregions/RegionizedServer.java +++ b/io/papermc/paper/threadedregions/RegionizedServer.java @@ -265,6 +265,8 @@ public final class RegionizedServer { // tick player ping sample this.tickPlayerSample(); + fun.bm.lophine.utils.SaveAllUtil.checkTimeout(); // Lophine - save-all fix + // tick worlds for (final ServerLevel world : this.worlds) { this.globalTick(world, tickCount); diff --git a/io/papermc/paper/threadedregions/TickRegions.java b/io/papermc/paper/threadedregions/TickRegions.java index 97c514673a454b752ab86b944fd143725ca8090d..ba91d40d6d91588a4b39abfefcb17a362bfc5490 100644 --- a/io/papermc/paper/threadedregions/TickRegions.java +++ b/io/papermc/paper/threadedregions/TickRegions.java @@ -190,6 +190,8 @@ public final class TickRegions implements ThreadedRegionizer.RegionCallbacks region; public final ServerLevel world; + public long lastSavedTime = 0; // Lophine - save-all fix + // generic regionised data private final Reference2ReferenceOpenHashMap, Object> regionizedData = new Reference2ReferenceOpenHashMap<>(); diff --git a/net/minecraft/commands/Commands.java b/net/minecraft/commands/Commands.java index c67ea715f02086e5a39cc5832ccdc0b32199db93..946094713bdb294d7d8beb03967b2a2488f5359b 100644 --- a/net/minecraft/commands/Commands.java +++ b/net/minecraft/commands/Commands.java @@ -299,7 +299,11 @@ public class Commands { PardonCommand.register(this.dispatcher); PardonIpCommand.register(this.dispatcher); //PerfCommand.register(this.dispatcher); // Folia - region threading - TODO later - //SaveAllCommand.register(this.dispatcher); // Folia - region threading - TODO later + // Lophine start - Add a config to enable save all command + if (fun.bm.lophine.config.modules.experiment.CommandConfig.saveAll) { + SaveAllCommand.register(this.dispatcher); // Folia - region threading - TODO later + } + // Lophine end - Add a config to enable save all command SaveOffCommand.register(this.dispatcher); SaveOnCommand.register(this.dispatcher); SetPlayerIdleTimeoutCommand.register(this.dispatcher); diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java index 4b6f961e695155db1d6cc86496491017bf3a6383..e7f7f7927fc1e2ce45ea5dbf7cc9ec19197c599f 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java @@ -1652,6 +1652,11 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop Component.translatable("commands.save.saving"), false); + // Lophine start - save all + fun.bm.lophine.utils.SaveAllUtil.preSaveAll(source, flush); +/* source.sendSuccess(() -> Component.translatable("commands.save.saving"), false); MinecraftServer server = source.getServer(); boolean success = server.saveEverything(true, flush, true); if (!success) { throw ERROR_FAILED.create(); } - source.sendSuccess(() -> Component.translatable("commands.save.success"), true); + source.sendSuccess(() -> Component.translatable("commands.save.success"), true);*/ return Command.SINGLE_SUCCESS; } + + public static SimpleCommandExceptionType getErrorFailed() { + return ERROR_FAILED; + } + // Lophine end - save all }