diff --git a/BauSystem/BauSystem_RegionDynamic2/build.gradle.kts b/BauSystem/BauSystem_RegionDynamic2/build.gradle.kts
deleted file mode 100644
index 26348a9e..00000000
--- a/BauSystem/BauSystem_RegionDynamic2/build.gradle.kts
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * 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_RegionDynamic2/src/de/steamwar/bausystem/region/DynamicRegionCommand.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/DynamicRegionCommand.java
deleted file mode 100644
index 01693888..00000000
--- a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/DynamicRegionCommand.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * 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.features.region.RegionCommand;
-import de.steamwar.bausystem.region.dynamic.DynamicRegion;
-import de.steamwar.bausystem.region.dynamic.TileUtils;
-import de.steamwar.bausystem.region.dynamic.normal.display.MicroWarGear21DisplayRegion;
-import de.steamwar.bausystem.region.dynamic.normal.display.MiniWarGear21DisplayRegion;
-import de.steamwar.bausystem.region.dynamic.normal.display.WarGear21DisplayRegion;
-import de.steamwar.bausystem.region.dynamic.normal.display.WarShip21DisplayRegion;
-import de.steamwar.bausystem.region.dynamic.normal.work.MicroWarGear21WorkRegion;
-import de.steamwar.bausystem.region.dynamic.normal.work.MiniWarGear21WorkRegion;
-import de.steamwar.bausystem.region.dynamic.normal.work.WarGear21WorkRegion;
-import de.steamwar.bausystem.region.dynamic.normal.work.WarShip21WorkRegion;
-import de.steamwar.bausystem.region.dynamic.path.PathRegion;
-import de.steamwar.bausystem.region.dynamic.special.DrySpecialRegion;
-import de.steamwar.bausystem.region.dynamic.special.WetSpecialRegion;
-import de.steamwar.bausystem.shared.Pair;
-import de.steamwar.bausystem.utils.PasteBuilder;
-import de.steamwar.command.AbstractSWCommand;
-import de.steamwar.command.SWCommand;
-import lombok.RequiredArgsConstructor;
-import org.bukkit.entity.Player;
-
-import java.util.*;
-import java.util.function.BiFunction;
-import java.util.stream.Collectors;
-
-@AbstractSWCommand.PartOf(RegionCommand.class)
-public class DynamicRegionCommand extends SWCommand {
-
- public DynamicRegionCommand() {
- super("");
- }
-
- @Register({"dynamic", "place"})
- public void placeRegion(Player player, Placement placement) {
- Region region = DynamicRegionSystem.INSTANCE.get(player.getLocation());
- if (!region.getType().isGlobal()) return;
- Pair tile = TileUtils.fromLocation(player.getLocation());
- Pair placePosition = placePosition(tile, placement);
- if (placePosition == null) return;
- Pair min = TileUtils.toMinLocation(placePosition);
-
- DynamicRegion dynamicRegion = placement.constructor.apply(min.getKey(), min.getValue());
- dynamicRegion.getArea().reset(new PasteBuilder(new PasteBuilder.FileProvider(dynamicRegion.getArea().getResetFile())), false);
- DynamicRegionSystem.INSTANCE.getNeighbours(dynamicRegion).collect(Collectors.toList())
- .forEach(r -> r.update(dynamicRegion));
- }
-
- private Pair placePosition(Pair sourceTile, Placement placement) {
- Map, Region> regionCache = new HashMap<>();
- Set> seen = new HashSet<>();
- LinkedHashSet> currentTile = new LinkedHashSet<>();
- currentTile.add(sourceTile);
- while (!currentTile.isEmpty() && currentTile.size() < (placement.widthX * 2 / 19) * (placement.widthZ * 2 / 19)) {
- Pair tile = currentTile.removeFirst();
- if (!seen.add(tile)) continue;
- if (canPlace(tile, placement, regionCache)) {
- return tile;
- }
-
- for (int dx = -1; dx <= 1; dx++) {
- for (int dz = -1; dz <= 1; dz++) {
- if (dx == 0 && dz == 0) continue;
- Pair nextTile = new Pair<>(tile.getKey() + dx, tile.getValue() + dz);
- Region region = regionCache.computeIfAbsent(nextTile, tilePair -> Region.getRegion(TileUtils.toMinLocation(tilePair.getKey(), tilePair.getValue())));
- if (region.getType().isGlobal()) currentTile.add(nextTile);
- }
- }
- }
- return null;
- }
-
- private boolean canPlace(Pair tile, Placement placement, Map, Region> regionCache) {
- for (int x = tile.getKey(); x < tile.getKey() + placement.widthX / TileUtils.tileSize; x++) {
- for (int z = tile.getValue(); z < tile.getValue() + placement.widthZ / TileUtils.tileSize; z++) {
- Region region = regionCache.computeIfAbsent(new Pair<>(x, z), tilePair -> Region.getRegion(TileUtils.toMinLocation(tilePair.getKey(), tilePair.getValue())));
- if (region.getType().isGlobal()) continue;
- return false;
- }
- }
- return true;
- }
-
-
- @RequiredArgsConstructor
- public enum Placement {
- Path(PathRegion::new, 19, 19),
- WetSpecial(WetSpecialRegion::new, 19, 19),
- DrySpecial(DrySpecialRegion::new, 19, 19),
- WarGearWork21(WarGear21WorkRegion::new, WarGear21WorkRegion.widthX, WarGear21WorkRegion.widthZ),
- WarGearDisplay21(WarGear21DisplayRegion::new, WarGear21DisplayRegion.widthX, WarGear21DisplayRegion.widthZ),
- MiniWarGearWork21(MiniWarGear21WorkRegion::new, MiniWarGear21WorkRegion.widthX, MiniWarGear21WorkRegion.widthZ),
- MiniWarGearDisplay21(MiniWarGear21DisplayRegion::new, MiniWarGear21DisplayRegion.widthX, MiniWarGear21DisplayRegion.widthZ),
- WarShipWork21(WarShip21WorkRegion::new, WarShip21WorkRegion.widthX, WarShip21WorkRegion.widthZ),
- WarShipDisplay21(WarShip21DisplayRegion::new, WarShip21DisplayRegion.widthX, WarShip21DisplayRegion.widthZ),
- MicroWarGearWork21(MicroWarGear21WorkRegion::new, MicroWarGear21WorkRegion.widthX, MicroWarGear21WorkRegion.widthZ),
- MicroWarGearDisplay21(MicroWarGear21DisplayRegion::new, MicroWarGear21DisplayRegion.widthX, MicroWarGear21DisplayRegion.widthZ),
- ;
-
- private final BiFunction constructor;
- private final int widthX;
- private final int widthZ;
- }
-
- @Register({"dynamic", "delete"})
- public void deleteRegion(Player player) {
- Region region = DynamicRegionSystem.INSTANCE.get(player.getLocation());
- if (region.getType().isCannotDelete()) return;
- ((DynamicRegion) region).delete();
- }
-}
diff --git a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/DynamicRegionSystem.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/DynamicRegionSystem.java
deleted file mode 100644
index 75e0671f..00000000
--- a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/DynamicRegionSystem.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * 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 @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_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/DefaultFlagStorage.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/DefaultFlagStorage.java
deleted file mode 100644
index 152b296f..00000000
--- a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/DefaultFlagStorage.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * 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.dynamic;
-
-import de.steamwar.bausystem.region.FlagOptional;
-import de.steamwar.bausystem.region.FlagStorage;
-import de.steamwar.bausystem.region.flags.Flag;
-import lombok.NonNull;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.function.Consumer;
-
-public abstract class DefaultFlagStorage implements FlagStorage {
-
- protected Map, Flag.Value>> flagMap = new HashMap<>();
- private Consumer operation;
-
- @Override
- public & Flag.Value> boolean set(@NonNull Flag flag, @NonNull T value) {
- if (has(flag).isWritable()) {
- boolean result = flagMap.put(flag, value) != value;
- if (operation != null) {
- operation.accept(this);
- }
- return result;
- } else {
- return false;
- }
- }
-
- @Override
- public @NonNull & Flag.Value> FlagOptional get(@NonNull Flag flag) {
- return FlagOptional.of(flag, (T) flagMap.get(flag));
- }
-
- @Override
- public Map, Flag.Value>> getBackedMap() {
- return flagMap;
- }
-
- public void setSaveOperation(Consumer operation) {
- this.operation = operation;
- }
-
- public void save() {
- operation.accept(this);
- }
-}
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
deleted file mode 100644
index 91719c49..00000000
--- a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/DefaultRegionData.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * 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_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/DynamicRegion.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/DynamicRegion.java
deleted file mode 100644
index 6c5b2eea..00000000
--- a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/DynamicRegion.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * 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.dynamic;
-
-import com.sk89q.worldedit.EditSession;
-import com.sk89q.worldedit.WorldEdit;
-import com.sk89q.worldedit.bukkit.BukkitAdapter;
-import com.sk89q.worldedit.regions.CuboidRegion;
-import com.sk89q.worldedit.world.block.BlockTypes;
-import de.steamwar.bausystem.region.DynamicRegionSystem;
-import de.steamwar.bausystem.region.Point;
-import de.steamwar.bausystem.region.Region;
-import de.steamwar.bausystem.region.RegionBackups;
-import lombok.Getter;
-import lombok.NonNull;
-import org.bukkit.Bukkit;
-
-import java.util.UUID;
-import java.util.stream.Collectors;
-
-public abstract class DynamicRegion implements Region {
-
- @Getter
- protected final UUID ID;
- protected final int minX;
- protected final int minZ;
-
- @Getter
- protected final RegionBackups backups;
-
- protected DynamicRegion(int minX, int minZ) {
- this.ID = UUID.randomUUID();
- this.minX = minX;
- this.minZ = minZ;
- backups = RegionDataRepository.getBackups(this);
- RegionDataRepository.saveRegion(this);
- DynamicRegionSystem.INSTANCE.add(this);
- }
-
- protected DynamicRegion(RegionConstructorData regionConstructorData) {
- this.ID = regionConstructorData.uuid;
- this.minX = regionConstructorData.minX;
- this.minZ = regionConstructorData.minZ;
- backups = RegionDataRepository.getBackups(this);
- RegionDataRepository.saveRegion(this);
- DynamicRegionSystem.INSTANCE.add(this);
- }
-
- public RegionConstructorData getRegionConstructorData() {
- return new RegionConstructorData.RegionConstructorDataBuilder()
- .regionClass(this.getClass().getSimpleName())
- .uuid(ID)
- .minX(minX)
- .minZ(minZ)
- .build();
- }
-
- public abstract void update(DynamicRegion updateFrom);
-
- public abstract void setFlags(DefaultFlagStorage flags);
-
- @Override
- public abstract @NonNull DefaultFlagStorage getFlags();
-
- public void delete() {
- if (getType().isCannotDelete()) return;
- DynamicRegionSystem.INSTANCE.delete(this);
- RegionDataRepository.deleteRegion(this);
-
- Point minPoint = getArea().getMinPoint(false);
- Point maxPoint = getArea().getMaxPoint(false);
-
- EditSession editSession = WorldEdit.getInstance()
- .newEditSessionBuilder()
- .world(BukkitAdapter.adapt(Bukkit.getWorlds().get(0)))
- .checkMemory(false)
- .allowedRegionsEverywhere()
- .limitUnlimited()
- .changeSetNull()
- .build();
- editSession.setBlocks((com.sk89q.worldedit.regions.Region) new CuboidRegion(minPoint.toBlockVector3(), maxPoint.toBlockVector3()), BlockTypes.AIR.getDefaultState());
- editSession.close();
-
- DynamicRegionSystem.INSTANCE.getNeighbours(this).collect(Collectors.toList())
- .forEach(region -> region.update(this));
- }
-}
diff --git a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/MovementListener.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/MovementListener.java
deleted file mode 100644
index 665ac3ef..00000000
--- a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/MovementListener.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * 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.dynamic;
-
-import de.steamwar.bausystem.region.Region;
-import de.steamwar.bausystem.shared.Pair;
-import net.md_5.bungee.api.ChatMessageType;
-import net.md_5.bungee.api.chat.TextComponent;
-import org.bukkit.event.EventHandler;
-import org.bukkit.event.Listener;
-import org.bukkit.event.player.PlayerMoveEvent;
-
-public class MovementListener implements Listener {
-
- @EventHandler
- public void onPlayerMove(PlayerMoveEvent event) {
- Pair tile = TileUtils.fromLocation(event.getTo());
- Region region = Region.getRegion(event.getTo());
- if (tile != null) {
- event.getPlayer().spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(tile.getKey() + " : " + tile.getValue() + " " + region.getType()));
- } else {
- event.getPlayer().spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText("NONE " + region.getType()));
- }
- }
-}
diff --git a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/NonNormalFlagStorage.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/NonNormalFlagStorage.java
deleted file mode 100644
index b96ecd5c..00000000
--- a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/NonNormalFlagStorage.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * 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.dynamic;
-
-import de.steamwar.bausystem.region.FlagOptional;
-import de.steamwar.bausystem.region.RegionFlagPolicy;
-import de.steamwar.bausystem.region.flags.ColorMode;
-import de.steamwar.bausystem.region.flags.Flag;
-import de.steamwar.bausystem.region.flags.ProtectMode;
-import de.steamwar.bausystem.region.flags.TNTMode;
-import de.steamwar.core.Core;
-import lombok.NonNull;
-import lombok.ToString;
-
-@ToString
-public class NonNormalFlagStorage extends DefaultFlagStorage {
-
- public NonNormalFlagStorage() {
- flagMap.put(Flag.TNT, TNTMode.DENY);
- }
-
- @Override
- public @NonNull & Flag.Value> RegionFlagPolicy has(@NonNull Flag flag) {
- if (flag.oneOf(Flag.COLOR)) {
- return RegionFlagPolicy.READ_ONLY;
- }
- if (flag.oneOf(Flag.ITEMS) && Core.getVersion() >= 20) {
- return RegionFlagPolicy.WRITABLE;
- }
- if (flag.oneOf(Flag.TNT, Flag.FIRE, Flag.FREEZE)) {
- return RegionFlagPolicy.WRITABLE;
- }
- return RegionFlagPolicy.NOT_APPLICABLE;
- }
-
- @Override
- public @NonNull & Flag.Value> FlagOptional get(@NonNull Flag flag) {
- if (flag.oneOf(Flag.COLOR)) {
- return FlagOptional.of((Flag) flag, ColorMode.YELLOW);
- }
- if (flag.oneOf(Flag.PROTECT)) {
- return FlagOptional.of((Flag) flag, ProtectMode.INACTIVE);
- }
- return super.get(flag);
- }
-}
diff --git a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/RegionConstructorData.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/RegionConstructorData.java
deleted file mode 100644
index bae41c8f..00000000
--- a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/RegionConstructorData.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * 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.dynamic;
-
-import com.google.gson.JsonObject;
-import com.google.gson.stream.JsonWriter;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Cleanup;
-import lombok.SneakyThrows;
-
-import java.io.File;
-import java.io.FileWriter;
-import java.util.UUID;
-
-@Builder
-@AllArgsConstructor
-public class RegionConstructorData {
-
- public final String regionClass;
- public final UUID uuid;
- public final int minX;
- public final int minZ;
-
- public RegionConstructorData(JsonObject jsonObject, UUID uuid) {
- regionClass = jsonObject.get("regionClass").getAsString();
- this.uuid = uuid;
- minX = jsonObject.get("minX").getAsInt();
- minZ = jsonObject.get("minZ").getAsInt();
- }
-
- @SneakyThrows
- public void write(File file) {
- @Cleanup
- JsonWriter writer = new JsonWriter(new FileWriter(file));
- writer.setIndent(" ");
- writer.beginObject();
- writer.name("regionClass").value(regionClass);
- writer.name("minX").value(minX);
- writer.name("minZ").value(minZ);
- writer.endObject();
- }
-}
diff --git a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/RegionDataRepository.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/RegionDataRepository.java
deleted file mode 100644
index 75f81116..00000000
--- a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/RegionDataRepository.java
+++ /dev/null
@@ -1,321 +0,0 @@
-/*
- * 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.dynamic;
-
-import com.google.gson.JsonObject;
-import com.google.gson.JsonParser;
-import com.google.gson.stream.JsonWriter;
-import com.sk89q.worldedit.EditSession;
-import de.steamwar.bausystem.region.FlagStorage;
-import de.steamwar.bausystem.region.Point;
-import de.steamwar.bausystem.region.Region;
-import de.steamwar.bausystem.region.RegionBackups;
-import de.steamwar.bausystem.region.dynamic.normal.NormalFlagStorage;
-import de.steamwar.bausystem.region.dynamic.normal.display.MicroWarGear21DisplayRegion;
-import de.steamwar.bausystem.region.dynamic.normal.display.MiniWarGear21DisplayRegion;
-import de.steamwar.bausystem.region.dynamic.normal.display.WarGear21DisplayRegion;
-import de.steamwar.bausystem.region.dynamic.normal.display.WarShip21DisplayRegion;
-import de.steamwar.bausystem.region.dynamic.normal.work.MicroWarGear21WorkRegion;
-import de.steamwar.bausystem.region.dynamic.normal.work.MiniWarGear21WorkRegion;
-import de.steamwar.bausystem.region.dynamic.normal.work.WarGear21WorkRegion;
-import de.steamwar.bausystem.region.dynamic.normal.work.WarShip21WorkRegion;
-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.special.DrySpecialRegion;
-import de.steamwar.bausystem.region.dynamic.special.WetSpecialRegion;
-import de.steamwar.bausystem.region.flags.Flag;
-import de.steamwar.bausystem.utils.FlatteningWrapper;
-import de.steamwar.bausystem.utils.PasteBuilder;
-import lombok.Cleanup;
-import lombok.NonNull;
-import lombok.SneakyThrows;
-import lombok.experimental.UtilityClass;
-import org.bukkit.Bukkit;
-
-import javax.annotation.Nullable;
-import java.io.File;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.nio.file.FileVisitResult;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.SimpleFileVisitor;
-import java.nio.file.attribute.BasicFileAttributes;
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
-import java.util.*;
-import java.util.function.Function;
-
-@UtilityClass
-public class RegionDataRepository {
-
- public static final String META_FILE_NAME = "meta.json";
- public static final String FLAGS_FILE_NAME = "flags.json";
- public static final String REGION_SCHEM_FILE_NAME = "region.schem";
- public static final String BACKUP_DIRECTORY = "backup";
- private static File regionDataFolder = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "regions");
- private static Map> regionCreators = new HashMap<>();
- static {
- regionCreators.put(SpawnRegion.class.getSimpleName(), SpawnRegion::new);
- regionCreators.put(SpawnPathRegion.class.getSimpleName(), SpawnPathRegion::new);
- regionCreators.put(PathRegion.class.getSimpleName(), PathRegion::new);
- regionCreators.put(DrySpecialRegion.class.getSimpleName(), DrySpecialRegion::new);
- regionCreators.put(WetSpecialRegion.class.getSimpleName(), WetSpecialRegion::new);
- regionCreators.put(WarGear21WorkRegion.class.getSimpleName(), WarGear21WorkRegion::new);
- regionCreators.put(WarGear21DisplayRegion.class.getSimpleName(), WarGear21DisplayRegion::new);
- regionCreators.put("WarGear21Region", WarGear21WorkRegion::new); // TODO: Legacy because of rename
- regionCreators.put(MiniWarGear21WorkRegion.class.getSimpleName(), MiniWarGear21WorkRegion::new);
- regionCreators.put(MiniWarGear21DisplayRegion.class.getSimpleName(), MiniWarGear21DisplayRegion::new);
- regionCreators.put("MiniWarGear21Region", MiniWarGear21WorkRegion::new); // TODO: Legacy because of rename
- regionCreators.put(WarShip21WorkRegion.class.getSimpleName(), WarShip21WorkRegion::new);
- regionCreators.put(WarShip21DisplayRegion.class.getSimpleName(), WarShip21DisplayRegion::new);
- regionCreators.put("WarShip21Region", WarShip21WorkRegion::new); // TODO: Legacy because of rename
- regionCreators.put(MicroWarGear21WorkRegion.class.getSimpleName(), MicroWarGear21WorkRegion::new);
- regionCreators.put(MicroWarGear21DisplayRegion.class.getSimpleName(), MicroWarGear21DisplayRegion::new);
- regionCreators.put("MicroWarGear21Region", MicroWarGear21WorkRegion::new); // TODO: Legacy because of rename
- }
-
- static {
- regionDataFolder.mkdirs();
- }
-
- private File getRegionDirectory(Region region) {
- File file = new File(regionDataFolder, region.getID().toString());
- file.mkdirs();
- return file;
- }
-
- @SneakyThrows
- public List loadRegions() {
- File[] files = regionDataFolder.listFiles();
- List regions = new ArrayList<>();
- for (File file : files) {
- File metaFile = new File(file, META_FILE_NAME);
- if (!metaFile.exists()) continue;
- JsonObject jsonObject = JsonParser.parseReader(new FileReader(metaFile)).getAsJsonObject();
- RegionConstructorData regionConstructorData = new RegionConstructorData(jsonObject, UUID.fromString(file.getName()));
- Function constructor = regionCreators.get(regionConstructorData.regionClass);
- if (constructor == null) continue;
- regions.add(constructor.apply(regionConstructorData));
- }
- return regions;
- }
-
- public void saveRegion(DynamicRegion region) {
- File file = getRegionDirectory(region);
- file = new File(file, META_FILE_NAME);
- region.getRegionConstructorData()
- .write(file);
- }
-
- public void deleteRegion(DynamicRegion region) {
- deleteDir(getRegionDirectory(region));
- }
-
- public void loadFlagStorage(Region region, DefaultFlagStorage storage) {
- File file = getRegionDirectory(region);
- file = new File(file, FLAGS_FILE_NAME);
- loadFlagStorage(file, storage);
- if (!file.exists()) saveFlagStorage(region, storage);
- storage.setSaveOperation(currentStorage -> {
- saveFlagStorage(region, currentStorage);
- });
- }
-
- @SneakyThrows
- private void loadFlagStorage(File file, FlagStorage storage) {
- if (file == null || !file.exists()) return;
- JsonObject jsonObject = JsonParser.parseReader(new FileReader(file)).getAsJsonObject();
- for (Flag flag : Flag.getFlags()) {
- if (!jsonObject.has(flag.name())) continue;
- Flag.Value> value;
- try {
- value = flag.valueOfValue(jsonObject.get(flag.name()).getAsString());
- } catch (IllegalArgumentException e) {
- continue;
- }
- storage.getBackedMap().put(flag, value);
- }
- }
-
- private void saveFlagStorage(Region region, FlagStorage storage) {
- File file = getRegionDirectory(region);
- file = new File(file, FLAGS_FILE_NAME);
- saveFlagStorage(file, storage);
- }
-
- @SneakyThrows
- public void saveFlagStorage(File file, FlagStorage storage) {
- file.getParentFile().mkdirs();
-
- @Cleanup
- JsonWriter jsonWriter = new JsonWriter(new FileWriter(file));
- jsonWriter.setIndent(" ");
- jsonWriter.beginObject();
- for (Map.Entry, Flag.Value>> entry : storage.getBackedMap().entrySet()) {
- if (entry.getKey() == Flag.CHANGED) continue;
- jsonWriter.name(entry.getKey().name());
- jsonWriter.value(entry.getValue().name());
- }
- jsonWriter.endObject();
- }
-
- private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy.MM.dd'_'HH:mm:ss");
- public RegionBackups getBackups(DynamicRegion region) {
- if (!region.getType().isCreateBackup()) {
- return RegionBackups.EMPTY;
- }
-
- File directory = new File(getRegionDirectory(region), BACKUP_DIRECTORY);
- directory.mkdirs();
- return new RegionBackups() {
- private List backups = new ArrayList<>();
-
- {
- File[] files = directory.listFiles();
- if (files != null) {
- for (File file : files) {
- backups.add(new BackupImpl(file, region));
- }
- }
- backups.sort(null);
- }
-
- @Override
- @SneakyThrows
- public Optional create(BackupType backupType) {
- String name = LocalDateTime.now().format(formatter);
- File backupDirectory = new File(directory, name);
- backupDirectory.mkdirs();
-
- Point minPoint = region.getArea().getMinPoint(false);
- Point maxPoint = region.getArea().getMaxPoint(false);
- boolean success = FlatteningWrapper.impl.backup(minPoint, maxPoint, new File(backupDirectory, REGION_SCHEM_FILE_NAME));
- if (!success) {
- deleteDir(backupDirectory);
- return Optional.empty();
- }
-
- int count = 0;
- for (int i = backups.size() - 1; i >= 0; i--) {
- Backup backup = backups.get(i);
- if (backup.getType() == backupType) {
- if (count >= backupType.maxBackups - 1) {
- backup.delete();
- backups.remove(i);
- continue;
- }
- count++;
- }
- }
-
- new File(backupDirectory, backupType.name()).createNewFile();
- saveFlagStorage(new File(backupDirectory, FLAGS_FILE_NAME), region.getFlags());
- Backup backup = new BackupImpl(backupDirectory, region);
- backups.add(backup);
- return Optional.of(backup);
- }
-
- @Override
- public @NonNull List list() {
- return backups;
- }
-
- @Nullable
- @Override
- public Backup get(String name) {
- for (Backup backup : backups) {
- if (backup.getName().equals(name)) {
- return backup;
- }
- }
- return null;
- }
- };
- }
-
- private static class BackupImpl extends RegionBackups.Backup {
- private final File file;
- private final DynamicRegion region;
-
- public BackupImpl(File file, DynamicRegion region) {
- super(getType(file), file.getName(), getFlags(file));
- this.file = file;
- this.region = region;
- }
-
- private static RegionBackups.BackupType getType(File file) {
- for (RegionBackups.BackupType type : RegionBackups.BackupType.values()) {
- if (new File(file, type.name()).exists()) return type;
- }
- throw new IllegalArgumentException("Unknown backup type");
- }
-
- private static FlagStorage getFlags(File file) {
- NormalFlagStorage storage = new NormalFlagStorage();
- loadFlagStorage(new File(file, FLAGS_FILE_NAME), storage);
- return storage;
- }
-
- @Override
- public boolean load() {
- if (!file.exists()) return false;
- EditSession editSession = new PasteBuilder(new PasteBuilder.FileProvider(new File(file, REGION_SCHEM_FILE_NAME)))
- .pastePoint(region.getArea().getMinPoint(false))
- .minPoint(region.getArea().getMinPoint(false))
- .maxPoint(region.getArea().getMaxPoint(false))
- .run();
- region.getHistory().remember(editSession);
- region.getFlags().setSaveOperation(null);
- region.setFlags((DefaultFlagStorage) getFlags());
- region.getFlags().setSaveOperation(storage -> saveFlagStorage(region, storage));
- return true;
- }
-
- @Override
- public void delete() {
- deleteDir(file);
- }
-
- @Override
- public long getCreationTime() {
- return file.lastModified();
- }
- }
-
- @SneakyThrows
- private static void deleteDir(File file) {
- Files.walkFileTree(file.toPath(), new SimpleFileVisitor<>() {
- @Override
- public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
- Files.delete(file);
- return FileVisitResult.CONTINUE;
- }
-
- @Override
- public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
- Files.delete(dir);
- return FileVisitResult.CONTINUE;
- }
- });
- }
-}
diff --git a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/TileUtils.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/TileUtils.java
deleted file mode 100644
index 40789560..00000000
--- a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/TileUtils.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * 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.dynamic;
-
-import de.steamwar.bausystem.shared.Pair;
-import lombok.experimental.UtilityClass;
-import org.bukkit.Location;
-
-@UtilityClass
-public class TileUtils {
-
- public static final int tileSize = 19;
- public static final int minTile = -1023;
- public static final int maxTile = 1023;
-
- public Pair fromLocation(Location location) {
- int x = (int) Math.floor((location.getBlockX() + 9) / (double) tileSize);
- int z = (int) Math.floor((location.getBlockZ() + 9) / (double) tileSize);
- if (x < minTile || z < minTile) return null;
- if (x > maxTile || z > maxTile) return null;
- return new Pair<>(x, z);
- }
-
- public Pair toMinLocation(Pair tile) {
- return new Pair<>(tile.getKey() * tileSize - 9, tile.getValue() * tileSize - 9);
- }
-
- public Location toMinLocation(int tileX, int tileZ) {
- return new Location(null, tileX * tileSize - 9, 0, tileZ * tileSize - 9);
- }
-}
diff --git a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/VariantSelector.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/VariantSelector.java
deleted file mode 100644
index ea167251..00000000
--- a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/VariantSelector.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * 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.dynamic;
-
-import lombok.NonNull;
-
-import java.io.File;
-import java.time.LocalDate;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.Random;
-
-public interface VariantSelector {
-
- Optional selectVariant(int minX, int minZ);
-
- default VariantSelector or(VariantSelector other) {
- return (minX, minZ) -> selectVariant(minX, minZ).or(() -> other.selectVariant(minX, minZ));
- }
-
- static VariantSelector AtDate(int day, int month, File file) {
- return (minX, minZ) -> {
- LocalDate date = LocalDate.now();
- if (date.getDayOfMonth() == day && date.getMonthValue() == month) {
- return Optional.of(file);
- } else {
- return Optional.empty();
- }
- };
- }
-
- static VariantSelector File(@NonNull File file) {
- return (minX, minZ) -> Optional.of(file);
- }
-
- static VariantSelector StableVariants(@NonNull File directory) {
- File[] files = directory.listFiles();
- Random rand = new Random();
- return (minX, minZ) -> {
- rand.setSeed(Objects.hash(minX, minZ));
- return Optional.of(files[rand.nextInt(files.length)]);
- };
- }
-
- static VariantSelector RandomVariants(@NonNull File directory) {
- File[] files = directory.listFiles();
- Random rand = new Random();
- return (minX, minZ) -> {
- return Optional.of(files[rand.nextInt(files.length)]);
- };
- }
-}
diff --git a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/global/GlobalRegion.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/global/GlobalRegion.java
deleted file mode 100644
index 1abb2db6..00000000
--- a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/global/GlobalRegion.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * 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.dynamic.global;
-
-import com.sk89q.worldedit.extent.clipboard.Clipboard;
-import de.steamwar.bausystem.region.*;
-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;
-
-import javax.annotation.Nullable;
-import java.io.File;
-import java.util.UUID;
-import java.util.function.BiConsumer;
-
-public class GlobalRegion implements Region {
-
- public static final GlobalRegion INSTANCE = new GlobalRegion();
-
- 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 Region.Area GLOBAL_AREA = new Region.Area() {
- @Override
- public @NonNull Point getMinPoint(boolean extension) {
- return MIN_POINT;
- }
-
- @Override
- public @NonNull Point getMaxPoint(boolean extension) {
- return MAX_POINT;
- }
-
- @Override
- public @NonNull Point getCopyPoint() {
- return Point.ZERO;
- }
-
- @Override
- public boolean inRegion(Location location, boolean extension) {
- return true;
- }
-
- @Nullable
- @Override
- public Clipboard copy(boolean extension) {
- return null;
- }
-
- @Nullable
- @Override
- public File getResetFile() {
- return null;
- }
-
- @Override
- public void reset(PasteBuilder pasteBuilder, boolean extension) {
- }
-
- @Override
- public void forEachChunk(BiConsumer executor) {
- }
-
- @Override
- public boolean isChunkOutside(int chunkX, int chunkZ) {
- return false;
- }
- };
-
- private static DefaultFlagStorage FLAG_STORAGE = new NonNormalFlagStorage();
- static {
- RegionDataRepository.loadFlagStorage(INSTANCE, FLAG_STORAGE);
- }
-
- private GlobalRegion() {
- }
-
- @Override
- public RegionType getType() {
- return RegionType.GLOBAL;
- }
-
- @Override
- public @NonNull UUID getID() {
- return RegionSystem.GLOBAL_REGION_ID;
- }
-
- @Override
- public @NonNull FlagStorage getFlags() {
- return FLAG_STORAGE;
- }
-
- @Override
- public @NonNull Region.Area getArea() {
- return GLOBAL_AREA;
- }
-
- @Override
- public @NonNull Region.Area getBuildArea() {
- return Region.Area.EMPTY;
- }
-
- @Override
- public @NonNull Region.Area getTestblockArea() {
- return Region.Area.EMPTY;
- }
-
- @Override
- public @NonNull GameModeConfig getGameModeConfig() {
- return GameModeConfig.EMPTY;
- }
-
- @Override
- public @NonNull RegionHistory getHistory() {
- return RegionHistory.EMPTY;
- }
-
- @Override
- public @NonNull RegionBackups getBackups() {
- return RegionBackups.EMPTY;
- }
-}
diff --git a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/DisplayRegion.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/DisplayRegion.java
deleted file mode 100644
index 5b8c7489..00000000
--- a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/DisplayRegion.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * 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.dynamic.normal;
-
-import de.steamwar.bausystem.region.RegionHistory;
-import de.steamwar.bausystem.region.dynamic.DefaultFlagStorage;
-import de.steamwar.bausystem.region.dynamic.DynamicRegion;
-import de.steamwar.bausystem.region.dynamic.RegionConstructorData;
-import de.steamwar.bausystem.region.dynamic.RegionDataRepository;
-import lombok.Getter;
-import lombok.NonNull;
-
-public abstract class DisplayRegion extends DynamicRegion {
-
- @Getter
- private DefaultFlagStorage flags = new NormalFlagStorage();
-
- @Getter
- protected NormalArea area = NormalArea.EMPTY;
-
- @Getter
- private final RegionHistory history = new RegionHistory.Impl(20);
-
- protected DisplayRegion(int minX, int minZ) {
- super(minX, minZ);
- RegionDataRepository.loadFlagStorage(this, flags);
- }
-
- protected DisplayRegion(RegionConstructorData regionConstructorData) {
- super(regionConstructorData);
- RegionDataRepository.loadFlagStorage(this, flags);
- }
-
- @Override
- public void update(DynamicRegion updateFrom) {
- }
-
- @Override
- public void setFlags(DefaultFlagStorage flags) {
- this.flags = flags;
- }
-
- @Override
- public @NonNull Area getBuildArea() {
- return Area.EMPTY;
- }
-
- @Override
- public @NonNull Area getTestblockArea() {
- return Area.EMPTY;
- }
-}
diff --git a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/NormalArea.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/NormalArea.java
deleted file mode 100644
index 47fca378..00000000
--- a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/NormalArea.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * 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.dynamic.normal;
-
-import com.sk89q.worldedit.EditSession;
-import de.steamwar.bausystem.region.Point;
-import de.steamwar.bausystem.region.Region;
-import de.steamwar.bausystem.region.dynamic.VariantSelector;
-import de.steamwar.bausystem.region.flags.Flag;
-import de.steamwar.bausystem.utils.PasteBuilder;
-import lombok.NonNull;
-import org.bukkit.Location;
-
-import javax.annotation.Nullable;
-import java.io.File;
-import java.util.function.BiConsumer;
-
-public class NormalArea implements Region.Area {
-
- public static final NormalArea EMPTY = new NormalArea(0, 0, 0, 0, 0, 0, null, false, null) {
- @Override
- public void reset(PasteBuilder pasteBuilder, boolean extension) {
- }
-
- @Override
- public boolean isEmpty() {
- return true;
- }
-
- @Override
- public boolean inRegion(Location location, boolean extension) {
- return false;
- }
-
- @Override
- public void forEachChunk(BiConsumer executor) {
- }
-
- @Override
- public boolean isChunkOutside(int chunkX, int chunkZ) {
- return true;
- }
- };
-
- private final int minX;
- private final int minY;
- private final int minZ;
- private final int widthX;
- private final int widthY;
- private final int widthZ;
- private VariantSelector variantSelector;
- private final Point minPoint;
- private final Point maxPoint;
- private final Point copyPoint;
- private final boolean rotate;
- private final Region region;
-
- public NormalArea(int minX, int minY, int minZ, int widthX, int widthY, int widthZ, VariantSelector variantSelector, boolean rotate, Region region) {
- this.minX = minX;
- this.minY = minY;
- this.minZ = minZ;
- this.widthX = widthX;
- this.widthY = widthY;
- this.widthZ = widthZ;
- this.variantSelector = variantSelector;
- this.rotate = rotate;
- this.region = region;
-
- minPoint = new Point(minX, minY, minZ);
- maxPoint = new Point(minX + widthX - 1, minY + widthY - 1, minZ + widthZ - 1);
- copyPoint = minPoint.add(widthX / 2, widthY, widthZ / 2);
- }
-
- @Override
- public @NonNull Point getMinPoint(boolean extension) {
- return minPoint;
- }
-
- @Override
- public @NonNull Point getMaxPoint(boolean extension) {
- return maxPoint;
- }
-
- @Override
- public @NonNull Point getCopyPoint() {
- return copyPoint;
- }
-
- public NormalArea setResetFile(VariantSelector variantSelector) {
- this.variantSelector = variantSelector;
- return this;
- }
-
- @Nullable
- @Override
- public File getResetFile() {
- return variantSelector.selectVariant(minX, minZ).orElseThrow();
- }
-
- @Override
- public void reset(PasteBuilder pasteBuilder, boolean extension) {
- EditSession editSession = pasteBuilder.minPoint(minPoint)
- .maxPoint(maxPoint)
- .rotate(rotate)
- .color(region.getFlags().get(Flag.COLOR).getWithDefault())
- .run();
- region.getHistory().remember(editSession);
- }
-}
diff --git a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/NormalFlagStorage.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/NormalFlagStorage.java
deleted file mode 100644
index ac33ca80..00000000
--- a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/NormalFlagStorage.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * 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.dynamic.normal;
-
-import de.steamwar.bausystem.region.RegionFlagPolicy;
-import de.steamwar.bausystem.region.dynamic.DefaultFlagStorage;
-import de.steamwar.bausystem.region.flags.Flag;
-import de.steamwar.core.Core;
-import lombok.NonNull;
-import lombok.ToString;
-
-@ToString
-public class NormalFlagStorage extends DefaultFlagStorage {
-
- @Override
- public @NonNull & Flag.Value> RegionFlagPolicy has(@NonNull Flag flag) {
- if (flag.oneOf(Flag.COLOR, Flag.TNT, Flag.FIRE, Flag.FREEZE, Flag.PROTECT, Flag.NO_GRAVITY, Flag.TESTBLOCK, Flag.CHANGED)) {
- return RegionFlagPolicy.WRITABLE;
- }
- if (flag.oneOf(Flag.ITEMS) && Core.getVersion() >= 20) {
- return RegionFlagPolicy.WRITABLE;
- }
- return RegionFlagPolicy.NOT_APPLICABLE;
- }
-}
diff --git a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/WorkRegion.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/WorkRegion.java
deleted file mode 100644
index 07bc39cc..00000000
--- a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/WorkRegion.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * 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.dynamic.normal;
-
-import de.steamwar.bausystem.region.FlagOptional;
-import de.steamwar.bausystem.region.RegionHistory;
-import de.steamwar.bausystem.region.dynamic.*;
-import de.steamwar.bausystem.region.flags.Flag;
-import de.steamwar.bausystem.region.flags.TestblockMode;
-import lombok.Getter;
-import lombok.NonNull;
-
-public abstract class WorkRegion extends DynamicRegion {
-
- @Getter
- private DefaultFlagStorage flags = new NormalFlagStorage();
-
- @Getter
- protected NormalArea area = NormalArea.EMPTY;
- protected NormalArea northArea = NormalArea.EMPTY;
- protected NormalArea southArea = NormalArea.EMPTY;
-
- protected VariantSelector frame;
- protected VariantSelector testblock;
-
- @Getter
- private final RegionHistory history = new RegionHistory.Impl(20);
-
- protected WorkRegion(int minX, int minZ) {
- super(minX, minZ);
- RegionDataRepository.loadFlagStorage(this, flags);
- }
-
- protected WorkRegion(RegionConstructorData regionConstructorData) {
- super(regionConstructorData);
- RegionDataRepository.loadFlagStorage(this, flags);
- }
-
- @Override
- public void update(DynamicRegion updateFrom) {
- }
-
- @Override
- public void setFlags(DefaultFlagStorage flags) {
- this.flags = flags;
- }
-
- @Override
- public @NonNull Area getBuildArea() {
- FlagOptional testblock = flags.get(Flag.TESTBLOCK);
- if (testblock.isWithDefault(TestblockMode.NO_VALUE)) {
- return Area.EMPTY;
- }
- if (testblock.isWithDefault(TestblockMode.SOUTH)) {
- return northArea.setResetFile(this.frame);
- } else {
- return southArea.setResetFile(this.frame);
- }
- }
-
- @Override
- public @NonNull Area getTestblockArea() {
- FlagOptional testblock = flags.get(Flag.TESTBLOCK);
- if (testblock.isWithDefault(TestblockMode.NO_VALUE)) {
- return Area.EMPTY;
- }
- if (testblock.isWithDefault(TestblockMode.SOUTH)) {
- return southArea.setResetFile(this.testblock);
- } else {
- return northArea.setResetFile(this.testblock);
- }
- }
-}
diff --git a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/display/MicroWarGear21DisplayRegion.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/display/MicroWarGear21DisplayRegion.java
deleted file mode 100644
index 36ff321a..00000000
--- a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/display/MicroWarGear21DisplayRegion.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * 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.dynamic.normal.display;
-
-import de.steamwar.bausystem.region.GameModeConfig;
-import de.steamwar.bausystem.region.RegionType;
-import de.steamwar.bausystem.region.dynamic.RegionConstructorData;
-import de.steamwar.bausystem.region.dynamic.VariantSelector;
-import de.steamwar.bausystem.region.dynamic.normal.DisplayRegion;
-import de.steamwar.bausystem.region.dynamic.normal.NormalArea;
-import lombok.Getter;
-import lombok.NonNull;
-import org.bukkit.Bukkit;
-
-import java.io.File;
-
-public class MicroWarGear21DisplayRegion extends DisplayRegion {
-
- public static final int widthX = 57;
- public static final int widthZ = 57;
-
- private static final File MODE_DIR = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "sections/regions/microwargear21/");
- private static final File REGION_FILE = new File(MODE_DIR, "Display.schem");
-
- @Getter
- private final GameModeConfig gameModeConfig = new GameModeConfig(null); // TODO: Implement
-
- public MicroWarGear21DisplayRegion(int minX, int minZ) {
- super(minX, minZ);
- area = new NormalArea(minX, 0, minZ, widthX, 255, widthZ, VariantSelector.File(REGION_FILE), false, this);
- }
-
- public MicroWarGear21DisplayRegion(RegionConstructorData regionConstructorData) {
- super(regionConstructorData);
- area = new NormalArea(minX, 0, minZ, widthX, 255, widthZ, VariantSelector.File(REGION_FILE), false, this);
- }
-
- @Override
- public @NonNull RegionType getType() {
- return RegionType.DRY;
- }
-}
diff --git a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/display/MiniWarGear21DisplayRegion.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/display/MiniWarGear21DisplayRegion.java
deleted file mode 100644
index e97eabbc..00000000
--- a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/display/MiniWarGear21DisplayRegion.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * 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.dynamic.normal.display;
-
-import de.steamwar.bausystem.region.GameModeConfig;
-import de.steamwar.bausystem.region.RegionType;
-import de.steamwar.bausystem.region.dynamic.RegionConstructorData;
-import de.steamwar.bausystem.region.dynamic.VariantSelector;
-import de.steamwar.bausystem.region.dynamic.normal.DisplayRegion;
-import de.steamwar.bausystem.region.dynamic.normal.NormalArea;
-import lombok.Getter;
-import lombok.NonNull;
-import org.bukkit.Bukkit;
-
-import java.io.File;
-
-public class MiniWarGear21DisplayRegion extends DisplayRegion {
-
- public static final int widthX = 57;
- public static final int widthZ = 38;
-
- private static final File MODE_DIR = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "sections/regions/miniwargear21/");
- private static final File REGION_FILE = new File(MODE_DIR, "Display.schem");
-
- @Getter
- private final GameModeConfig gameModeConfig = new GameModeConfig(null); // TODO: Implement
-
- public MiniWarGear21DisplayRegion(int minX, int minZ) {
- super(minX, minZ);
- area = new NormalArea(minX, 0, minZ, widthX, 255, widthZ, VariantSelector.File(REGION_FILE), false, this);
- }
-
- public MiniWarGear21DisplayRegion(RegionConstructorData regionConstructorData) {
- super(regionConstructorData);
- area = new NormalArea(minX, 0, minZ, widthX, 255, widthZ, VariantSelector.File(REGION_FILE), false, this);
- }
-
- @Override
- public @NonNull RegionType getType() {
- return RegionType.DRY;
- }
-}
diff --git a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/display/WarGear21DisplayRegion.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/display/WarGear21DisplayRegion.java
deleted file mode 100644
index be778ebf..00000000
--- a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/display/WarGear21DisplayRegion.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * 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.dynamic.normal.display;
-
-import de.steamwar.bausystem.region.GameModeConfig;
-import de.steamwar.bausystem.region.RegionType;
-import de.steamwar.bausystem.region.dynamic.RegionConstructorData;
-import de.steamwar.bausystem.region.dynamic.VariantSelector;
-import de.steamwar.bausystem.region.dynamic.normal.DisplayRegion;
-import de.steamwar.bausystem.region.dynamic.normal.NormalArea;
-import lombok.Getter;
-import lombok.NonNull;
-import org.bukkit.Bukkit;
-
-import java.io.File;
-
-public class WarGear21DisplayRegion extends DisplayRegion {
-
- public static final int widthX = 133;
- public static final int widthZ = 95;
-
- private static final File MODE_DIR = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "sections/regions/wargear21/");
- private static final File REGION_FILE = new File(MODE_DIR, "Display.schem");
-
- @Getter
- private final GameModeConfig gameModeConfig = new GameModeConfig(null); // TODO: Implement
-
- public WarGear21DisplayRegion(int minX, int minZ) {
- super(minX, minZ);
- area = new NormalArea(minX, 0, minZ, widthX, 255, widthZ, VariantSelector.File(REGION_FILE), false, this);
- }
-
- public WarGear21DisplayRegion(RegionConstructorData regionConstructorData) {
- super(regionConstructorData);
- area = new NormalArea(minX, 0, minZ, widthX, 255, widthZ, VariantSelector.File(REGION_FILE), false, this);
- }
-
- @Override
- public @NonNull RegionType getType() {
- return RegionType.DRY;
- }
-}
diff --git a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/display/WarShip21DisplayRegion.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/display/WarShip21DisplayRegion.java
deleted file mode 100644
index 21859326..00000000
--- a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/display/WarShip21DisplayRegion.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * 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.dynamic.normal.display;
-
-import de.steamwar.bausystem.region.GameModeConfig;
-import de.steamwar.bausystem.region.RegionType;
-import de.steamwar.bausystem.region.dynamic.RegionConstructorData;
-import de.steamwar.bausystem.region.dynamic.VariantSelector;
-import de.steamwar.bausystem.region.dynamic.normal.DisplayRegion;
-import de.steamwar.bausystem.region.dynamic.normal.NormalArea;
-import lombok.Getter;
-import lombok.NonNull;
-import org.bukkit.Bukkit;
-
-import java.io.File;
-
-public class WarShip21DisplayRegion extends DisplayRegion {
-
- public static final int widthX = 266;
- public static final int widthZ = 95;
-
- private static final File MODE_DIR = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "sections/regions/warship21/");
- private static final File REGION_FILE = new File(MODE_DIR, "Display.schem");
-
- @Getter
- private final GameModeConfig gameModeConfig = new GameModeConfig(null); // TODO: Implement
-
- public WarShip21DisplayRegion(int minX, int minZ) {
- super(minX, minZ);
- area = new NormalArea(minX, 0, minZ, widthX, 255, widthZ, VariantSelector.File(REGION_FILE), false, this);
- }
-
- public WarShip21DisplayRegion(RegionConstructorData regionConstructorData) {
- super(regionConstructorData);
- area = new NormalArea(minX, 0, minZ, widthX, 255, widthZ, VariantSelector.File(REGION_FILE), false, this);
- }
-
- @Override
- public @NonNull RegionType getType() {
- return RegionType.DRY;
- }
-}
diff --git a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/work/MicroWarGear21WorkRegion.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/work/MicroWarGear21WorkRegion.java
deleted file mode 100644
index 9739477c..00000000
--- a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/work/MicroWarGear21WorkRegion.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * 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.dynamic.normal.work;
-
-import de.steamwar.bausystem.region.GameModeConfig;
-import de.steamwar.bausystem.region.RegionType;
-import de.steamwar.bausystem.region.dynamic.RegionConstructorData;
-import de.steamwar.bausystem.region.dynamic.VariantSelector;
-import de.steamwar.bausystem.region.dynamic.normal.NormalArea;
-import de.steamwar.bausystem.region.dynamic.normal.WorkRegion;
-import lombok.Getter;
-import lombok.NonNull;
-import org.bukkit.Bukkit;
-
-import java.io.File;
-
-public class MicroWarGear21WorkRegion extends WorkRegion {
-
- public static final int widthX = 57;
- public static final int widthZ = 114;
-
- private static final File MODE_DIR = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "sections/regions/microwargear21/");
- private static final File REGION_FILE = new File(MODE_DIR, "Work.schem");
- private static final File FRAME_FILE = new File(MODE_DIR, "Frame.schem");
- private static final File TESTBLOCK_FILE = new File(MODE_DIR, "Testblock.schem");
-
- @Getter
- private final GameModeConfig gameModeConfig = new GameModeConfig(null); // TODO: Implement
-
- public MicroWarGear21WorkRegion(int minX, int minZ) {
- super(minX, minZ);
- area = new NormalArea(minX, 0, minZ, widthX, 255, widthZ, VariantSelector.File(REGION_FILE), false, this);
- northArea = new NormalArea(minX + 25, 32, minZ + 25, 7, 7, 7, null, false, this);
- southArea = new NormalArea(minX + 25, 32, minZ + 82, 7, 7, 7, null, true, this);
- frame = VariantSelector.File(FRAME_FILE);
- testblock = VariantSelector.File(TESTBLOCK_FILE);
- }
-
- public MicroWarGear21WorkRegion(RegionConstructorData regionConstructorData) {
- super(regionConstructorData);
- area = new NormalArea(minX, 0, minZ, widthX, 255, widthZ, VariantSelector.File(REGION_FILE), false, this);
- northArea = new NormalArea(minX + 25, 32, minZ + 25, 7, 7, 7, null, false, this);
- southArea = new NormalArea(minX + 25, 32, minZ + 82, 7, 7, 7, null, true, this);
- frame = VariantSelector.File(FRAME_FILE);
- testblock = VariantSelector.File(TESTBLOCK_FILE);
- }
-
- @Override
- public @NonNull RegionType getType() {
- return RegionType.DRY;
- }
-}
diff --git a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/work/MiniWarGear21WorkRegion.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/work/MiniWarGear21WorkRegion.java
deleted file mode 100644
index 77fce2df..00000000
--- a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/work/MiniWarGear21WorkRegion.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * 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.dynamic.normal.work;
-
-import de.steamwar.bausystem.region.GameModeConfig;
-import de.steamwar.bausystem.region.RegionType;
-import de.steamwar.bausystem.region.dynamic.RegionConstructorData;
-import de.steamwar.bausystem.region.dynamic.VariantSelector;
-import de.steamwar.bausystem.region.dynamic.normal.NormalArea;
-import de.steamwar.bausystem.region.dynamic.normal.WorkRegion;
-import lombok.Getter;
-import lombok.NonNull;
-import org.bukkit.Bukkit;
-
-import java.io.File;
-
-public class MiniWarGear21WorkRegion extends WorkRegion {
-
- public static final int widthX = 95;
- public static final int widthZ = 152;
-
- private static final File MODE_DIR = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "sections/regions/miniwargear21/");
- private static final File REGION_FILE = new File(MODE_DIR, "Work.schem");
- private static final File FRAME_FILE = new File(MODE_DIR, "Frame.schem");
- private static final File TESTBLOCK_FILE = new File(MODE_DIR, "Testblock.schem");
-
- @Getter
- private final GameModeConfig gameModeConfig = new GameModeConfig(null); // TODO: Implement
-
- public MiniWarGear21WorkRegion(int minX, int minZ) {
- super(minX, minZ);
- area = new NormalArea(minX, 0, minZ, widthX, 255, widthZ, VariantSelector.File(REGION_FILE), false, this);
- northArea = new NormalArea(minX + 29, 32, minZ + 29, 37, 26, 22, null, false, this);
- southArea = new NormalArea(minX + 29, 32, minZ + 101, 37, 26, 22, null, true, this);
- frame = VariantSelector.File(FRAME_FILE);
- testblock = VariantSelector.File(TESTBLOCK_FILE);
- }
-
- public MiniWarGear21WorkRegion(RegionConstructorData regionConstructorData) {
- super(regionConstructorData);
- area = new NormalArea(minX, 0, minZ, widthX, 255, widthZ, VariantSelector.File(REGION_FILE), false, this);
- northArea = new NormalArea(minX + 29, 32, minZ + 29, 37, 26, 22, null, false, this);
- southArea = new NormalArea(minX + 29, 32, minZ + 101, 37, 26, 22, null, true, this);
- frame = VariantSelector.File(FRAME_FILE);
- testblock = VariantSelector.File(TESTBLOCK_FILE);
- }
-
- @Override
- public @NonNull RegionType getType() {
- return RegionType.DRY;
- }
-}
diff --git a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/work/WarGear21WorkRegion.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/work/WarGear21WorkRegion.java
deleted file mode 100644
index ff3075d8..00000000
--- a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/work/WarGear21WorkRegion.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * 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.dynamic.normal.work;
-
-import de.steamwar.bausystem.region.GameModeConfig;
-import de.steamwar.bausystem.region.RegionType;
-import de.steamwar.bausystem.region.dynamic.RegionConstructorData;
-import de.steamwar.bausystem.region.dynamic.VariantSelector;
-import de.steamwar.bausystem.region.dynamic.normal.NormalArea;
-import de.steamwar.bausystem.region.dynamic.normal.WorkRegion;
-import lombok.Getter;
-import lombok.NonNull;
-import org.bukkit.Bukkit;
-
-import java.io.File;
-
-public class WarGear21WorkRegion extends WorkRegion {
-
- public static final int widthX = 133;
- public static final int widthZ = 228;
-
- private static final File MODE_DIR = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "sections/regions/wargear21/");
- private static final File REGION_FILE = new File(MODE_DIR, "Work.schem");
- private static final File FRAME_FILE = new File(MODE_DIR, "Frame.schem");
- private static final File TESTBLOCK_FILE = new File(MODE_DIR, "Testblock.schem");
-
- @Getter
- private final GameModeConfig gameModeConfig = new GameModeConfig(null); // TODO: Implement
-
- public WarGear21WorkRegion(int minX, int minZ) {
- super(minX, minZ);
- area = new NormalArea(minX, 0, minZ, widthX, 255, widthZ, VariantSelector.File(REGION_FILE), false, this);
- northArea = new NormalArea(minX + 33, 32, minZ + 42, 67, 41, 47, null, false, this);
- southArea = new NormalArea(minX + 33, 32, minZ + 139, 67, 41, 47, null, true, this);
- frame = VariantSelector.File(FRAME_FILE);
- testblock = VariantSelector.File(TESTBLOCK_FILE);
- }
-
- public WarGear21WorkRegion(RegionConstructorData regionConstructorData) {
- super(regionConstructorData);
- area = new NormalArea(minX, 0, minZ, widthX, 255, widthZ, VariantSelector.File(REGION_FILE), false, this);
- northArea = new NormalArea(minX + 33, 32, minZ + 42, 67, 41, 47, null, false, this);
- southArea = new NormalArea(minX + 33, 32, minZ + 139, 67, 41, 47, null, true, this);
- frame = VariantSelector.File(FRAME_FILE);
- testblock = VariantSelector.File(TESTBLOCK_FILE);
- }
-
- @Override
- public @NonNull RegionType getType() {
- return RegionType.DRY;
- }
-}
diff --git a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/work/WarShip21WorkRegion.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/work/WarShip21WorkRegion.java
deleted file mode 100644
index eb0e5133..00000000
--- a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/normal/work/WarShip21WorkRegion.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * 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.dynamic.normal.work;
-
-import de.steamwar.bausystem.region.GameModeConfig;
-import de.steamwar.bausystem.region.RegionType;
-import de.steamwar.bausystem.region.dynamic.RegionConstructorData;
-import de.steamwar.bausystem.region.dynamic.VariantSelector;
-import de.steamwar.bausystem.region.dynamic.normal.NormalArea;
-import de.steamwar.bausystem.region.dynamic.normal.WorkRegion;
-import lombok.Getter;
-import lombok.NonNull;
-import org.bukkit.Bukkit;
-
-import java.io.File;
-
-public class WarShip21WorkRegion extends WorkRegion {
-
- public static final int widthX = 285;
- public static final int widthZ = 228;
-
- private static final File MODE_DIR = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "sections/regions/warship21/");
- private static final File REGION_FILE = new File(MODE_DIR, "Work.schem");
- private static final File FRAME_FILE = new File(MODE_DIR, "Frame.schem");
- private static final File TESTBLOCK_FILE = new File(MODE_DIR, "Testblock.schem");
-
- @Getter
- private final GameModeConfig gameModeConfig = new GameModeConfig(null); // TODO: Implement
-
- public WarShip21WorkRegion(int minX, int minZ) {
- super(minX, minZ);
- area = new NormalArea(minX, 0, minZ, widthX, 255, widthZ, VariantSelector.File(REGION_FILE), false, this);
- northArea = new NormalArea(minX + 28, 19, minZ + 25, 230, 58, 43, null, false, this);
- southArea = new NormalArea(minX + 28, 19, minZ + 160, 230, 58, 43, null, true, this);
- frame = VariantSelector.File(FRAME_FILE);
- testblock = VariantSelector.File(TESTBLOCK_FILE);
- }
-
- public WarShip21WorkRegion(RegionConstructorData regionConstructorData) {
- super(regionConstructorData);
- area = new NormalArea(minX, 0, minZ, widthX, 255, widthZ, VariantSelector.File(REGION_FILE), false, this);
- northArea = new NormalArea(minX + 28, 19, minZ + 25, 230, 58, 43, null, false, this);
- southArea = new NormalArea(minX + 28, 19, minZ + 160, 230, 58, 43, null, true, this);
- frame = VariantSelector.File(FRAME_FILE);
- testblock = VariantSelector.File(TESTBLOCK_FILE);
- }
-
- @Override
- public @NonNull RegionType getType() {
- return RegionType.WET;
- }
-}
diff --git a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/path/PathAreaTile.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/path/PathAreaTile.java
deleted file mode 100644
index 0ee75853..00000000
--- a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/path/PathAreaTile.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * 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.dynamic.path;
-
-import com.sk89q.worldedit.bukkit.BukkitAdapter;
-import com.sk89q.worldedit.extent.clipboard.Clipboard;
-import com.sk89q.worldedit.math.BlockVector3;
-import com.sk89q.worldedit.math.transform.AffineTransform;
-import de.steamwar.bausystem.region.Point;
-import de.steamwar.bausystem.region.Region;
-import de.steamwar.bausystem.region.RegionSystem;
-import de.steamwar.bausystem.region.RegionType;
-import de.steamwar.bausystem.utils.FlatteningWrapper;
-import de.steamwar.bausystem.utils.PasteBuilder;
-import lombok.NonNull;
-import lombok.RequiredArgsConstructor;
-import org.bukkit.Bukkit;
-import org.bukkit.World;
-
-import javax.annotation.Nullable;
-import java.io.File;
-import java.util.function.Function;
-
-public class PathAreaTile implements Region.Area { // TODO: Change to VariantSelector
-
- private static final File PATH_DIR = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "sections/path");
- private static final File PATH_CENTER = new File(PATH_DIR, "PathCenter.schem");
-
- @RequiredArgsConstructor
- private enum Path {
- North(0, -18, 5, 0, 0),
- South(0, 19, 5, 0, 180),
- West(-18, 0, 5, 0, 90),
- East(19, 0, 5, 0, 270),
- ;
-
- private final int checkX;
- private final int checkZ;
- private final int pasteX;
- private final int pasteZ;
- private final int rotate;
-
- private static final Function function = connectionType -> {
- return new File(PATH_DIR, "PathEdge" + connectionType.name() + ".schem");
- };
- }
-
- @RequiredArgsConstructor
- private enum PathCorner {
- NorthEast(Path.North, Path.East, 14, 0, 0),
- EastSouth(Path.East, Path.South, 14, 0, 270),
- SouthWest(Path.South, Path.West, 14, 0, 180),
- WestNorth(Path.West, Path.North, 14, 0, 90),
- ;
-
- private final Path check1;
- private final Path check2;
- private final int pasteX;
- private final int pasteZ;
- private final int rotate;
-
- private static final TriFunction function = (connectionType1, connectionType2, connectionTypeCorner) -> {
- return new File(PATH_DIR, "PathCorner" + connectionType1.name() + connectionType2.name() + connectionTypeCorner.name() + ".schem");
- };
-
- private interface TriFunction {
- W apply(T t, U u, V v);
- }
- }
-
- private final int minX;
- private final int minZ;
- private final Point minPoint;
- private final Point maxPoint;
- private final Point copyPoint;
- private final Region region;
-
- public PathAreaTile(int minX, int minZ, Region region) {
- this.minX = minX;
- this.minZ = minZ;
-
- minPoint = new Point(minX, 0, minZ);
- maxPoint = new Point(minX + 18, 255, minZ + 18);
- copyPoint = new Point(minX + 9, 0, minZ + 9);
-
- this.region = region;
- }
-
- @Override
- public @NonNull Point getMinPoint(boolean extension) {
- return minPoint;
- }
-
- @Override
- public @NonNull Point getMaxPoint(boolean extension) {
- return maxPoint;
- }
-
- @Override
- public @NonNull Point getCopyPoint() {
- return copyPoint;
- }
-
- @Nullable
- @Override
- public File getResetFile() {
- return null; // I know what I do!
- }
-
- @Override
- public void reset(PasteBuilder pasteBuilder, boolean extension) {
- Point minPoint = getMinPoint(false);
-
- paste(PATH_CENTER, minPoint.add(5, 0, 5), 0);
-
- for (Path path : Path.values()) {
- RegionType.ConnectionType connectionType = RegionSystem.INSTANCE.get(minPoint.add(path.checkX, 0, path.checkZ).toLocation((World) null)).getType().getConnectionType();
- File schem = path.function.apply(connectionType);
- if (schem.exists()) {
- paste(schem, minPoint.add(path.pasteX, 0, path.pasteZ), path.rotate);
- }
- }
-
- for (PathCorner corner : PathCorner.values()) {
- RegionType.ConnectionType connectionType1 = RegionSystem.INSTANCE.get(minPoint.add(corner.check1.checkX, 0, corner.check1.checkZ).toLocation((World) null)).getType().getConnectionType();
- RegionType.ConnectionType connectionType2 = RegionSystem.INSTANCE.get(minPoint.add(corner.check2.checkX, 0, corner.check2.checkZ).toLocation((World) null)).getType().getConnectionType();
- RegionType.ConnectionType connectionTypeCorner = RegionSystem.INSTANCE.get(minPoint.add(corner.check1.checkX + corner.check2.checkX, 0, corner.check1.checkZ + corner.check2.checkZ).toLocation((World) null)).getType().getConnectionType();
- File schem = corner.function.apply(connectionType1, connectionType2, connectionTypeCorner);
- if (schem.exists()) {
- System.out.println(connectionType1 + " " + connectionType2 + " " + connectionTypeCorner + " " + schem);
- paste(schem, minPoint.add(corner.pasteX, 0, corner.pasteZ), corner.rotate);
- } else {
- System.out.println(connectionType1 + " " + connectionType2 + " " + connectionTypeCorner + " " + PATH_DIR.getAbsolutePath() + "/PathCornerUnknown.schem");
- paste(new File(PATH_DIR, "PathCornerUnknown.schem"), minPoint.add(corner.pasteX, 0, corner.pasteZ), corner.rotate);
- }
- }
- }
-
- private void paste(File file, Point minPoint, int rotate) {
- Clipboard clipboard = FlatteningWrapper.impl.loadSchematic(file);
- BlockVector3 offset = clipboard.getRegion().getMinimumPoint().subtract(clipboard.getOrigin());
- BlockVector3 to = minPoint.toBlockVector3().subtract(offset);
- clipboard.paste(BukkitAdapter.adapt(Bukkit.getWorlds().get(0)), to, false, true, new AffineTransform().rotateY(rotate));
- }
-}
diff --git a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/path/PathRegion.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/path/PathRegion.java
deleted file mode 100644
index b03e3fa7..00000000
--- a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/path/PathRegion.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * 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.dynamic.path;
-
-import de.steamwar.bausystem.region.GameModeConfig;
-import de.steamwar.bausystem.region.RegionHistory;
-import de.steamwar.bausystem.region.RegionType;
-import de.steamwar.bausystem.region.dynamic.*;
-import de.steamwar.bausystem.region.dynamic.spawn.SpawnAreaTile;
-import lombok.NonNull;
-import org.bukkit.Bukkit;
-
-import java.io.File;
-
-public class PathRegion extends DynamicRegion {
-
- private static final File SECTIONS_DIR = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "sections");
- private static final File RESET_FILE = new File(SECTIONS_DIR, "path/Path.schem"); // Temp
-
- private DefaultFlagStorage flagStorage = new NonNormalFlagStorage();
- private final Area area;
-
- public PathRegion(int minX, int minZ) {
- super(minX, minZ);
- RegionDataRepository.loadFlagStorage(this, flagStorage);
- if (minX >= -28 && minX <= 10 && minZ >= -28 && minZ <= 10) {
- area = new SpawnAreaTile(minX, minZ, VariantSelector.File(RESET_FILE), this);
- } else {
- area = new PathAreaTile(minX, minZ, this);
- }
- }
-
- public PathRegion(RegionConstructorData regionConstructorData) {
- super(regionConstructorData);
- RegionDataRepository.loadFlagStorage(this, flagStorage);
- if (minX >= -28 && minX <= 10 && minZ >= -28 && minZ <= 10) {
- area = new SpawnAreaTile(minX, minZ, VariantSelector.File(RESET_FILE), this);
- } else {
- area = new PathAreaTile(minX, minZ, this);
- }
- }
-
- @Override
- public void update(DynamicRegion updateFrom) {
- if (area instanceof PathAreaTile) {
- area.reset(null, false);
- }
- }
-
- @Override
- public void setFlags(DefaultFlagStorage flags) {
- }
-
- @Override
- public @NonNull RegionType getType() {
- if (area instanceof SpawnAreaTile) {
- return RegionType.SPAWN_EXTENSION;
- } else {
- return RegionType.PATH;
- }
- }
-
- @Override
- public @NonNull DefaultFlagStorage getFlags() {
- return flagStorage;
- }
-
- @Override
- public @NonNull Area getArea() {
- return area;
- }
-
- @Override
- public @NonNull Area getBuildArea() {
- return Area.EMPTY;
- }
-
- @Override
- public @NonNull Area getTestblockArea() {
- return Area.EMPTY;
- }
-
- @Override
- public @NonNull GameModeConfig getGameModeConfig() {
- return GameModeConfig.EMPTY;
- }
-
- @Override
- public @NonNull RegionHistory getHistory() {
- return RegionHistory.EMPTY;
- }
-}
diff --git a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/spawn/SpawnAreaTile.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/spawn/SpawnAreaTile.java
deleted file mode 100644
index 18e99a41..00000000
--- a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/spawn/SpawnAreaTile.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * 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.dynamic.spawn;
-
-import de.steamwar.bausystem.region.Point;
-import de.steamwar.bausystem.region.Region;
-import de.steamwar.bausystem.region.dynamic.VariantSelector;
-import de.steamwar.bausystem.utils.PasteBuilder;
-import lombok.NonNull;
-
-import javax.annotation.Nullable;
-import java.io.File;
-
-public class SpawnAreaTile implements Region.Area {
-
- private final int minX;
- private final int minZ;
- private final VariantSelector variantSelector;
- private final Point minPoint;
- private final Point maxPoint;
- private final Point copyPoint;
- private final Region region;
-
- public SpawnAreaTile(int minX, int minZ, VariantSelector variantSelector, Region region) {
- this.minX = minX;
- this.minZ = minZ;
- this.variantSelector = variantSelector;
-
- minPoint = new Point(minX, 0, minZ);
- maxPoint = new Point(minX + 18, 255, minZ + 18);
- copyPoint = new Point(minX + 9, 0, minZ + 9);
-
- this.region = region;
- }
-
- @Override
- public @NonNull Point getMinPoint(boolean extension) {
- return minPoint;
- }
-
- @Override
- public @NonNull Point getMaxPoint(boolean extension) {
- return maxPoint;
- }
-
- @Override
- public @NonNull Point getCopyPoint() {
- return copyPoint;
- }
-
- @Nullable
- @Override
- public File getResetFile() {
- return variantSelector.selectVariant(minX, minZ).orElseThrow();
- }
-
- @Override
- public void reset(PasteBuilder pasteBuilder, boolean extension) {
- SpawnResetter.reset(region);
- }
-}
diff --git a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/spawn/SpawnPathRegion.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/spawn/SpawnPathRegion.java
deleted file mode 100644
index 799e7b73..00000000
--- a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/spawn/SpawnPathRegion.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * 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.dynamic.spawn;
-
-import de.steamwar.bausystem.region.GameModeConfig;
-import de.steamwar.bausystem.region.RegionHistory;
-import de.steamwar.bausystem.region.RegionType;
-import de.steamwar.bausystem.region.dynamic.*;
-import lombok.NonNull;
-import org.bukkit.Bukkit;
-
-import java.io.File;
-
-public class SpawnPathRegion extends DynamicRegion {
-
- private static final File SECTIONS_DIR = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "sections");
- private static final File RESET_FILE_NORTH = new File(SECTIONS_DIR, "spawn/SpawnNorth.schem");
- private static final File RESET_FILE_SOUTH = new File(SECTIONS_DIR, "spawn/SpawnSouth.schem");
- private static final File RESET_FILE_WEST = new File(SECTIONS_DIR, "spawn/SpawnWest.schem");
- private static final File RESET_FILE_EAST = new File(SECTIONS_DIR, "spawn/SpawnEast.schem");
-
- private DefaultFlagStorage flagStorage = new NonNormalFlagStorage();
- private final Area area;
-
- public SpawnPathRegion(int minX, int minZ) {
- super(minX, minZ);
- RegionDataRepository.loadFlagStorage(this, flagStorage);
- area = new SpawnAreaTile(minX, minZ, getResetFile(minX, minZ), this);
- }
-
- public SpawnPathRegion(RegionConstructorData regionConstructorData) {
- super(regionConstructorData);
- RegionDataRepository.loadFlagStorage(this, flagStorage);
- area = new SpawnAreaTile(minX, minZ, getResetFile(minX, minZ), this);
- }
-
- private static VariantSelector getResetFile(int minX, int minZ) {
- if (minX == -28) {
- return VariantSelector.File(RESET_FILE_WEST);
- } else if (minX == 10) {
- return VariantSelector.File(RESET_FILE_EAST);
- } else if (minZ == -28) {
- return VariantSelector.File(RESET_FILE_NORTH);
- } else if (minZ == 10) {
- return VariantSelector.File(RESET_FILE_SOUTH);
- }
- throw new IllegalArgumentException("Invalid minX: " + minX + ", minZ: " + minZ);
- }
-
- @Override
- public void update(DynamicRegion updateFrom) {
- // TODO: Implement
- }
-
- @Override
- public void setFlags(DefaultFlagStorage flags) {
- }
-
- @Override
- public @NonNull RegionType getType() {
- return RegionType.SPAWN_PATH;
- }
-
- @Override
- public @NonNull DefaultFlagStorage getFlags() {
- return flagStorage;
- }
-
- @Override
- public @NonNull Area getArea() {
- return area;
- }
-
- @Override
- public @NonNull Area getBuildArea() {
- return Area.EMPTY;
- }
-
- @Override
- public @NonNull Area getTestblockArea() {
- return Area.EMPTY;
- }
-
- @Override
- public @NonNull GameModeConfig getGameModeConfig() {
- return GameModeConfig.EMPTY;
- }
-
- @Override
- public @NonNull RegionHistory getHistory() {
- return RegionHistory.EMPTY;
- }
-}
diff --git a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/spawn/SpawnRegion.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/spawn/SpawnRegion.java
deleted file mode 100644
index fcafbaa4..00000000
--- a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/spawn/SpawnRegion.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * 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.dynamic.spawn;
-
-import de.steamwar.bausystem.region.GameModeConfig;
-import de.steamwar.bausystem.region.RegionHistory;
-import de.steamwar.bausystem.region.RegionType;
-import de.steamwar.bausystem.region.dynamic.*;
-import lombok.NonNull;
-import org.bukkit.Bukkit;
-
-import java.io.File;
-
-public class SpawnRegion extends DynamicRegion {
-
- private static final File SECTIONS_DIR = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "sections");
- private static final File RESET_FILE = new File(SECTIONS_DIR, "spawn/SpawnMiddle.schem");
-
- private DefaultFlagStorage flagStorage = new NonNormalFlagStorage();
- private final Area area;
-
- public SpawnRegion(int minX, int minZ) {
- super(minX, minZ);
- RegionDataRepository.loadFlagStorage(this, flagStorage);
- area = new SpawnAreaTile(minX, minZ, VariantSelector.File(RESET_FILE), this);
- }
-
- public SpawnRegion(RegionConstructorData regionConstructorData) {
- super(regionConstructorData);
- RegionDataRepository.loadFlagStorage(this, flagStorage);
- area = new SpawnAreaTile(minX, minZ, VariantSelector.File(RESET_FILE), this);
- }
-
- @Override
- public void update(DynamicRegion updateFrom) {
- SpawnResetter.reset(null);
- }
-
- @Override
- public void setFlags(DefaultFlagStorage flags) {
- }
-
- @Override
- public @NonNull RegionType getType() {
- return RegionType.SPAWN;
- }
-
- @Override
- public @NonNull DefaultFlagStorage getFlags() {
- return flagStorage;
- }
-
- @Override
- public @NonNull Area getArea() {
- return area;
- }
-
- @Override
- public @NonNull Area getBuildArea() {
- return Area.EMPTY;
- }
-
- @Override
- public @NonNull Area getTestblockArea() {
- return Area.EMPTY;
- }
-
- @Override
- public @NonNull GameModeConfig getGameModeConfig() {
- return GameModeConfig.EMPTY;
- }
-
- @Override
- public @NonNull RegionHistory getHistory() {
- return RegionHistory.EMPTY;
- }
-}
diff --git a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/spawn/SpawnResetter.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/spawn/SpawnResetter.java
deleted file mode 100644
index 07af88e0..00000000
--- a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/spawn/SpawnResetter.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * 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.dynamic.spawn;
-
-import com.sk89q.worldedit.bukkit.BukkitAdapter;
-import com.sk89q.worldedit.extent.clipboard.Clipboard;
-import com.sk89q.worldedit.math.BlockVector3;
-import de.steamwar.bausystem.region.*;
-import de.steamwar.bausystem.utils.FlatteningWrapper;
-import lombok.experimental.UtilityClass;
-import org.bukkit.Bukkit;
-import org.bukkit.Location;
-
-import java.io.File;
-import java.util.List;
-import java.util.stream.Collectors;
-
-@UtilityClass
-public class SpawnResetter {
-
- private static final File SECTIONS_DIR = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "sections");
- private static final File RESET_FILE = new File(SECTIONS_DIR, "spawn/SpawnBig.schem");
-
- public static final Location BIG_WORLD_SPAWN = new Location(Bukkit.getWorlds().get(0), 0.5, 26, 0.5);
- public static final Location SMALL_WORLD_SPAWN = new Location(Bukkit.getWorlds().get(0), 0.5, 32, 0.5);
-
- private static final Location LOCATION = new Location(null, 0, 0, 0);
-
- public boolean isBigSpawn() {
- Region spawnRegion = DynamicRegionSystem.INSTANCE.get(LOCATION);
- List neighbours = DynamicRegionSystem.INSTANCE.getNeighbours(spawnRegion)
- .filter(r -> r.getType() == RegionType.PATH || r.getType() == RegionType.SPAWN_EXTENSION || r.getType() == RegionType.SPAWN_PATH)
- .collect(Collectors.toList());
- return neighbours.size() == 8;
- }
-
- public void reset(Region region) {
- Region spawnRegion = DynamicRegionSystem.INSTANCE.get(LOCATION);
- List neighbours = DynamicRegionSystem.INSTANCE.getNeighbours(spawnRegion)
- .filter(r -> r.getType() == RegionType.PATH || r.getType() == RegionType.SPAWN_EXTENSION || r.getType() == RegionType.SPAWN_PATH)
- .collect(Collectors.toList());
-
- if (neighbours.size() == 8) {
- Bukkit.getWorlds().get(0).setSpawnLocation(BIG_WORLD_SPAWN);
-
- Region.Area area = spawnRegion.getArea();
- Point minPoint = area.getMinPoint(false).subtract(19, 0, 19);
- Clipboard clipboard = FlatteningWrapper.impl.loadSchematic(RESET_FILE);
- BlockVector3 offset = clipboard.getRegion().getMinimumPoint().subtract(clipboard.getOrigin());
- BlockVector3 to = minPoint.toBlockVector3().subtract(offset);
- clipboard.paste(BukkitAdapter.adapt(Bukkit.getWorlds().get(0)), to);
-
- if (spawnRegion != region) {
- RegionUtils.message(spawnRegion, "REGION_RESET_RESETED");
- }
- neighbours.forEach(r -> {
- if (r != region) {
- RegionUtils.message(r, "REGION_RESET_RESETED");
- }
- });
- return;
- } else {
- Bukkit.getWorlds().get(0).setSpawnLocation(SMALL_WORLD_SPAWN);
- }
-
- internalReset(spawnRegion, spawnRegion != region);
- DynamicRegionSystem.INSTANCE.getNeighbours(spawnRegion)
- .forEach(r -> internalReset(r, r != region));
- }
-
- private void internalReset(Region region, boolean message) {
- Region.Area area = region.getArea();
- Point minPoint = area.getMinPoint(false);
- Clipboard clipboard = FlatteningWrapper.impl.loadSchematic(area.getResetFile());
- BlockVector3 offset = clipboard.getRegion().getMinimumPoint().subtract(clipboard.getOrigin());
- BlockVector3 to = minPoint.toBlockVector3().subtract(offset);
- clipboard.paste(BukkitAdapter.adapt(Bukkit.getWorlds().get(0)), to);
- if (message) {
- RegionUtils.message(region, "REGION_RESET_RESETED");
- }
- }
-}
diff --git a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/special/DrySpecialRegion.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/special/DrySpecialRegion.java
deleted file mode 100644
index ac13f278..00000000
--- a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/special/DrySpecialRegion.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * 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.dynamic.special;
-
-import de.steamwar.bausystem.region.RegionType;
-import de.steamwar.bausystem.region.dynamic.RegionConstructorData;
-import de.steamwar.bausystem.region.dynamic.VariantSelector;
-import lombok.NonNull;
-import org.bukkit.Bukkit;
-
-import java.io.File;
-
-public class DrySpecialRegion extends SpecialRegion {
-
- private static final File SECTIONS_DIR = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "sections");
- private static final File RESET_FILE = new File(SECTIONS_DIR, "special/DryRegion.schem");
-
- public DrySpecialRegion(int minX, int minZ) {
- super(minX, minZ);
- area = new SpecialAreaTile(minX, minZ, VariantSelector.File(RESET_FILE));
- }
-
- public DrySpecialRegion(RegionConstructorData regionConstructorData) {
- super(regionConstructorData);
- area = new SpecialAreaTile(minX, minZ, VariantSelector.File(RESET_FILE));
- }
-
- @Override
- public @NonNull RegionType getType() {
- return RegionType.DRY_SPECIAL;
- }
-
- @Override
- public int getFloorLevel() {
- return 32;
- }
-}
diff --git a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/special/SpecialAreaTile.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/special/SpecialAreaTile.java
deleted file mode 100644
index 81ebfc3c..00000000
--- a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/special/SpecialAreaTile.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * 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.dynamic.special;
-
-import de.steamwar.bausystem.region.Point;
-import de.steamwar.bausystem.region.Region;
-import de.steamwar.bausystem.region.dynamic.VariantSelector;
-import de.steamwar.bausystem.utils.PasteBuilder;
-import lombok.NonNull;
-
-import javax.annotation.Nullable;
-import java.io.File;
-
-public class SpecialAreaTile implements Region.Area {
-
- private final int minX;
- private final int minZ;
- private final VariantSelector variantSelector;
-
- private final Point minPoint;
- private final Point maxPoint;
- private final Point copyPoint;
-
- public SpecialAreaTile(int minX, int minZ, VariantSelector variantSelector) {
- this.minX = minX;
- this.minZ = minZ;
- this.variantSelector = variantSelector;
-
- minPoint = new Point(minX, 0, minZ);
- maxPoint = new Point(minX + 18, 255, minZ + 18);
- copyPoint = new Point(minX + 9, 0, minZ + 9);
- }
-
- @Override
- public @NonNull Point getMinPoint(boolean extension) {
- return minPoint;
- }
-
- @Override
- public @NonNull Point getMaxPoint(boolean extension) {
- return maxPoint;
- }
-
- @Override
- public @NonNull Point getCopyPoint() {
- return copyPoint;
- }
-
- @Nullable
- @Override
- public File getResetFile() {
- return variantSelector.selectVariant(minX, minZ).orElseThrow();
- }
-
- @Override
- public void reset(PasteBuilder pasteBuilder, boolean extension) {
- pasteBuilder.minPoint(minPoint)
- .maxPoint(maxPoint)
- .run();
- }
-}
diff --git a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/special/SpecialFlagStorage.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/special/SpecialFlagStorage.java
deleted file mode 100644
index ce7c9b4c..00000000
--- a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/special/SpecialFlagStorage.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * 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.dynamic.special;
-
-import de.steamwar.bausystem.region.DynamicRegionSystem;
-import de.steamwar.bausystem.region.dynamic.DynamicRegion;
-import de.steamwar.bausystem.region.dynamic.normal.NormalFlagStorage;
-import de.steamwar.bausystem.region.flags.Flag;
-import de.steamwar.bausystem.region.flags.TNTMode;
-import lombok.NonNull;
-
-public class SpecialFlagStorage extends NormalFlagStorage {
-
- private DynamicRegion region;
-
- public SpecialFlagStorage(DynamicRegion region) {
- this.region = region;
- flagMap.put(Flag.TNT, TNTMode.DENY);
- }
-
- @Override
- public & Flag.Value> boolean set(@NonNull Flag flag, @NonNull T value) {
- boolean result = super.set(flag, value);
- DynamicRegionSystem.INSTANCE.getConnectedRegions(region).forEach(other -> {
- other.getFlags().getBackedMap().put(flag, value);
- other.getFlags().save();
- });
- return result;
- }
-}
diff --git a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/special/SpecialRegion.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/special/SpecialRegion.java
deleted file mode 100644
index a76f0bf3..00000000
--- a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/special/SpecialRegion.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * 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.dynamic.special;
-
-import de.steamwar.bausystem.region.GameModeConfig;
-import de.steamwar.bausystem.region.RegionHistory;
-import de.steamwar.bausystem.region.dynamic.DefaultFlagStorage;
-import de.steamwar.bausystem.region.dynamic.DynamicRegion;
-import de.steamwar.bausystem.region.dynamic.RegionConstructorData;
-import de.steamwar.bausystem.region.dynamic.RegionDataRepository;
-import lombok.Getter;
-import lombok.NonNull;
-
-public abstract class SpecialRegion extends DynamicRegion {
-
- @Getter
- private DefaultFlagStorage flags = new SpecialFlagStorage(this);
-
- @Getter
- protected SpecialAreaTile area;
-
- protected SpecialRegion(int minX, int minZ) {
- super(minX, minZ);
- RegionDataRepository.loadFlagStorage(this, flags);
- }
-
- protected SpecialRegion(RegionConstructorData regionConstructorData) {
- super(regionConstructorData);
- RegionDataRepository.loadFlagStorage(this, flags);
- }
-
- @Override
- public void update(DynamicRegion updateFrom) {
- }
-
- @Override
- public void setFlags(DefaultFlagStorage flags) {
- this.flags = flags;
- }
-
- @Override
- public @NonNull Area getBuildArea() {
- return Area.EMPTY;
- }
-
- @Override
- public @NonNull Area getTestblockArea() {
- return Area.EMPTY;
- }
-
- @Override
- public @NonNull GameModeConfig getGameModeConfig() {
- return GameModeConfig.EMPTY;
- }
-
- @Override
- public @NonNull RegionHistory getHistory() {
- return RegionHistory.EMPTY;
- }
-}
diff --git a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/special/WetSpecialRegion.java b/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/special/WetSpecialRegion.java
deleted file mode 100644
index 607d5f87..00000000
--- a/BauSystem/BauSystem_RegionDynamic2/src/de/steamwar/bausystem/region/dynamic/special/WetSpecialRegion.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * 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.dynamic.special;
-
-import de.steamwar.bausystem.region.RegionType;
-import de.steamwar.bausystem.region.dynamic.RegionConstructorData;
-import de.steamwar.bausystem.region.dynamic.VariantSelector;
-import lombok.NonNull;
-import org.bukkit.Bukkit;
-
-import java.io.File;
-
-public class WetSpecialRegion extends SpecialRegion {
-
- private static final File SECTIONS_DIR = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "sections");
- private static final File RESET_FILE = new File(SECTIONS_DIR, "special/WetRegion.schem");
-
- public WetSpecialRegion(int minX, int minZ) {
- super(minX, minZ);
- area = new SpecialAreaTile(minX, minZ, VariantSelector.File(RESET_FILE));
- }
-
- public WetSpecialRegion(RegionConstructorData regionConstructorData) {
- super(regionConstructorData);
- area = new SpecialAreaTile(minX, minZ, VariantSelector.File(RESET_FILE));
- }
-
- @Override
- public @NonNull RegionType getType() {
- return RegionType.WET_SPECIAL;
- }
-}