Improve API of RegionDataStore, RegionBackups.Backup

This commit is contained in:
2026-03-01 14:05:33 +01:00
parent 92630f4e10
commit 327ea9351a
8 changed files with 38 additions and 37 deletions
@@ -38,7 +38,6 @@ import de.steamwar.bausystem.utils.TickManager;
import de.steamwar.bausystem.worlddata.WorldData; import de.steamwar.bausystem.worlddata.WorldData;
import de.steamwar.command.AbstractValidator; import de.steamwar.command.AbstractValidator;
import de.steamwar.command.SWCommandUtils; import de.steamwar.command.SWCommandUtils;
import de.steamwar.core.CRIUSleepEvent;
import de.steamwar.core.Core; import de.steamwar.core.Core;
import de.steamwar.core.WorldEditRendererCUIEditor; import de.steamwar.core.WorldEditRendererCUIEditor;
import de.steamwar.core.WorldIdentifier; import de.steamwar.core.WorldIdentifier;
@@ -51,8 +50,6 @@ import org.bukkit.Bukkit;
import org.bukkit.GameRule; import org.bukkit.GameRule;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.plugin.Plugin; import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitRunnable;
@@ -65,7 +62,7 @@ import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Consumer; import java.util.function.Consumer;
import java.util.logging.Level; import java.util.logging.Level;
public class BauSystem extends JavaPlugin implements Listener { public class BauSystem extends JavaPlugin {
// This should be treated as final! // This should be treated as final!
public static Message MESSAGE; public static Message MESSAGE;
@@ -137,10 +134,6 @@ public class BauSystem extends JavaPlugin implements Listener {
WorldIdentifier.set("bau/" + Core.getVersion() + "/" + identifier); WorldIdentifier.set("bau/" + Core.getVersion() + "/" + identifier);
} }
@EventHandler
public void onCRIUSleep(CRIUSleepEvent event) {
}
@Override @Override
public void onDisable() { public void onDisable() {
linker.unlink(); linker.unlink();
@@ -54,14 +54,16 @@ public interface RegionBackups {
@CheckReturnValue @CheckReturnValue
public abstract boolean load(); public abstract boolean load();
public abstract void delete();
public abstract long getCreationTime(); public abstract long getCreationTime();
@Override @Override
public int compareTo(Backup o) { public int compareTo(Backup o) {
return Long.compare(getCreationTime(), o.getCreationTime()); return Long.compare(getCreationTime(), o.getCreationTime());
} }
@SuppressWarnings("java:S3038") // This forces everybody to implement 'deleteRegion' for Backups!
@Override
public abstract void deleteRegion();
} }
@CheckReturnValue @CheckReturnValue
@@ -41,12 +41,12 @@ public abstract class RegionData {
protected RegionData(RegionDataStore store) { protected RegionData(RegionDataStore store) {
this.store = store; this.store = store;
initialize(); initialize();
store.loadRegionData(this); store.loadRegion();
} }
public final void setStore(RegionDataStore store) { public final void setStore(RegionDataStore store) {
this.store = store; this.store = store;
store.saveRegionData(this); store.saveRegion();
} }
protected void initialize() { protected void initialize() {
@@ -61,7 +61,7 @@ public abstract class RegionData {
public final <T extends Enum<T> & Flag.Value<T>> boolean set(@NonNull Flag<T> flag, @NonNull T value) { public final <T extends Enum<T> & Flag.Value<T>> boolean set(@NonNull Flag<T> flag, @NonNull T value) {
if (has(flag).isWritable()) { if (has(flag).isWritable()) {
if (flagMap.put(flag, value) != value) { if (flagMap.put(flag, value) != value) {
store.saveRegionData(this); store.saveRegion();
return true; return true;
} }
} }
@@ -80,7 +80,7 @@ public abstract class RegionData {
} }
} }
properties.forEach(property -> property.set(null)); properties.forEach(property -> property.set(null));
store.saveRegionData(this); store.saveRegion();
} }
public final Map<Flag<?>, Flag.Value<?>> getBackedMap() { public final Map<Flag<?>, Flag.Value<?>> getBackedMap() {
@@ -97,7 +97,7 @@ public abstract class RegionData {
public final void setTestblockSchematic(SchematicNode schematic) { public final void setTestblockSchematic(SchematicNode schematic) {
testblockSchematic.set(schematic); testblockSchematic.set(schematic);
store.saveRegionData(this); store.saveRegion();
} }
@Override @Override
@@ -19,9 +19,9 @@
package de.steamwar.bausystem.region; package de.steamwar.bausystem.region;
import lombok.NonNull;
public interface RegionDataStore { public interface RegionDataStore {
void saveRegionData(@NonNull RegionData regionData); void saveRegion();
void loadRegionData(@NonNull RegionData regionData); void loadRegion();
default void deleteRegion() {
}
} }
@@ -34,6 +34,9 @@ public abstract class DynamicRegion implements Region {
protected final int minX; protected final int minX;
protected final int minZ; protected final int minZ;
@Getter
protected RegionData regionData = null;
protected DynamicRegion(UUID id, int minX, int minZ) { protected DynamicRegion(UUID id, int minX, int minZ) {
this.id = id; this.id = id;
this.minX = minX; this.minX = minX;
@@ -45,7 +48,10 @@ public abstract class DynamicRegion implements Region {
public void update(DynamicRegion updateFrom) { public void update(DynamicRegion updateFrom) {
} }
public abstract void setRegionData(@NonNull RegionData regionData); public void setRegionData(@NonNull RegionData regionData) {
regionData.setStore(this);
this.regionData = regionData;
}
public void delete() { public void delete() {
if (getType().isCannotDelete()) return; if (getType().isCannotDelete()) return;
@@ -134,12 +134,12 @@ public class GlobalRegion implements Region {
} }
@Override @Override
public void saveRegionData(@NonNull RegionData regionData) { public void saveRegion() {
} }
@Override @Override
public void loadRegionData(@NonNull RegionData regionData) { public void loadRegion() {
} }
} }
@@ -142,12 +142,12 @@ public final class FixedGlobalRegion implements Region {
} }
@Override @Override
public void saveRegionData(@NonNull RegionData regionData) { public void saveRegion() {
FixedRegionDataUtils.saveRegionData("global", regionData); FixedRegionDataUtils.saveRegionData("global", FLAG_STORAGE);
} }
@Override @Override
public void loadRegionData(@NonNull RegionData regionData) { public void loadRegion() {
FixedRegionDataUtils.loadRegionData("global", regionData); FixedRegionDataUtils.loadRegionData("global", FLAG_STORAGE);
} }
} }
@@ -133,22 +133,22 @@ public class FixedRegion implements Region {
return true; return true;
} }
@Override
public void delete() {
file.delete();
}
@Override @Override
public long getCreationTime() { public long getCreationTime() {
return file.lastModified(); return file.lastModified();
} }
@Override @Override
public void saveRegionData(@NonNull RegionData regionData) { public void saveRegion() {
} }
@Override @Override
public void loadRegionData(@NonNull RegionData regionData) { public void loadRegion() {
}
@Override
public void deleteRegion() {
file.delete();
} }
} }
@@ -402,12 +402,12 @@ public class FixedRegion implements Region {
} }
@Override @Override
public void saveRegionData(@NonNull RegionData regionData) { public void saveRegion() {
FixedRegionDataUtils.saveRegionData(name, regionData); FixedRegionDataUtils.saveRegionData(name, flagStorage);
} }
@Override @Override
public void loadRegionData(@NonNull RegionData regionData) { public void loadRegion() {
FixedRegionDataUtils.loadRegionData(name, regionData); FixedRegionDataUtils.loadRegionData(name, flagStorage);
} }
} }