Add initial regions

This commit is contained in:
2026-03-18 14:06:02 +01:00
parent f5c20c7885
commit e20b899f87
24 changed files with 1370 additions and 53 deletions
@@ -161,7 +161,7 @@ public class DynamicRegionVisualizer implements SWPlayer.Component, Listener {
RInteraction interaction = new RInteraction(entityServer, location.clone().add(0.5, 0, 0.5));
interaction.setInteraction((player, entityAction) -> {
if (placement != null) {
if (regionType.isGlobal()) placement.click(tile);
placement.click(tile, regionType.isGlobal());
return;
}
@@ -254,45 +254,47 @@ public class DynamicRegionVisualizer implements SWPlayer.Component, Listener {
valid = true;
}
public void click(Tile tile) {
public void click(Tile tile, boolean global) {
if (tile.getTileX() >= sourceTile.getTileX() && tile.getTileX() <= sourceTile.getTileX() + dx && tile.getTileZ() >= sourceTile.getTileZ() && tile.getTileZ() <= sourceTile.getTileZ() + dz) {
SWInventory inv = new SWInventory(player, 9, "Place Region: " + constructorData.name());
inv.setItem(0, new SWItem(SWItem.getDye(1), "§cDeselect", click -> {
placement = null;
wireframe.die();
player.closeInventory();
}));
if (valid) {
SWInventory inv = new SWInventory(player, 9, "Place Region: " + constructorData.name());
inv.setItem(0, new SWItem(SWItem.getDye(1), "§cDeselect", click -> {
placement = null;
wireframe.die();
player.closeInventory();
}));
inv.setItem(8, new SWItem(SWItem.getDye(10), "§aPlace", click -> {
player.closeInventory();
place();
}));
inv.open();
} else {
inv.setItem(8, new SWItem(SWItem.getDye(8), "§8Place", click -> {
}));
}
inv.open();
return;
}
if (dx == 0 && dz == 0) {
sourceTile = tile;
} else {
Set<Tile> tiles = new HashSet<>();
for (int x = 0; x <= dx; x++) {
for (int z = 0; z <= dz; z++) {
tiles.add(Tile.fromTile(x + sourceTile.getTileX(), z + sourceTile.getTileZ()).orElseThrow());
}
}
Tile selected = tiles.stream().min(Comparator.comparing(current -> {
int dx = current.getTileX() - tile.getTileX();
int dz = current.getTileZ() - tile.getTileZ();
return dx * dx + dz * dz;
}))
.orElseThrow();
int dx = tile.getTileX() - selected.getTileX();
int dz = tile.getTileZ() - selected.getTileZ();
sourceTile = sourceTile.add(dx, dz).orElseThrow();
if (!global) {
return;
}
Set<Tile> tiles = new HashSet<>();
for (int x = 0; x <= dx; x++) {
for (int z = 0; z <= dz; z++) {
tiles.add(Tile.fromTile(x + sourceTile.getTileX(), z + sourceTile.getTileZ()).orElseThrow());
}
}
Tile selected = tiles.stream().min(Comparator.comparing(current -> {
int dx = current.getTileX() - tile.getTileX();
int dz = current.getTileZ() - tile.getTileZ();
return dx * dx + dz * dz;
}))
.orElseThrow();
int dx = tile.getTileX() - selected.getTileX();
int dz = tile.getTileZ() - selected.getTileZ();
sourceTile = sourceTile.add(dx, dz).orElseThrow();
check();
}