Fix constructors

This commit is contained in:
2026-03-23 12:19:10 +01:00
parent 60a65a92c2
commit 9c47942237
16 changed files with 286 additions and 78 deletions
@@ -57,10 +57,23 @@ public abstract class MultiTileArea implements Region.Area {
}
}
public void addTile(Tile tile) {
tiles.add(tile);
/**
* @return {@code true} if the {@link MultiTileArea} did not already contain the {@link Tile}.
*/
public boolean addTile(Tile tile) {
return tiles.add(tile);
}
/**
* @return {@code true} if the {@link MultiTileArea} did not already contain any {@link Tile} passed as argument.
*/
public boolean addTiles(Set<Tile> tiles) {
return this.tiles.addAll(tiles);
}
/**
* @return {@code true} if the {@link MultiTileArea} no longer has any {@link Tile}'s associated with it.
*/
public boolean removeTile(Tile tile) {
tiles.remove(tile);
return tiles.isEmpty();
@@ -25,23 +25,23 @@ import de.steamwar.bausystem.region.dynamic.PasteUtils;
import de.steamwar.bausystem.region.dynamic.Tile;
import de.steamwar.bausystem.region.dynamic.VariantSelector;
import de.steamwar.bausystem.utils.PasteBuilder;
import lombok.Getter;
import lombok.NonNull;
import org.bukkit.Location;
import org.jetbrains.annotations.Nullable;
import java.io.File;
import java.util.UUID;
public class AreaTile implements Region.Area {
private final UUID regionIdentifier;
@Getter
private final Tile tile;
private final Point minPoint;
private final Point maxPoint;
private final Point copyPoint;
private final VariantSelector selector;
public AreaTile(Tile tile, int tileX, int tileZ, Region region, VariantSelector selector) {
regionIdentifier = region.getID();
public AreaTile(Tile tile, int tileX, int tileZ, VariantSelector selector) {
this.tile = tile;
minPoint = Point.fromLocation(tile.getMinLocation()).setY(WORLD_MIN_Y);
maxPoint = Point.fromLocation(tile.add(tileX - 1, tileZ - 1).orElseThrow().getMaxLocation()).setY(WORLD_MAX_Y);
int x = minPoint.getX() + (maxPoint.getX() - minPoint.getX()) / 2;
@@ -19,6 +19,8 @@
package de.steamwar.bausystem.region.dynamic.modes.microwargear_7;
import com.google.gson.JsonArray;
import com.google.gson.stream.JsonWriter;
import de.steamwar.bausystem.region.RegionBackups;
import de.steamwar.bausystem.region.RegionData;
import de.steamwar.bausystem.region.RegionHistory;
@@ -32,6 +34,7 @@ import org.bukkit.Bukkit;
import org.bukkit.Material;
import java.io.File;
import java.io.IOException;
import java.util.UUID;
@RegionConstructorData(
@@ -49,14 +52,27 @@ public class MiWG7DisplayRegion extends DynamicRegion {
private static final File DIRECTORY = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "sections/microwargear_7/display");
private static final VariantSelector SELECTOR = VariantSelector.Get(DIRECTORY);
private final Area area;
private final AreaTile area;
public MiWG7DisplayRegion(UUID id, int minX, int minZ) {
super(id, minX, minZ);
Tile tile = Tile.fromXZ(minX, minZ).orElseThrow();
area = new AreaTile(tile, 1, 1, this, SELECTOR);
public MiWG7DisplayRegion(Tile tile) {
this(UUID.randomUUID(), tile);
finishCreate();
}
public MiWG7DisplayRegion(UUID id, JsonArray tileData) {
this(id, readTile(tileData));
finishLoad();
}
private MiWG7DisplayRegion(UUID id, Tile tile) {
super(id, null);
area = new AreaTile(tile, TILE_X, TILE_Z, SELECTOR);
regionData = new DisplayRegionData(this);
finishInit();
}
@Override
public void writeData(JsonWriter writer) throws IOException {
writeTile(writer, area.getTile());
}
@Override
@@ -19,6 +19,8 @@
package de.steamwar.bausystem.region.dynamic.modes.microwargear_7;
import com.google.gson.JsonArray;
import com.google.gson.stream.JsonWriter;
import de.steamwar.bausystem.region.*;
import de.steamwar.bausystem.region.dynamic.*;
import de.steamwar.bausystem.region.dynamic.modes.AreaBlock;
@@ -33,6 +35,7 @@ import org.bukkit.Bukkit;
import org.bukkit.Material;
import java.io.File;
import java.io.IOException;
import java.util.UUID;
@RegionConstructorData(
@@ -58,10 +61,19 @@ public class MiWG7PlotRegion extends DynamicRegion {
private final RegionHistory history;
private final RegionBackups backups;
public MiWG7PlotRegion(UUID id, int minX, int minZ) {
super(id, minX, minZ);
Tile tile = Tile.fromXZ(minX, minZ).orElseThrow();
area = new AreaTile(tile, TILE_X, TILE_Z, this, REGION);
public MiWG7PlotRegion(Tile tile) {
this(UUID.randomUUID(), tile);
finishCreate();
}
public MiWG7PlotRegion(UUID id, JsonArray tileData) {
this(id, readTile(tileData));
finishLoad();
}
private MiWG7PlotRegion(UUID id, Tile tile) {
super(id, null);
area = new AreaTile(tile, TILE_X, TILE_Z, REGION);
Pair<AreaBlock, AreaBlock> pair = AreaBlock.create(this, 36, new Point(7, 7, 7), new Point(7, 0, 7), new Point(7, 7, 7), AreaBlock.CopyLocation.CENTER, 50);
northArea = pair.getKey();
@@ -70,7 +82,11 @@ public class MiWG7PlotRegion extends DynamicRegion {
regionData = new PlotRegionData(this);
history = new RegionHistory.Impl(10);
backups = new PlotRegionBackups(this, PlotRegionData::new);
finishInit();
}
@Override
public void writeData(JsonWriter writer) throws IOException {
writeTile(writer, area.getTile());
}
@Override
@@ -19,6 +19,8 @@
package de.steamwar.bausystem.region.dynamic.modes.miniwargear;
import com.google.gson.JsonArray;
import com.google.gson.stream.JsonWriter;
import de.steamwar.bausystem.region.RegionBackups;
import de.steamwar.bausystem.region.RegionData;
import de.steamwar.bausystem.region.RegionHistory;
@@ -32,6 +34,7 @@ import org.bukkit.Bukkit;
import org.bukkit.Material;
import java.io.File;
import java.io.IOException;
import java.util.UUID;
@RegionConstructorData(
@@ -49,14 +52,27 @@ public class MWGDisplayRegion extends DynamicRegion {
private static final File DIRECTORY = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "sections/miniwargear/display");
private static final VariantSelector SELECTOR = VariantSelector.Get(DIRECTORY);
private final Area area;
private final AreaTile area;
public MWGDisplayRegion(UUID id, int minX, int minZ) {
super(id, minX, minZ);
Tile tile = Tile.fromXZ(minX, minZ).orElseThrow();
area = new AreaTile(tile, TILE_X, TILE_Z, this, SELECTOR);
public MWGDisplayRegion(Tile tile) {
this(UUID.randomUUID(), tile);
finishCreate();
}
public MWGDisplayRegion(UUID id, JsonArray tileData) {
this(id, readTile(tileData));
finishLoad();
}
private MWGDisplayRegion(UUID id, Tile tile) {
super(id, null);
area = new AreaTile(tile, TILE_X, TILE_Z, SELECTOR);
regionData = new DisplayRegionData(this);
finishInit();
}
@Override
public void writeData(JsonWriter writer) throws IOException {
writeTile(writer, area.getTile());
}
@Override
@@ -19,6 +19,8 @@
package de.steamwar.bausystem.region.dynamic.modes.miniwargear;
import com.google.gson.JsonArray;
import com.google.gson.stream.JsonWriter;
import de.steamwar.bausystem.region.*;
import de.steamwar.bausystem.region.dynamic.*;
import de.steamwar.bausystem.region.dynamic.modes.AreaBlock;
@@ -33,6 +35,7 @@ import org.bukkit.Bukkit;
import org.bukkit.Material;
import java.io.File;
import java.io.IOException;
import java.util.UUID;
@RegionConstructorData(
@@ -58,19 +61,32 @@ public class MWGPlotRegion extends DynamicRegion {
private final RegionHistory history;
private final RegionBackups backups;
public MWGPlotRegion(UUID id, int minX, int minZ) {
super(id, minX, minZ);
history = new RegionHistory.Impl(10);
backups = new PlotRegionBackups(this, PlotRegionData::new);
Tile tile = Tile.fromXZ(minX, minZ).orElseThrow();
area = new AreaTile(tile, TILE_X, TILE_Z, this, REGION);
public MWGPlotRegion(Tile tile) {
this(UUID.randomUUID(), tile);
finishCreate();
}
public MWGPlotRegion(UUID id, JsonArray tileData) {
this(id, readTile(tileData));
finishLoad();
}
private MWGPlotRegion(UUID id, Tile tile) {
super(id, null);
area = new AreaTile(tile, TILE_X, TILE_Z, REGION);
Pair<AreaBlock, AreaBlock> pair = AreaBlock.create(this, 36, new Point(37, 26, 22), new Point(7, 0, 7), new Point(7, 7, 7), AreaBlock.CopyLocation.CENTER, 50);
northArea = pair.getKey();
southArea = pair.getValue();
regionData = new PlotRegionData(this);
finishInit();
history = new RegionHistory.Impl(10);
backups = new PlotRegionBackups(this, PlotRegionData::new);
}
@Override
public void writeData(JsonWriter writer) throws IOException {
writeTile(writer, area.getTile());
}
@Override
@@ -19,6 +19,8 @@
package de.steamwar.bausystem.region.dynamic.modes.wargear_45;
import com.google.gson.JsonArray;
import com.google.gson.stream.JsonWriter;
import de.steamwar.bausystem.region.RegionBackups;
import de.steamwar.bausystem.region.RegionData;
import de.steamwar.bausystem.region.RegionHistory;
@@ -32,6 +34,7 @@ import org.bukkit.Bukkit;
import org.bukkit.Material;
import java.io.File;
import java.io.IOException;
import java.util.UUID;
@RegionConstructorData(
@@ -49,14 +52,27 @@ public class WG45DisplayRegion extends DynamicRegion {
private static final File DIRECTORY = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "sections/wargear_45/display");
private static final VariantSelector SELECTOR = VariantSelector.Get(DIRECTORY);
private final Area area;
private final AreaTile area;
public WG45DisplayRegion(UUID id, int minX, int minZ) {
super(id, minX, minZ);
Tile tile = Tile.fromXZ(minX, minZ).orElseThrow();
area = new AreaTile(tile, TILE_X, TILE_Z, this, SELECTOR);
public WG45DisplayRegion(Tile tile) {
this(UUID.randomUUID(), tile);
finishCreate();
}
public WG45DisplayRegion(UUID id, JsonArray tileData) {
this(id, readTile(tileData));
finishLoad();
}
private WG45DisplayRegion(UUID id, Tile tile) {
super(id, null);
area = new AreaTile(tile, TILE_X, TILE_Z, SELECTOR);
regionData = new DisplayRegionData(this);
finishInit();
}
@Override
public void writeData(JsonWriter writer) throws IOException {
writeTile(writer, area.getTile());
}
@Override
@@ -19,14 +19,14 @@
package de.steamwar.bausystem.region.dynamic.modes.wargear_45;
import com.google.gson.JsonArray;
import com.google.gson.stream.JsonWriter;
import de.steamwar.bausystem.region.*;
import de.steamwar.bausystem.region.dynamic.*;
import de.steamwar.bausystem.region.dynamic.modes.AreaBlock;
import de.steamwar.bausystem.region.dynamic.modes.AreaTile;
import de.steamwar.bausystem.region.dynamic.modes.PlotRegionBackups;
import de.steamwar.bausystem.region.dynamic.modes.PlotRegionData;
import de.steamwar.bausystem.region.dynamic.modes.miniwargear.MWGUtils;
import de.steamwar.bausystem.region.dynamic.modes.warship_230.WS230Utils;
import de.steamwar.bausystem.region.flags.Flag;
import de.steamwar.bausystem.shared.Pair;
import de.steamwar.sql.GameModeConfig;
@@ -35,6 +35,7 @@ import org.bukkit.Bukkit;
import org.bukkit.Material;
import java.io.File;
import java.io.IOException;
import java.util.UUID;
@RegionConstructorData(
@@ -60,10 +61,19 @@ public class WG45PlotRegion extends DynamicRegion {
private final RegionHistory history;
private final RegionBackups backups;
public WG45PlotRegion(UUID id, int minX, int minZ) {
super(id, minX, minZ);
Tile tile = Tile.fromXZ(minX, minZ).orElseThrow();
area = new AreaTile(tile, TILE_X, TILE_Z, this, REGION);
public WG45PlotRegion(Tile tile) {
this(UUID.randomUUID(), tile);
finishCreate();
}
public WG45PlotRegion(UUID id, JsonArray tileData) {
this(id, readTile(tileData));
finishLoad();
}
private WG45PlotRegion(UUID id, Tile tile) {
super(id, null);
area = new AreaTile(tile, TILE_X, TILE_Z, REGION);
Pair<AreaBlock, AreaBlock> pair = AreaBlock.create(this, 36, new Point(67, 41, 47), new Point(16, 0, 16), new Point(16, 16, 16), AreaBlock.CopyLocation.CENTER, 50);
northArea = pair.getKey();
@@ -72,7 +82,11 @@ public class WG45PlotRegion extends DynamicRegion {
regionData = new PlotRegionData(this);
history = new RegionHistory.Impl(10);
backups = new PlotRegionBackups(this, PlotRegionData::new);
finishInit();
}
@Override
public void writeData(JsonWriter writer) throws IOException {
writeTile(writer, area.getTile());
}
@Override
@@ -19,6 +19,8 @@
package de.steamwar.bausystem.region.dynamic.modes.warship_175;
import com.google.gson.JsonArray;
import com.google.gson.stream.JsonWriter;
import de.steamwar.bausystem.region.RegionBackups;
import de.steamwar.bausystem.region.RegionData;
import de.steamwar.bausystem.region.RegionHistory;
@@ -32,6 +34,7 @@ import org.bukkit.Bukkit;
import org.bukkit.Material;
import java.io.File;
import java.io.IOException;
import java.util.UUID;
@RegionConstructorData(
@@ -49,14 +52,27 @@ public class WS175DisplayRegion extends DynamicRegion {
private static final File DIRECTORY = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "sections/warship_175/display");
private static final VariantSelector SELECTOR = VariantSelector.Get(DIRECTORY);
private final Area area;
private final AreaTile area;
public WS175DisplayRegion(UUID id, int minX, int minZ) {
super(id, minX, minZ);
Tile tile = Tile.fromXZ(minX, minZ).orElseThrow();
area = new AreaTile(tile, TILE_X, TILE_Z, this, SELECTOR);
public WS175DisplayRegion(Tile tile) {
this(UUID.randomUUID(), tile);
finishCreate();
}
public WS175DisplayRegion(UUID id, JsonArray tileData) {
this(id, readTile(tileData));
finishLoad();
}
private WS175DisplayRegion(UUID id, Tile tile) {
super(id, null);
area = new AreaTile(tile, TILE_X, TILE_Z, SELECTOR);
regionData = new DisplayRegionData(this);
finishInit();
}
@Override
public void writeData(JsonWriter writer) throws IOException {
writeTile(writer, area.getTile());
}
@Override
@@ -19,6 +19,8 @@
package de.steamwar.bausystem.region.dynamic.modes.warship_175;
import com.google.gson.JsonArray;
import com.google.gson.stream.JsonWriter;
import de.steamwar.bausystem.region.*;
import de.steamwar.bausystem.region.dynamic.*;
import de.steamwar.bausystem.region.dynamic.modes.AreaBlock;
@@ -33,6 +35,7 @@ import org.bukkit.Bukkit;
import org.bukkit.Material;
import java.io.File;
import java.io.IOException;
import java.util.UUID;
@RegionConstructorData(
@@ -58,10 +61,19 @@ public class WS175PlotRegion extends DynamicRegion {
private final RegionHistory history;
private final RegionBackups backups;
public WS175PlotRegion(UUID id, int minX, int minZ) {
super(id, minX, minZ);
Tile tile = Tile.fromXZ(minX, minZ).orElseThrow();
area = new AreaTile(tile, TILE_X, TILE_Z, this, REGION);
public WS175PlotRegion(Tile tile) {
this(UUID.randomUUID(), tile);
finishCreate();
}
public WS175PlotRegion(UUID id, JsonArray tileData) {
this(id, readTile(tileData));
finishLoad();
}
private WS175PlotRegion(UUID id, Tile tile) {
super(id, null);
area = new AreaTile(tile, TILE_X, TILE_Z, REGION);
Pair<AreaBlock, AreaBlock> pair = AreaBlock.create(this, 25, new Point(175, 58, 39), new Point(12, 0, 8), new Point(12, 0, 8), AreaBlock.CopyLocation.SIDE, 132);
northArea = pair.getKey();
@@ -70,7 +82,11 @@ public class WS175PlotRegion extends DynamicRegion {
regionData = new PlotRegionData(this);
history = new RegionHistory.Impl(10);
backups = new PlotRegionBackups(this, PlotRegionData::new);
finishInit();
}
@Override
public void writeData(JsonWriter writer) throws IOException {
writeTile(writer, area.getTile());
}
@Override
@@ -19,6 +19,8 @@
package de.steamwar.bausystem.region.dynamic.modes.warship_230;
import com.google.gson.JsonArray;
import com.google.gson.stream.JsonWriter;
import de.steamwar.bausystem.region.RegionBackups;
import de.steamwar.bausystem.region.RegionData;
import de.steamwar.bausystem.region.RegionHistory;
@@ -32,6 +34,7 @@ import org.bukkit.Bukkit;
import org.bukkit.Material;
import java.io.File;
import java.io.IOException;
import java.util.UUID;
@RegionConstructorData(
@@ -49,14 +52,27 @@ public class WS230DisplayRegion extends DynamicRegion {
private static final File DIRECTORY = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "sections/warship_230/display");
private static final VariantSelector SELECTOR = VariantSelector.Get(DIRECTORY);
private final Area area;
private final AreaTile area;
public WS230DisplayRegion(UUID id, int minX, int minZ) {
super(id, minX, minZ);
Tile tile = Tile.fromXZ(minX, minZ).orElseThrow();
area = new AreaTile(tile, TILE_X, TILE_Z, this, SELECTOR);
public WS230DisplayRegion(Tile tile) {
this(UUID.randomUUID(), tile);
finishCreate();
}
public WS230DisplayRegion(UUID id, JsonArray tileData) {
this(id, readTile(tileData));
finishLoad();
}
private WS230DisplayRegion(UUID id, Tile tile) {
super(id, null);
area = new AreaTile(tile, TILE_X, TILE_Z, SELECTOR);
regionData = new DisplayRegionData(this);
finishInit();
}
@Override
public void writeData(JsonWriter writer) throws IOException {
writeTile(writer, area.getTile());
}
@Override
@@ -19,6 +19,8 @@
package de.steamwar.bausystem.region.dynamic.modes.warship_230;
import com.google.gson.JsonArray;
import com.google.gson.stream.JsonWriter;
import de.steamwar.bausystem.region.*;
import de.steamwar.bausystem.region.dynamic.*;
import de.steamwar.bausystem.region.dynamic.modes.AreaBlock;
@@ -33,6 +35,7 @@ import org.bukkit.Bukkit;
import org.bukkit.Material;
import java.io.File;
import java.io.IOException;
import java.util.UUID;
@RegionConstructorData(
@@ -58,10 +61,19 @@ public class WS230PlotRegion extends DynamicRegion {
private final RegionHistory history;
private final RegionBackups backups;
public WS230PlotRegion(UUID id, int minX, int minZ) {
super(id, minX, minZ);
Tile tile = Tile.fromXZ(minX, minZ).orElseThrow();
area = new AreaTile(tile, TILE_X, TILE_Z, this, REGION);
public WS230PlotRegion(Tile tile) {
this(UUID.randomUUID(), tile);
finishCreate();
}
public WS230PlotRegion(UUID id, JsonArray tileData) {
this(id, readTile(tileData));
finishLoad();
}
private WS230PlotRegion(UUID id, Tile tile) {
super(id, null);
area = new AreaTile(tile, TILE_X, TILE_Z, REGION);
Pair<AreaBlock, AreaBlock> pair = AreaBlock.create(this, 25, new Point(230, 58, 43), new Point(12, 0, 8), new Point(12, 0, 8), AreaBlock.CopyLocation.SIDE, 136);
northArea = pair.getKey();
@@ -70,7 +82,11 @@ public class WS230PlotRegion extends DynamicRegion {
regionData = new PlotRegionData(this);
history = new RegionHistory.Impl(10);
backups = new PlotRegionBackups(this, PlotRegionData::new);
finishInit();
}
@Override
public void writeData(JsonWriter writer) throws IOException {
writeTile(writer, area.getTile());
}
@Override
@@ -57,8 +57,9 @@ public class PathRegion extends DynamicRegion {
}
public void add(Tile tile) {
area.addTile(tile);
save();
if (area.addTile(tile)) {
save();
}
}
public void update(Tile toUpdate, NeighbourDirection toDirection) {
@@ -28,6 +28,7 @@ import de.steamwar.bausystem.region.dynamic.PasteUtils;
import de.steamwar.bausystem.region.dynamic.Tile;
import de.steamwar.bausystem.region.dynamic.VariantSelector;
import de.steamwar.bausystem.utils.PasteBuilder;
import lombok.Getter;
import lombok.NonNull;
import org.bukkit.Bukkit;
import org.bukkit.Location;
@@ -43,7 +44,8 @@ public class SpecialArea implements Region.Area {
public static final File SPECIAL_PATH_DIR = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "sections/special");
private final DynamicRegion region;
private final UUID regionIdentifier;
@Getter
private final Tile tile;
private final Point minPoint;
private final Point maxPoint;
@@ -52,7 +54,6 @@ public class SpecialArea implements Region.Area {
public SpecialArea(Tile tile, DynamicRegion region, VariantSelector resetFiles) {
this.region = region;
this.regionIdentifier = region.getID();
this.tile = tile;
minPoint = Point.fromLocation(tile.getMinLocation()).setY(WORLD_MIN_Y);
@@ -19,11 +19,15 @@
package de.steamwar.bausystem.region.dynamic.special.dry;
import com.google.gson.JsonArray;
import com.google.gson.stream.JsonWriter;
import de.steamwar.bausystem.region.RegionBackups;
import de.steamwar.bausystem.region.RegionData;
import de.steamwar.bausystem.region.RegionHistory;
import de.steamwar.bausystem.region.RegionType;
import de.steamwar.bausystem.region.dynamic.*;
import de.steamwar.bausystem.region.dynamic.modes.AreaTile;
import de.steamwar.bausystem.region.dynamic.modes.DisplayRegionData;
import de.steamwar.bausystem.region.dynamic.special.SpecialArea;
import de.steamwar.bausystem.region.dynamic.special.SpecialRegionData;
import de.steamwar.sql.GameModeConfig;
@@ -31,6 +35,7 @@ import lombok.NonNull;
import org.bukkit.Material;
import java.io.File;
import java.io.IOException;
import java.util.UUID;
import static de.steamwar.bausystem.region.dynamic.special.SpecialArea.SPECIAL_PATH_DIR;
@@ -48,12 +53,25 @@ public class DryRegion extends DynamicRegion {
private final SpecialArea area;
public DryRegion(UUID id, int minX, int minZ) {
super(id, minX, minZ);
Tile tile = Tile.fromXZ(minX, minZ).orElseThrow();
public DryRegion(Tile tile) {
this(UUID.randomUUID(), tile);
finishCreate();
}
public DryRegion(UUID id, JsonArray tileData) {
this(id, readTile(tileData));
finishLoad();
}
private DryRegion(UUID id, Tile tile) {
super(id, null);
area = new SpecialArea(tile, this, DRY);
regionData = new SpecialRegionData(this);
finishInit();
}
@Override
public void writeData(JsonWriter writer) throws IOException {
writeTile(writer, area.getTile());
}
@Override
@@ -19,17 +19,21 @@
package de.steamwar.bausystem.region.dynamic.special.wet;
import com.google.gson.JsonArray;
import com.google.gson.stream.JsonWriter;
import de.steamwar.bausystem.region.RegionBackups;
import de.steamwar.bausystem.region.RegionData;
import de.steamwar.bausystem.region.RegionHistory;
import de.steamwar.bausystem.region.RegionType;
import de.steamwar.bausystem.region.dynamic.*;
import de.steamwar.bausystem.region.dynamic.special.SpecialArea;
import de.steamwar.bausystem.region.dynamic.special.SpecialRegionData;
import de.steamwar.sql.GameModeConfig;
import lombok.NonNull;
import org.bukkit.Material;
import java.io.File;
import java.io.IOException;
import java.util.UUID;
import static de.steamwar.bausystem.region.dynamic.special.SpecialArea.SPECIAL_PATH_DIR;
@@ -47,12 +51,25 @@ public class WetRegion extends DynamicRegion {
private final SpecialArea area;
public WetRegion(UUID id, int minX, int minZ) {
super(id, minX, minZ);
Tile tile = Tile.fromXZ(minX, minZ).orElseThrow();
public WetRegion(Tile tile) {
this(UUID.randomUUID(), tile);
finishCreate();
}
public WetRegion(UUID id, JsonArray tileData) {
this(id, readTile(tileData));
finishLoad();
}
private WetRegion(UUID id, Tile tile) {
super(id, null);
area = new SpecialArea(tile, this, WET);
regionData = new WetRegionData(this);
finishInit();
}
@Override
public void writeData(JsonWriter writer) throws IOException {
writeTile(writer, area.getTile());
}
@Override