From 499a8c0cce291e5a3d5f5113ee40b09a40ef1415 Mon Sep 17 00:00:00 2001 From: TWME <65117253+TWME-TW@users.noreply.github.com> Date: Sun, 15 Mar 2026 11:27:05 +0800 Subject: [PATCH 1/3] fix(backup): reload backup service on plugin initialization --- .../buildsystem/BuildSystemPlugin.java | 1 + .../eintosti/buildsystem/config/Config.java | 3 ++- .../world/backup/BackupService.java | 22 ++++++++++++++++++- 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/buildsystem-core/src/main/java/de/eintosti/buildsystem/BuildSystemPlugin.java b/buildsystem-core/src/main/java/de/eintosti/buildsystem/BuildSystemPlugin.java index 75c592df..0f6a12c3 100644 --- a/buildsystem-core/src/main/java/de/eintosti/buildsystem/BuildSystemPlugin.java +++ b/buildsystem-core/src/main/java/de/eintosti/buildsystem/BuildSystemPlugin.java @@ -407,6 +407,7 @@ public void reloadConfigData(boolean init) { reloadConfig(); Config.load(); + backupService.reload(); if (init) { worldService.getWorldStorage().getBuildWorlds().forEach(buildWorld -> buildWorld.getUnloader().manageUnload()); diff --git a/buildsystem-core/src/main/java/de/eintosti/buildsystem/config/Config.java b/buildsystem-core/src/main/java/de/eintosti/buildsystem/config/Config.java index 33cfce43..1626a17f 100644 --- a/buildsystem-core/src/main/java/de/eintosti/buildsystem/config/Config.java +++ b/buildsystem-core/src/main/java/de/eintosti/buildsystem/config/Config.java @@ -65,7 +65,7 @@ public class Config { private static final BuildSystemPlugin PLUGIN = BuildSystemPlugin.get(); - private static final FileConfiguration CONFIG = PLUGIN.getConfig(); + private static FileConfiguration CONFIG = PLUGIN.getConfig(); /** * Gets the plugin's configuration. @@ -440,6 +440,7 @@ public static class Folder { * Loads the configuration values from the plugin's config.yml into the static fields. */ public static void load() { + CONFIG = PLUGIN.getConfig(); final Logger logger = PLUGIN.getLogger(); // Messages diff --git a/buildsystem-core/src/main/java/de/eintosti/buildsystem/world/backup/BackupService.java b/buildsystem-core/src/main/java/de/eintosti/buildsystem/world/backup/BackupService.java index 8257c11f..3f8b1b28 100644 --- a/buildsystem-core/src/main/java/de/eintosti/buildsystem/world/backup/BackupService.java +++ b/buildsystem-core/src/main/java/de/eintosti/buildsystem/world/backup/BackupService.java @@ -28,7 +28,9 @@ import java.util.logging.Level; import org.bukkit.Bukkit; import org.bukkit.entity.Player; +import org.bukkit.scheduler.BukkitTask; import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; @NullMarked public class BackupService { @@ -42,13 +44,31 @@ public class BackupService { private final Cache backupProfileCache = CacheBuilder.newBuilder().expireAfterAccess(3, TimeUnit.MINUTES).build(); + @Nullable + private BukkitTask autoBackupTask; + public BackupService(BuildSystemPlugin plugin) { this.plugin = plugin; this.backupStorage = Backup.storage; this.worldStorage = plugin.getWorldService().getWorldStorage(); if (AutoBackup.enabled) { - Bukkit.getScheduler().runTaskTimer(plugin, this::incrementTimeSinceBackup, UPDATE_PERIOD * 20, UPDATE_PERIOD * 20); + this.autoBackupTask = Bukkit.getScheduler().runTaskTimer(plugin, this::incrementTimeSinceBackup, UPDATE_PERIOD * 20, UPDATE_PERIOD * 20); + } + } + + /** + * Reloads the auto-backup scheduler based on the current {@link AutoBackup} configuration. + * If auto-backup was previously running and is now disabled, the task is cancelled. + * If auto-backup was not running and is now enabled, a new task is started. + */ + public void reload() { + if (autoBackupTask != null) { + autoBackupTask.cancel(); + autoBackupTask = null; + } + if (AutoBackup.enabled) { + this.autoBackupTask = Bukkit.getScheduler().runTaskTimer(plugin, this::incrementTimeSinceBackup, UPDATE_PERIOD * 20, UPDATE_PERIOD * 20); } } From c9e31b995120a3d23f35e3ae2b40d627c12402f8 Mon Sep 17 00:00:00 2001 From: TWME <65117253+TWME-TW@users.noreply.github.com> Date: Sun, 15 Mar 2026 16:59:46 +0800 Subject: [PATCH 2/3] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- .../main/java/de/eintosti/buildsystem/BuildSystemPlugin.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/buildsystem-core/src/main/java/de/eintosti/buildsystem/BuildSystemPlugin.java b/buildsystem-core/src/main/java/de/eintosti/buildsystem/BuildSystemPlugin.java index 0f6a12c3..e97702c8 100644 --- a/buildsystem-core/src/main/java/de/eintosti/buildsystem/BuildSystemPlugin.java +++ b/buildsystem-core/src/main/java/de/eintosti/buildsystem/BuildSystemPlugin.java @@ -407,7 +407,9 @@ public void reloadConfigData(boolean init) { reloadConfig(); Config.load(); - backupService.reload(); + if (isEnabled()) { + backupService.reload(); + } if (init) { worldService.getWorldStorage().getBuildWorlds().forEach(buildWorld -> buildWorld.getUnloader().manageUnload()); From 04d75a1d805442f04e638afe6e14b411d325e62b Mon Sep 17 00:00:00 2001 From: TWME <65117253+TWME-TW@users.noreply.github.com> Date: Sun, 15 Mar 2026 17:08:52 +0800 Subject: [PATCH 3/3] refactor(backup): reorganize import statements and enhance auto backup condition --- .../world/backup/BackupService.java | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/buildsystem-core/src/main/java/de/eintosti/buildsystem/world/backup/BackupService.java b/buildsystem-core/src/main/java/de/eintosti/buildsystem/world/backup/BackupService.java index 3f8b1b28..cff29d9d 100644 --- a/buildsystem-core/src/main/java/de/eintosti/buildsystem/world/backup/BackupService.java +++ b/buildsystem-core/src/main/java/de/eintosti/buildsystem/world/backup/BackupService.java @@ -7,16 +7,6 @@ */ package de.eintosti.buildsystem.world.backup; -import com.google.common.cache.Cache; -import com.google.common.cache.CacheBuilder; -import de.eintosti.buildsystem.BuildSystemPlugin; -import de.eintosti.buildsystem.api.data.Type; -import de.eintosti.buildsystem.api.storage.WorldStorage; -import de.eintosti.buildsystem.api.world.BuildWorld; -import de.eintosti.buildsystem.api.world.backup.BackupProfile; -import de.eintosti.buildsystem.api.world.backup.BackupStorage; -import de.eintosti.buildsystem.config.Config.World.Backup; -import de.eintosti.buildsystem.config.Config.World.Backup.AutoBackup; import java.time.Duration; import java.util.HashSet; import java.util.Set; @@ -26,12 +16,25 @@ import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; import java.util.logging.Level; + import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitTask; import org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; +import com.google.common.cache.Cache; +import com.google.common.cache.CacheBuilder; + +import de.eintosti.buildsystem.BuildSystemPlugin; +import de.eintosti.buildsystem.api.data.Type; +import de.eintosti.buildsystem.api.storage.WorldStorage; +import de.eintosti.buildsystem.api.world.BuildWorld; +import de.eintosti.buildsystem.api.world.backup.BackupProfile; +import de.eintosti.buildsystem.api.world.backup.BackupStorage; +import de.eintosti.buildsystem.config.Config.World.Backup; +import de.eintosti.buildsystem.config.Config.World.Backup.AutoBackup; + @NullMarked public class BackupService { @@ -67,7 +70,7 @@ public void reload() { autoBackupTask.cancel(); autoBackupTask = null; } - if (AutoBackup.enabled) { + if (AutoBackup.enabled && plugin.isEnabled()) { this.autoBackupTask = Bukkit.getScheduler().runTaskTimer(plugin, this::incrementTimeSinceBackup, UPDATE_PERIOD * 20, UPDATE_PERIOD * 20); } }