Add PathRegion

This commit is contained in:
2025-08-03 23:46:35 +02:00
parent 986c087dec
commit 5cce0ad5eb
15 changed files with 586 additions and 59 deletions
@@ -30,6 +30,7 @@ import de.steamwar.bausystem.BauSystem;
import de.steamwar.bausystem.features.util.SelectCommand;
import de.steamwar.bausystem.region.Point;
import de.steamwar.bausystem.region.Region;
import de.steamwar.bausystem.region.RegionHistory;
import de.steamwar.bausystem.region.RegionUtils;
import de.steamwar.bausystem.region.flags.Flag;
import de.steamwar.bausystem.shared.Pair;
@@ -71,7 +72,10 @@ public class RegionCommand extends SWCommand {
@Register(value = "undo", description = "REGION_REGION_HELP_UNDO")
public void undoCommand(@Validator Player p) {
Region region = Region.getRegion(p.getLocation());
if (checkGlobalRegion(region, p)) return;
if (region.getHistory() == RegionHistory.EMPTY) {
BauSystem.MESSAGE.send("REGION_REGION_NO_REGION", p);
return;
}
if (region.getHistory().undo()) {
RegionUtils.message(region, "REGION_REGION_UNDID");
@@ -83,7 +87,8 @@ public class RegionCommand extends SWCommand {
@Register(value = "redo", description = "REGION_REGION_HELP_REDO")
public void redoCommand(@Validator Player p) {
Region region = Region.getRegion(p.getLocation());
if (checkGlobalRegion(region, p)) {
if (region.getHistory() == RegionHistory.EMPTY) {
BauSystem.MESSAGE.send("REGION_REGION_NO_REGION", p);
return;
}
@@ -26,15 +26,24 @@ import lombok.RequiredArgsConstructor;
@Getter
public enum RegionType {
GLOBAL(true, false),
NORMAL(false, true),
GLOBAL(true, false, true, ConnectionType.Global),
NORMAL(false, true, false, ConnectionType.Closed),
SPAWN(false, false),
SPAWN_PATH(false, false),
SPAWN_EXTENSION(false, false),
PATH(false, false),
SPAWN(false, false, true, ConnectionType.Closed),
SPAWN_PATH(false, false, true, ConnectionType.Path),
SPAWN_EXTENSION(false, false, false, ConnectionType.Closed),
PATH(false, false, false, ConnectionType.Path),
;
private final boolean global;
private final boolean createBackup;
private final boolean cannotDelete;
private final ConnectionType connectionType;
public enum ConnectionType {
Closed,
Path,
Water,
Global
}
}
@@ -205,10 +205,10 @@ public class PasteBuilder {
}
public EditSession run() {
if (pastPoint == null) {
throw new IllegalStateException("pastePoint is null");
if (pastPoint != null || minPoint != null) {
return FlatteningWrapper.impl.paste(this);
}
return FlatteningWrapper.impl.paste(this);
throw new IllegalStateException("pastePoint is null");
}
public interface ClipboardProvider {