From 3062621233e70fb72ebc0bb2e003bc9bc4fa53c2 Mon Sep 17 00:00:00 2001 From: YoyoNow Date: Thu, 18 Dec 2025 18:09:15 +0100 Subject: [PATCH] Start rebuilt --- .../de/steamwar/bausystem/region/Region.java | 8 + .../bausystem/region/RegionSystem.java | 2 + .../bausystem/region/DynamicRegionSystem.java | 117 ++++++------- .../bausystem/region/RegionConstructor.java | 26 +++ .../bausystem/region/dynamic/Tile.java | 92 ++++++++++ .../BauSystem_RegionDynamic2/build.gradle.kts | 46 +++++ .../region/DynamicRegionCommand.java | 0 .../bausystem/region/DynamicRegionSystem.java | 158 ++++++++++++++++++ .../region/dynamic/DefaultFlagStorage.java | 0 .../region/dynamic/DefaultRegionData.java | 30 ++++ .../region/dynamic/DynamicRegion.java | 0 .../region/dynamic/MovementListener.java | 0 .../region/dynamic/NonNormalFlagStorage.java | 0 .../region/dynamic/RegionConstructorData.java | 0 .../region/dynamic/RegionDataRepository.java | 0 .../bausystem/region/dynamic/TileUtils.java | 0 .../region/dynamic/VariantSelector.java | 0 .../region/dynamic/global/GlobalRegion.java | 5 +- .../region/dynamic/normal/DisplayRegion.java | 0 .../region/dynamic/normal/NormalArea.java | 0 .../dynamic/normal/NormalFlagStorage.java | 0 .../region/dynamic/normal/WorkRegion.java | 0 .../display/MicroWarGear21DisplayRegion.java | 0 .../display/MiniWarGear21DisplayRegion.java | 0 .../display/WarGear21DisplayRegion.java | 0 .../display/WarShip21DisplayRegion.java | 0 .../normal/work/MicroWarGear21WorkRegion.java | 0 .../normal/work/MiniWarGear21WorkRegion.java | 0 .../normal/work/WarGear21WorkRegion.java | 0 .../normal/work/WarShip21WorkRegion.java | 0 .../region/dynamic/path/PathAreaTile.java | 0 .../region/dynamic/path/PathRegion.java | 0 .../region/dynamic/spawn/SpawnAreaTile.java | 0 .../region/dynamic/spawn/SpawnPathRegion.java | 0 .../region/dynamic/spawn/SpawnRegion.java | 0 .../region/dynamic/spawn/SpawnResetter.java | 0 .../dynamic/special/DrySpecialRegion.java | 0 .../dynamic/special/SpecialAreaTile.java | 0 .../dynamic/special/SpecialFlagStorage.java | 0 .../region/dynamic/special/SpecialRegion.java | 0 .../dynamic/special/WetSpecialRegion.java | 0 .../region/fixed/FixedGlobalRegion.java | 4 +- settings.gradle.kts | 1 + 43 files changed, 415 insertions(+), 74 deletions(-) create mode 100644 BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/RegionConstructor.java create mode 100644 BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/Tile.java create mode 100644 BauSystem/BauSystem_RegionDynamic2/build.gradle.kts rename BauSystem/{BauSystem_RegionDynamic => BauSystem_RegionDynamic2}/src/de/steamwar/bausystem/region/DynamicRegionCommand.java (100%) create mode 100644 BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/DynamicRegionSystem.java rename BauSystem/{BauSystem_RegionDynamic => BauSystem_RegionDynamic2}/src/de/steamwar/bausystem/region/dynamic/DefaultFlagStorage.java (100%) create mode 100644 BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/DefaultRegionData.java rename BauSystem/{BauSystem_RegionDynamic => BauSystem_RegionDynamic2}/src/de/steamwar/bausystem/region/dynamic/DynamicRegion.java (100%) rename BauSystem/{BauSystem_RegionDynamic => BauSystem_RegionDynamic2}/src/de/steamwar/bausystem/region/dynamic/MovementListener.java (100%) rename BauSystem/{BauSystem_RegionDynamic => BauSystem_RegionDynamic2}/src/de/steamwar/bausystem/region/dynamic/NonNormalFlagStorage.java (100%) rename BauSystem/{BauSystem_RegionDynamic => BauSystem_RegionDynamic2}/src/de/steamwar/bausystem/region/dynamic/RegionConstructorData.java (100%) rename BauSystem/{BauSystem_RegionDynamic => BauSystem_RegionDynamic2}/src/de/steamwar/bausystem/region/dynamic/RegionDataRepository.java (100%) rename BauSystem/{BauSystem_RegionDynamic => BauSystem_RegionDynamic2}/src/de/steamwar/bausystem/region/dynamic/TileUtils.java (100%) rename BauSystem/{BauSystem_RegionDynamic => BauSystem_RegionDynamic2}/src/de/steamwar/bausystem/region/dynamic/VariantSelector.java (100%) rename BauSystem/{BauSystem_RegionDynamic => BauSystem_RegionDynamic2}/src/de/steamwar/bausystem/region/dynamic/global/GlobalRegion.java (97%) rename BauSystem/{BauSystem_RegionDynamic => BauSystem_RegionDynamic2}/src/de/steamwar/bausystem/region/dynamic/normal/DisplayRegion.java (100%) rename BauSystem/{BauSystem_RegionDynamic => BauSystem_RegionDynamic2}/src/de/steamwar/bausystem/region/dynamic/normal/NormalArea.java (100%) rename BauSystem/{BauSystem_RegionDynamic => BauSystem_RegionDynamic2}/src/de/steamwar/bausystem/region/dynamic/normal/NormalFlagStorage.java (100%) rename BauSystem/{BauSystem_RegionDynamic => BauSystem_RegionDynamic2}/src/de/steamwar/bausystem/region/dynamic/normal/WorkRegion.java (100%) rename BauSystem/{BauSystem_RegionDynamic => BauSystem_RegionDynamic2}/src/de/steamwar/bausystem/region/dynamic/normal/display/MicroWarGear21DisplayRegion.java (100%) rename BauSystem/{BauSystem_RegionDynamic => BauSystem_RegionDynamic2}/src/de/steamwar/bausystem/region/dynamic/normal/display/MiniWarGear21DisplayRegion.java (100%) rename BauSystem/{BauSystem_RegionDynamic => BauSystem_RegionDynamic2}/src/de/steamwar/bausystem/region/dynamic/normal/display/WarGear21DisplayRegion.java (100%) rename BauSystem/{BauSystem_RegionDynamic => BauSystem_RegionDynamic2}/src/de/steamwar/bausystem/region/dynamic/normal/display/WarShip21DisplayRegion.java (100%) rename BauSystem/{BauSystem_RegionDynamic => BauSystem_RegionDynamic2}/src/de/steamwar/bausystem/region/dynamic/normal/work/MicroWarGear21WorkRegion.java (100%) rename BauSystem/{BauSystem_RegionDynamic => BauSystem_RegionDynamic2}/src/de/steamwar/bausystem/region/dynamic/normal/work/MiniWarGear21WorkRegion.java (100%) rename BauSystem/{BauSystem_RegionDynamic => BauSystem_RegionDynamic2}/src/de/steamwar/bausystem/region/dynamic/normal/work/WarGear21WorkRegion.java (100%) rename BauSystem/{BauSystem_RegionDynamic => BauSystem_RegionDynamic2}/src/de/steamwar/bausystem/region/dynamic/normal/work/WarShip21WorkRegion.java (100%) rename BauSystem/{BauSystem_RegionDynamic => BauSystem_RegionDynamic2}/src/de/steamwar/bausystem/region/dynamic/path/PathAreaTile.java (100%) rename BauSystem/{BauSystem_RegionDynamic => BauSystem_RegionDynamic2}/src/de/steamwar/bausystem/region/dynamic/path/PathRegion.java (100%) rename BauSystem/{BauSystem_RegionDynamic => BauSystem_RegionDynamic2}/src/de/steamwar/bausystem/region/dynamic/spawn/SpawnAreaTile.java (100%) rename BauSystem/{BauSystem_RegionDynamic => BauSystem_RegionDynamic2}/src/de/steamwar/bausystem/region/dynamic/spawn/SpawnPathRegion.java (100%) rename BauSystem/{BauSystem_RegionDynamic => BauSystem_RegionDynamic2}/src/de/steamwar/bausystem/region/dynamic/spawn/SpawnRegion.java (100%) rename BauSystem/{BauSystem_RegionDynamic => BauSystem_RegionDynamic2}/src/de/steamwar/bausystem/region/dynamic/spawn/SpawnResetter.java (100%) rename BauSystem/{BauSystem_RegionDynamic => BauSystem_RegionDynamic2}/src/de/steamwar/bausystem/region/dynamic/special/DrySpecialRegion.java (100%) rename BauSystem/{BauSystem_RegionDynamic => BauSystem_RegionDynamic2}/src/de/steamwar/bausystem/region/dynamic/special/SpecialAreaTile.java (100%) rename BauSystem/{BauSystem_RegionDynamic => BauSystem_RegionDynamic2}/src/de/steamwar/bausystem/region/dynamic/special/SpecialFlagStorage.java (100%) rename BauSystem/{BauSystem_RegionDynamic => BauSystem_RegionDynamic2}/src/de/steamwar/bausystem/region/dynamic/special/SpecialRegion.java (100%) rename BauSystem/{BauSystem_RegionDynamic => BauSystem_RegionDynamic2}/src/de/steamwar/bausystem/region/dynamic/special/WetSpecialRegion.java (100%) diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/region/Region.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/region/Region.java index 84a4a7e1..b4cf6302 100644 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/region/Region.java +++ b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/region/Region.java @@ -154,6 +154,14 @@ public interface Region { return true; } + default boolean inRegion(int x, int z, boolean extension) { + Point minPoint = getMinPoint(extension); + Point maxPoint = getMaxPoint(extension); + if (x < minPoint.getX() || x > maxPoint.getX()) return false; + if (z < minPoint.getZ() || z > maxPoint.getZ()) return false; + return true; + } + @Nullable default Clipboard copy(boolean extension) { return FlatteningWrapper.impl.copy(getMinPoint(extension), getMaxPoint(extension), getCopyPoint()); diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/region/RegionSystem.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/region/RegionSystem.java index 77fd02e6..5a2b2b5e 100644 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/region/RegionSystem.java +++ b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/region/RegionSystem.java @@ -32,6 +32,8 @@ public interface RegionSystem { RegionSystem INSTANCE = init(); + UUID GLOBAL_REGION_ID = new UUID(0, 0); + /** * Loads and initializes the Regions and anything that should be loaded on startup. */ diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/DynamicRegionSystem.java b/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/DynamicRegionSystem.java index f33fe915..038af844 100644 --- a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/DynamicRegionSystem.java +++ b/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/DynamicRegionSystem.java @@ -19,22 +19,13 @@ package de.steamwar.bausystem.region; -import de.steamwar.bausystem.BauSystem; -import de.steamwar.bausystem.region.dynamic.DynamicRegion; -import de.steamwar.bausystem.region.dynamic.MovementListener; -import de.steamwar.bausystem.region.dynamic.RegionDataRepository; -import de.steamwar.bausystem.region.dynamic.global.GlobalRegion; -import de.steamwar.bausystem.region.dynamic.path.PathRegion; -import de.steamwar.bausystem.region.dynamic.spawn.SpawnPathRegion; -import de.steamwar.bausystem.region.dynamic.spawn.SpawnRegion; -import de.steamwar.bausystem.region.dynamic.spawn.SpawnResetter; +import de.steamwar.bausystem.region.dynamic.Tile; import lombok.NonNull; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.World; import java.util.*; -import java.util.stream.Collectors; import java.util.stream.Stream; public class DynamicRegionSystem implements RegionSystem { @@ -42,67 +33,55 @@ public class DynamicRegionSystem implements RegionSystem { public static DynamicRegionSystem INSTANCE; private static final World WORLD = Bukkit.getWorlds().get(0); - private static Map regionMap = new HashMap<>(); + private static final Map regionCache = new LinkedHashMap<>(16, 0.75f, true) { + @Override + protected boolean removeEldestEntry(Map.Entry eldest) { + return size() > 8192; // Tweak this number if needed! + } + }; // Will be cleared on region add/delete/remove! + private static final Map regionMap = new HashMap<>(); + private static final Map> regionTypeMap = new EnumMap<>(RegionType.class); @Override public void load() { INSTANCE = this; - - new DynamicRegionCommand(); - RegionDataRepository.loadRegions(); - Bukkit.getPluginManager().registerEvents(new MovementListener(), BauSystem.getInstance()); - - if (regionMap.isEmpty()) { // TODO: Implement this in default region! - new SpawnRegion(-9, -9); - new SpawnPathRegion(-9, -28); - new SpawnPathRegion(-9, 10); - new SpawnPathRegion(-28, -9); - new SpawnPathRegion(10, -9); - - new PathRegion(-28, -28); - new PathRegion(-28, 10); - new PathRegion(10, -28); - new PathRegion(10, 10); - } - } - - public void add(DynamicRegion region) { - regionMap.put(region.getID(), region); - } - - public void delete(DynamicRegion region) { - regionMap.remove(region.getID()); } @Override public void save() { + } @Override public @NonNull Location getWorldSpawn() { - if (SpawnResetter.isBigSpawn()) { - return SpawnResetter.BIG_WORLD_SPAWN; - } else { - return SpawnResetter.SMALL_WORLD_SPAWN; - } + return null; } @Override public @NonNull Region getGlobalRegion() { - return GlobalRegion.INSTANCE; + return null; } - // TODO: Optimize later on! - private Region get(Location location, Collection regions) { - return regions.stream() - .filter(region -> region.getArea().inRegion(location, false)) + private Region get(int x, int z, boolean fastCache, Collection regions) { + Tile tile = Tile.fromXZ(x, z).orElse(null); + if (tile == null) { + return getGlobalRegion(); + } + if (regionCache.containsKey(tile.getId())) { + Region region = regionCache.get(tile.getId()); + if (fastCache || regions.contains(region)) return region; + } + Region region = regions.stream() + .filter(rg -> rg.getArea().inRegion(x, z, false)) .findFirst() - .orElse(GlobalRegion.INSTANCE); + .orElseGet(this::getGlobalRegion); + regionCache.put(tile.getId(), region); + return region; } @Override public @NonNull Region get(@NonNull Location location) { - return get(location, regionMap.values()); + return get(location.getBlockX(), location.getBlockZ(), true, regionMap.values()); } @Override @@ -115,44 +94,46 @@ public class DynamicRegionSystem implements RegionSystem { return regionMap.values().stream(); } - private Stream getNeighbours(Region region, boolean noCorners, Collection regions) { + private Stream getNeighbours(Region region, boolean noCorners, boolean fastCache, Collection regions) { Point minPoint = region.getArea().getMinPoint(false).subtract(18, 0, 18); Point maxPoint = region.getArea().getMaxPoint(false).add(19, 0, 19); Set neighbours = new HashSet<>(); + for (int x = minPoint.getX() + (noCorners ? 18 : 0); x <= maxPoint.getX() - (noCorners ? 19 : 0); x += 19) { int minZ = minPoint.getZ(); int maxZ = maxPoint.getZ(); - neighbours.add(get(new Location(WORLD, x, 0, minZ), regions)); - neighbours.add(get(new Location(WORLD, x, 0, maxZ), regions)); + neighbours.add(get(x, minZ, fastCache, regions)); + neighbours.add(get(x, maxZ, fastCache, regions)); } + for (int z = minPoint.getZ() + 18; z <= maxPoint.getZ() - 19; z += 19) { int minX = minPoint.getX(); int maxX = maxPoint.getX(); - neighbours.add(get(new Location(WORLD, minX, 0, z), regions)); - neighbours.add(get(new Location(WORLD, maxX, 0, z), regions)); + neighbours.add(get(minX, z, fastCache, regions)); + neighbours.add(get(maxX, z, fastCache, regions)); } - neighbours.remove(GlobalRegion.INSTANCE); - return ((Set) (Set) neighbours).stream(); + + neighbours.remove(getGlobalRegion()); + return neighbours.stream(); } - public Stream getNeighbours(Region region) { - return getNeighbours(region, false, regionMap.values()); + public Stream getNeighbours(Region region) { + return getNeighbours(region, false, true, regionMap.values()); } - public Stream getConnectedRegions(DynamicRegion region) { - Set regions = regionMap.values() - .stream() - .filter(r -> r.getType() == region.getType()) - .collect(Collectors.toSet()); + public Stream getConnectedRegions(Region region) { + Set regions = regionTypeMap.get(region.getType()); - Set connectedRegions = new HashSet<>(); - LinkedHashSet current = new LinkedHashSet<>(); + Set connected = new HashSet<>(); + LinkedHashSet current = new LinkedHashSet<>(); current.add(region); + while (!current.isEmpty()) { - DynamicRegion r = current.removeFirst(); - if (!connectedRegions.add(r)) continue; - getNeighbours(r, true, regions).forEach(current::add); + Region r = current.removeFirst(); + if (!connected.add(r)) continue; + getNeighbours(r, true, false, regions).forEach(current::add); } - return connectedRegions.stream(); + + return connected.stream(); } } diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/RegionConstructor.java b/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/RegionConstructor.java new file mode 100644 index 00000000..2c0a2953 --- /dev/null +++ b/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/RegionConstructor.java @@ -0,0 +1,26 @@ +/* + * This file is a part of the SteamWar software. + * + * Copyright (C) 2025 SteamWar.de-Serverteam + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package de.steamwar.bausystem.region; + +public abstract class RegionConstructor { + public abstract int getWidthX(); + public abstract int getWidthZ(); + public abstract T create(int tileX, int tileZ); +} diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/Tile.java b/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/Tile.java new file mode 100644 index 00000000..a751a45c --- /dev/null +++ b/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/Tile.java @@ -0,0 +1,92 @@ +/* + * This file is a part of the SteamWar software. + * + * Copyright (C) 2025 SteamWar.de-Serverteam + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package de.steamwar.bausystem.region.dynamic; + +import org.bukkit.Location; + +import java.util.Optional; + +public class Tile { + + public static final int tileSize = 19; + public static final int maxTile = 1023; + public static final int minTile = -maxTile; + public static final int tilesPerAxis = maxTile * 2 + 1; + + private final int tileX; + private final int tileZ; + + private Tile(int tileX, int tileZ) { + this.tileX = tileX; + this.tileZ = tileZ; + } + + public static Optional fromTile(int tileX, int tileZ) { + if (tileX < minTile || tileZ < minTile) return Optional.empty(); + if (tileX > maxTile || tileZ > maxTile) return Optional.empty(); + return Optional.of(new Tile(tileX, tileZ)); + } + + public static Optional fromLocation(Location location) { + return fromXZ(location.getBlockX(), location.getBlockZ()); + } + + public static Optional fromXZ(int x, int z) { + x = (int) Math.floor((x + 9) / (double) tileSize); + z = (int) Math.floor((z + 9) / (double) tileSize); + return fromTile(x, z); + } + + public static int getMinX(int tileX) { + return tileX * tileSize - 9; + } + + public int getMinX() { + return getMinX(tileX); + } + + public static int getMinZ(int tileZ) { + return tileZ * tileSize - 9; + } + + public int getMinZ() { + return getMinZ(tileZ); + } + + public static Location getMinLocation(int tileX, int tileZ) { + return new Location(null, getMinX(tileX), 0, getMinZ(tileZ)); + } + + public Location getMinLocation() { + return getMinLocation(tileX, tileZ); + } + + public Optional add(int offsetX, int offsetZ) { + return fromTile(tileX + offsetX, tileZ + offsetZ); + } + + public static long getID(int tileX, int tileZ) { + return (tileX + maxTile) * tilesPerAxis + tileZ + maxTile; + } + + public long getId() { + return getID(tileX, tileZ); + } +} diff --git a/BauSystem/BauSystem_RegionDynamic2/build.gradle.kts b/BauSystem/BauSystem_RegionDynamic2/build.gradle.kts new file mode 100644 index 00000000..26348a9e --- /dev/null +++ b/BauSystem/BauSystem_RegionDynamic2/build.gradle.kts @@ -0,0 +1,46 @@ +/* + * This file is a part of the SteamWar software. + * + * Copyright (C) 2024 SteamWar.de-Serverteam + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +plugins { + steamwar.java +} + +tasks.compileJava { + options.isWarnings = false +} + +java { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 +} + +dependencies { + compileOnly(project(":BauSystem:BauSystem_Main", "default")) + compileOnly(project(":SpigotCore", "default")) + + compileOnly(libs.spigotapi) + compileOnly(libs.axiom) + compileOnly(libs.authlib) + compileOnly(libs.viaapi) + + compileOnly(libs.nms20) + compileOnly(libs.fawe18) + + implementation(libs.luaj) +} diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/DynamicRegionCommand.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/DynamicRegionCommand.java similarity index 100% rename from BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/DynamicRegionCommand.java rename to BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/DynamicRegionCommand.java diff --git a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/DynamicRegionSystem.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/DynamicRegionSystem.java new file mode 100644 index 00000000..f33fe915 --- /dev/null +++ b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/DynamicRegionSystem.java @@ -0,0 +1,158 @@ +/* + * This file is a part of the SteamWar software. + * + * Copyright (C) 2020 SteamWar.de-Serverteam + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package de.steamwar.bausystem.region; + +import de.steamwar.bausystem.BauSystem; +import de.steamwar.bausystem.region.dynamic.DynamicRegion; +import de.steamwar.bausystem.region.dynamic.MovementListener; +import de.steamwar.bausystem.region.dynamic.RegionDataRepository; +import de.steamwar.bausystem.region.dynamic.global.GlobalRegion; +import de.steamwar.bausystem.region.dynamic.path.PathRegion; +import de.steamwar.bausystem.region.dynamic.spawn.SpawnPathRegion; +import de.steamwar.bausystem.region.dynamic.spawn.SpawnRegion; +import de.steamwar.bausystem.region.dynamic.spawn.SpawnResetter; +import lombok.NonNull; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.World; + +import java.util.*; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +public class DynamicRegionSystem implements RegionSystem { + + public static DynamicRegionSystem INSTANCE; + private static final World WORLD = Bukkit.getWorlds().get(0); + + private static Map regionMap = new HashMap<>(); + + @Override + public void load() { + INSTANCE = this; + + new DynamicRegionCommand(); + RegionDataRepository.loadRegions(); + Bukkit.getPluginManager().registerEvents(new MovementListener(), BauSystem.getInstance()); + + if (regionMap.isEmpty()) { // TODO: Implement this in default region! + new SpawnRegion(-9, -9); + new SpawnPathRegion(-9, -28); + new SpawnPathRegion(-9, 10); + new SpawnPathRegion(-28, -9); + new SpawnPathRegion(10, -9); + + new PathRegion(-28, -28); + new PathRegion(-28, 10); + new PathRegion(10, -28); + new PathRegion(10, 10); + } + } + + public void add(DynamicRegion region) { + regionMap.put(region.getID(), region); + } + + public void delete(DynamicRegion region) { + regionMap.remove(region.getID()); + } + + @Override + public void save() { + } + + @Override + public @NonNull Location getWorldSpawn() { + if (SpawnResetter.isBigSpawn()) { + return SpawnResetter.BIG_WORLD_SPAWN; + } else { + return SpawnResetter.SMALL_WORLD_SPAWN; + } + } + + @Override + public @NonNull Region getGlobalRegion() { + return GlobalRegion.INSTANCE; + } + + // TODO: Optimize later on! + private Region get(Location location, Collection regions) { + return regions.stream() + .filter(region -> region.getArea().inRegion(location, false)) + .findFirst() + .orElse(GlobalRegion.INSTANCE); + } + + @Override + public @NonNull Region get(@NonNull Location location) { + return get(location, regionMap.values()); + } + + @Override + public Optional getRegion(@NonNull UUID id) { + return Optional.ofNullable(regionMap.get(id)); + } + + @Override + public @NonNull Stream getRegions() { + return regionMap.values().stream(); + } + + private Stream getNeighbours(Region region, boolean noCorners, Collection regions) { + Point minPoint = region.getArea().getMinPoint(false).subtract(18, 0, 18); + Point maxPoint = region.getArea().getMaxPoint(false).add(19, 0, 19); + Set neighbours = new HashSet<>(); + for (int x = minPoint.getX() + (noCorners ? 18 : 0); x <= maxPoint.getX() - (noCorners ? 19 : 0); x += 19) { + int minZ = minPoint.getZ(); + int maxZ = maxPoint.getZ(); + neighbours.add(get(new Location(WORLD, x, 0, minZ), regions)); + neighbours.add(get(new Location(WORLD, x, 0, maxZ), regions)); + } + for (int z = minPoint.getZ() + 18; z <= maxPoint.getZ() - 19; z += 19) { + int minX = minPoint.getX(); + int maxX = maxPoint.getX(); + neighbours.add(get(new Location(WORLD, minX, 0, z), regions)); + neighbours.add(get(new Location(WORLD, maxX, 0, z), regions)); + } + neighbours.remove(GlobalRegion.INSTANCE); + return ((Set) (Set) neighbours).stream(); + } + + public Stream getNeighbours(Region region) { + return getNeighbours(region, false, regionMap.values()); + } + + public Stream getConnectedRegions(DynamicRegion region) { + Set regions = regionMap.values() + .stream() + .filter(r -> r.getType() == region.getType()) + .collect(Collectors.toSet()); + + Set connectedRegions = new HashSet<>(); + LinkedHashSet current = new LinkedHashSet<>(); + current.add(region); + while (!current.isEmpty()) { + DynamicRegion r = current.removeFirst(); + if (!connectedRegions.add(r)) continue; + getNeighbours(r, true, regions).forEach(current::add); + } + return connectedRegions.stream(); + } +} diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/DefaultFlagStorage.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/DefaultFlagStorage.java similarity index 100% rename from BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/DefaultFlagStorage.java rename to BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/DefaultFlagStorage.java diff --git a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/DefaultRegionData.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/DefaultRegionData.java new file mode 100644 index 00000000..91719c49 --- /dev/null +++ b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/DefaultRegionData.java @@ -0,0 +1,30 @@ +/* + * This file is a part of the SteamWar software. + * + * Copyright (C) 2025 SteamWar.de-Serverteam + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package de.steamwar.bausystem.region.dynamic; + +import de.steamwar.bausystem.region.RegionData; +import yapion.hierarchy.types.YAPIONObject; + +public abstract class DefaultRegionData extends RegionData { + + protected DefaultRegionData(YAPIONObject data, Runnable onChange) { + super(data, onChange); + } +} diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/DynamicRegion.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/DynamicRegion.java similarity index 100% rename from BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/DynamicRegion.java rename to BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/DynamicRegion.java diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/MovementListener.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/MovementListener.java similarity index 100% rename from BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/MovementListener.java rename to BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/MovementListener.java diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/NonNormalFlagStorage.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/NonNormalFlagStorage.java similarity index 100% rename from BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/NonNormalFlagStorage.java rename to BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/NonNormalFlagStorage.java diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/RegionConstructorData.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/RegionConstructorData.java similarity index 100% rename from BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/RegionConstructorData.java rename to BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/RegionConstructorData.java diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/RegionDataRepository.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/RegionDataRepository.java similarity index 100% rename from BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/RegionDataRepository.java rename to BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/RegionDataRepository.java diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/TileUtils.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/TileUtils.java similarity index 100% rename from BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/TileUtils.java rename to BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/TileUtils.java diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/VariantSelector.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/VariantSelector.java similarity index 100% rename from BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/VariantSelector.java rename to BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/VariantSelector.java diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/global/GlobalRegion.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/global/GlobalRegion.java similarity index 97% rename from BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/global/GlobalRegion.java rename to BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/global/GlobalRegion.java index 19cd19c5..1abb2db6 100644 --- a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/global/GlobalRegion.java +++ b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/global/GlobalRegion.java @@ -25,6 +25,7 @@ import de.steamwar.bausystem.region.dynamic.DefaultFlagStorage; import de.steamwar.bausystem.region.dynamic.NonNormalFlagStorage; import de.steamwar.bausystem.region.dynamic.RegionDataRepository; import de.steamwar.bausystem.utils.PasteBuilder; +import de.steamwar.sql.GameModeConfig; import lombok.NonNull; import org.bukkit.Location; @@ -40,8 +41,6 @@ public class GlobalRegion implements Region { private static final Point MIN_POINT = new Point(Integer.MIN_VALUE, Integer.MIN_VALUE, Integer.MIN_VALUE); private static final Point MAX_POINT = new Point(Integer.MAX_VALUE, Integer.MAX_VALUE, Integer.MAX_VALUE); - private static final UUID GLOBAL_REGION_ID = new UUID(0, 0); - private static final Region.Area GLOBAL_AREA = new Region.Area() { @Override public @NonNull Point getMinPoint(boolean extension) { @@ -104,7 +103,7 @@ public class GlobalRegion implements Region { @Override public @NonNull UUID getID() { - return GLOBAL_REGION_ID; + return RegionSystem.GLOBAL_REGION_ID; } @Override diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/normal/DisplayRegion.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/DisplayRegion.java similarity index 100% rename from BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/normal/DisplayRegion.java rename to BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/DisplayRegion.java diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/normal/NormalArea.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/NormalArea.java similarity index 100% rename from BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/normal/NormalArea.java rename to BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/NormalArea.java diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/normal/NormalFlagStorage.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/NormalFlagStorage.java similarity index 100% rename from BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/normal/NormalFlagStorage.java rename to BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/NormalFlagStorage.java diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/normal/WorkRegion.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/WorkRegion.java similarity index 100% rename from BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/normal/WorkRegion.java rename to BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/WorkRegion.java diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/normal/display/MicroWarGear21DisplayRegion.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/display/MicroWarGear21DisplayRegion.java similarity index 100% rename from BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/normal/display/MicroWarGear21DisplayRegion.java rename to BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/display/MicroWarGear21DisplayRegion.java diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/normal/display/MiniWarGear21DisplayRegion.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/display/MiniWarGear21DisplayRegion.java similarity index 100% rename from BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/normal/display/MiniWarGear21DisplayRegion.java rename to BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/display/MiniWarGear21DisplayRegion.java diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/normal/display/WarGear21DisplayRegion.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/display/WarGear21DisplayRegion.java similarity index 100% rename from BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/normal/display/WarGear21DisplayRegion.java rename to BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/display/WarGear21DisplayRegion.java diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/normal/display/WarShip21DisplayRegion.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/display/WarShip21DisplayRegion.java similarity index 100% rename from BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/normal/display/WarShip21DisplayRegion.java rename to BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/display/WarShip21DisplayRegion.java diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/normal/work/MicroWarGear21WorkRegion.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/work/MicroWarGear21WorkRegion.java similarity index 100% rename from BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/normal/work/MicroWarGear21WorkRegion.java rename to BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/work/MicroWarGear21WorkRegion.java diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/normal/work/MiniWarGear21WorkRegion.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/work/MiniWarGear21WorkRegion.java similarity index 100% rename from BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/normal/work/MiniWarGear21WorkRegion.java rename to BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/work/MiniWarGear21WorkRegion.java diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/normal/work/WarGear21WorkRegion.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/work/WarGear21WorkRegion.java similarity index 100% rename from BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/normal/work/WarGear21WorkRegion.java rename to BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/work/WarGear21WorkRegion.java diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/normal/work/WarShip21WorkRegion.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/work/WarShip21WorkRegion.java similarity index 100% rename from BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/normal/work/WarShip21WorkRegion.java rename to BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/work/WarShip21WorkRegion.java diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/path/PathAreaTile.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/path/PathAreaTile.java similarity index 100% rename from BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/path/PathAreaTile.java rename to BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/path/PathAreaTile.java diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/path/PathRegion.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/path/PathRegion.java similarity index 100% rename from BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/path/PathRegion.java rename to BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/path/PathRegion.java diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/spawn/SpawnAreaTile.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/spawn/SpawnAreaTile.java similarity index 100% rename from BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/spawn/SpawnAreaTile.java rename to BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/spawn/SpawnAreaTile.java diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/spawn/SpawnPathRegion.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/spawn/SpawnPathRegion.java similarity index 100% rename from BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/spawn/SpawnPathRegion.java rename to BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/spawn/SpawnPathRegion.java diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/spawn/SpawnRegion.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/spawn/SpawnRegion.java similarity index 100% rename from BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/spawn/SpawnRegion.java rename to BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/spawn/SpawnRegion.java diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/spawn/SpawnResetter.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/spawn/SpawnResetter.java similarity index 100% rename from BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/spawn/SpawnResetter.java rename to BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/spawn/SpawnResetter.java diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/special/DrySpecialRegion.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/special/DrySpecialRegion.java similarity index 100% rename from BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/special/DrySpecialRegion.java rename to BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/special/DrySpecialRegion.java diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/special/SpecialAreaTile.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/special/SpecialAreaTile.java similarity index 100% rename from BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/special/SpecialAreaTile.java rename to BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/special/SpecialAreaTile.java diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/special/SpecialFlagStorage.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/special/SpecialFlagStorage.java similarity index 100% rename from BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/special/SpecialFlagStorage.java rename to BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/special/SpecialFlagStorage.java diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/special/SpecialRegion.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/special/SpecialRegion.java similarity index 100% rename from BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/special/SpecialRegion.java rename to BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/special/SpecialRegion.java diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/special/WetSpecialRegion.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/special/WetSpecialRegion.java similarity index 100% rename from BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/special/WetSpecialRegion.java rename to BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/special/WetSpecialRegion.java diff --git a/BauSystem/BauSystem_RegionFixed/src/de/steamwar/bausystem/region/fixed/FixedGlobalRegion.java b/BauSystem/BauSystem_RegionFixed/src/de/steamwar/bausystem/region/fixed/FixedGlobalRegion.java index b6aaf91e..0942831b 100644 --- a/BauSystem/BauSystem_RegionFixed/src/de/steamwar/bausystem/region/fixed/FixedGlobalRegion.java +++ b/BauSystem/BauSystem_RegionFixed/src/de/steamwar/bausystem/region/fixed/FixedGlobalRegion.java @@ -43,8 +43,6 @@ public final class FixedGlobalRegion implements Region { @Setter private static RegionData FLAG_STORAGE; - private static final UUID GLOBAL_REGION_ID = new UUID(0, 0); - private static final Area GLOBAL_AREA = new Area() { @Override public @NonNull Point getMinPoint(boolean extension) { @@ -102,7 +100,7 @@ public final class FixedGlobalRegion implements Region { @Override public @NonNull UUID getID() { - return GLOBAL_REGION_ID; + return RegionSystem.GLOBAL_REGION_ID; } @Override diff --git a/settings.gradle.kts b/settings.gradle.kts index 5de418b8..a5a193b4 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -166,6 +166,7 @@ include( "BauSystem", "BauSystem:BauSystem_Main", "BauSystem:BauSystem_RegionDynamic", + "BauSystem:BauSystem_RegionDynamic2", "BauSystem:BauSystem_RegionFixed" )