Fix BauServer Performance

This commit is contained in:
2025-10-03 09:13:32 +02:00
parent 566a7deee3
commit 88cc06560e
4 changed files with 20 additions and 9 deletions
@@ -183,11 +183,6 @@ public class RegionListener implements Listener {
private static void tagChangedRegion(final Location location) {
new BukkitRunnable() {
@Override
public void run() {
Region.getRegion(location).getFlags().set(Flag.CHANGED, ChangedMode.HAS_CHANGE);
}
}.runTaskAsynchronously(BauSystem.getInstance());
Region.getRegion(location).getFlags().set(Flag.CHANGED, ChangedMode.HAS_CHANGE);
}
}
@@ -29,6 +29,9 @@ public interface FlagStorage {
@NonNull
<T extends Enum<T> & Flag.Value<T>> RegionFlagPolicy has(@NonNull Flag<T> flag);
/**
* Returns true if the flag was changed and did not already contain the provided value
*/
<T extends Enum<T> & Flag.Value<T>> boolean set(@NonNull Flag<T> flag, @NonNull T value);
@NonNull
@@ -66,9 +66,12 @@ public class FixedFlagStorage implements FlagStorage {
@Override
public <T extends Enum<T> & Flag.Value<T>> boolean set(@NonNull Flag<T> flag, @NonNull T value) {
if (has(flag).isWritable()) {
data.put(flag.name(), value.name());
WorldData.write();
return flagMap.put(flag, value) != value;
boolean hasChanged = flagMap.put(flag, value) != value;
if (hasChanged) {
data.put(flag.name(), value.name());
WorldData.write();
}
return hasChanged;
} else {
return false;
}