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; - } -}