From 7ecae821f688e735cb090fb143f02af06c7482a4 Mon Sep 17 00:00:00 2001 From: Wel Coming Date: Wed, 11 Mar 2026 19:25:31 +0800 Subject: [PATCH] fix: wait for world save to complete before creating backup --- .../quickbackupmulti/utils/BackupManager.java | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/common/src/main/java/io/github/skydynamic/quickbackupmulti/utils/BackupManager.java b/common/src/main/java/io/github/skydynamic/quickbackupmulti/utils/BackupManager.java index 42e781e..d1910f0 100644 --- a/common/src/main/java/io/github/skydynamic/quickbackupmulti/utils/BackupManager.java +++ b/common/src/main/java/io/github/skydynamic/quickbackupmulti/utils/BackupManager.java @@ -134,11 +134,13 @@ public static void makeBackup(CommandSourceStack commandSource, String name, Str try { commandSource.sendSystemMessage(Component.nullToEmpty(tr("quickbackupmulti.make.start"))); MinecraftServer server = commandSource.getServer(); - server.executeIfPossible(() -> server.saveEverything(true, true, true)); - for (ServerLevel serverLevel : server.getAllLevels()) { - if (serverLevel == null || serverLevel.noSave) continue; - serverLevel.noSave = true; - } + server.executeBlocking(() -> { + server.saveEverything(true, true, true); + for (ServerLevel serverLevel : server.getAllLevels()) { + if (serverLevel == null || serverLevel.noSave) continue; + serverLevel.noSave = true; + } + }); QuickbackupmultiReforged.getManager().incrementalStorage( name, @@ -152,10 +154,12 @@ public static void makeBackup(CommandSourceStack commandSource, String name, Str double intervalTime = (endTime - startTime) / 1000.0; commandSource.sendSystemMessage(Component.nullToEmpty(tr("quickbackupmulti.make.success", intervalTime))); - for (ServerLevel serverLevel : server.getAllLevels()) { - if (serverLevel == null || !serverLevel.noSave) continue; - serverLevel.noSave = false; - } + server.executeBlocking(() -> { + for (ServerLevel serverLevel : server.getAllLevels()) { + if (serverLevel == null || !serverLevel.noSave) continue; + serverLevel.noSave = false; + } + }); } catch (Exception e) { logger.error("Make Backup Failed", e); commandSource.sendSystemMessage(Component.nullToEmpty(tr("quickbackupmulti.make.fail", e.toString())));