Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -407,6 +407,9 @@ public void reloadConfigData(boolean init) {

reloadConfig();
Config.load();
if (isEnabled()) {
backupService.reload();
}

if (init) {
worldService.getWorldStorage().getBuildWorlds().forEach(buildWorld -> buildWorld.getUnloader().manageUnload());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -26,9 +16,24 @@
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 {
Expand All @@ -42,13 +47,31 @@ public class BackupService {

private final Cache<UUID, BackupProfile> 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 && plugin.isEnabled()) {
this.autoBackupTask = Bukkit.getScheduler().runTaskTimer(plugin, this::incrementTimeSinceBackup, UPDATE_PERIOD * 20, UPDATE_PERIOD * 20);
}
}

Expand Down