From 46d928349f4490746b9f5c8ed5fff9e4e0b8d660 Mon Sep 17 00:00:00 2001 From: YoyoNow Date: Mon, 16 Mar 2026 19:36:57 +0100 Subject: [PATCH] Add name to RegionConstructorData --- .../region/DynamicRegionCommand.java | 18 +++++++++++------ .../bausystem/region/DynamicRegionSystem.java | 20 ++----------------- .../dynamic/DynamicRegionRepository.java | 4 ++-- .../region/dynamic/RegionConstructorData.java | 1 + .../display/MiWG7DisplayRegion.java | 1 + .../region/dynamic/path/PathRegion.java | 1 + .../region/dynamic/special/dry/DryRegion.java | 1 + .../region/dynamic/special/wet/WetRegion.java | 1 + 8 files changed, 21 insertions(+), 26 deletions(-) diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/DynamicRegionCommand.java b/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/DynamicRegionCommand.java index 136eabbd..73eb44c9 100644 --- a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/DynamicRegionCommand.java +++ b/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/DynamicRegionCommand.java @@ -22,6 +22,7 @@ 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.DynamicRegionRepository; +import de.steamwar.bausystem.region.dynamic.RegionConstructorData; import de.steamwar.bausystem.region.dynamic.Tile; import de.steamwar.bausystem.utils.PasteBuilder; import de.steamwar.command.AbstractSWCommand; @@ -32,7 +33,9 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import java.util.Collection; +import java.util.Map; import java.util.UUID; +import java.util.stream.Collectors; @AbstractSWCommand.PartOf(RegionCommand.class) public class DynamicRegionCommand extends SWCommand { @@ -50,7 +53,7 @@ public class DynamicRegionCommand extends SWCommand { // Check location! - Class regionClass = DynamicRegionSystem.getRegionClassByIdentifier(regionType); + Class regionClass = DynamicRegionSystem.identifierDataMap.get(regionType); DynamicRegion dynamicRegion = DynamicRegionRepository.constructRegion(regionClass, UUID.randomUUID(), tile.getMinX(), tile.getMinZ()); if (dynamicRegion == null) { // TODO: Give error to user @@ -73,16 +76,19 @@ public class DynamicRegionCommand extends SWCommand { return new TypeMapper<>() { @Override public String map(CommandSender commandSender, String[] previousArguments, String s) { - if (DynamicRegionSystem.hasRegionClassForIdentifier(s)) { - return s; - } else { - return null; + for (Map.Entry, RegionConstructorData> entry : DynamicRegionSystem.constructorDataMap.entrySet()) { + if (entry.getValue().name().equalsIgnoreCase(s)) { + return s; + } } + return null; } @Override public Collection tabCompletes(CommandSender sender, PreviousArguments previousArguments, String s) { - return DynamicRegionSystem.allRegionIdentifiers(); + return DynamicRegionSystem.constructorDataMap.values() + .stream().map(RegionConstructorData::name) + .collect(Collectors.toSet()); } }; } diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/DynamicRegionSystem.java b/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/DynamicRegionSystem.java index a4413860..97e8576d 100644 --- a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/DynamicRegionSystem.java +++ b/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/DynamicRegionSystem.java @@ -62,24 +62,8 @@ public class DynamicRegionSystem implements RegionSystem { regionTypeMap.getOrDefault(region.getType(), Collections.emptySet()).remove(region); } - private static Map, RegionConstructorData> constructorDataMap = new HashMap<>(); - private static Map> identifierDataMap = new HashMap<>(); - - public static RegionConstructorData getRegionConstructorByRegionClass(Class regionClass) { - return constructorDataMap.get(regionClass); - } - - public static Class getRegionClassByIdentifier(String identifier) { - return identifierDataMap.get(identifier); - } - - public static boolean hasRegionClassForIdentifier(String identifier) { - return identifierDataMap.containsKey(identifier); - } - - public static Set allRegionIdentifiers() { - return Collections.unmodifiableSet(identifierDataMap.keySet()); - } + public static Map, RegionConstructorData> constructorDataMap = new HashMap<>(); + public static Map> identifierDataMap = new HashMap<>(); @Override public void load() { diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/DynamicRegionRepository.java b/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/DynamicRegionRepository.java index 99ec80e8..eba78ae7 100644 --- a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/DynamicRegionRepository.java +++ b/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/DynamicRegionRepository.java @@ -132,7 +132,7 @@ public class DynamicRegionRepository { } // TODO: Maybe add static method to DynamicRegionSystem - Class regionClass = DynamicRegionSystem.getRegionClassByIdentifier(identifier); + Class regionClass = DynamicRegionSystem.identifierDataMap.get(identifier); if (regionClass == null) { RegionSystem.LOGGER.log(Level.SEVERE, "Failed to read region metadata file (region no longer exists)"); continue; @@ -242,7 +242,7 @@ public class DynamicRegionRepository { } if (!region.getType().isGlobal()) { - RegionConstructorData constructorData = DynamicRegionSystem.getRegionConstructorByRegionClass(region.getClass()); + RegionConstructorData constructorData = DynamicRegionSystem.constructorDataMap.get(region.getClass()); Point point = region.getArea().getMinPoint(false); Tile tile = Tile.fromPoint(point).get(); diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/RegionConstructorData.java b/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/RegionConstructorData.java index 483241e1..87e3ab76 100644 --- a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/RegionConstructorData.java +++ b/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/RegionConstructorData.java @@ -31,6 +31,7 @@ import java.lang.annotation.Target; @Target(ElementType.TYPE) public @interface RegionConstructorData { String identifier(); + String name(); int widthX(); int widthZ(); boolean placeable() default true; diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/modes/microwargear_7/display/MiWG7DisplayRegion.java b/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/modes/microwargear_7/display/MiWG7DisplayRegion.java index b73c0ce6..02801c2d 100644 --- a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/modes/microwargear_7/display/MiWG7DisplayRegion.java +++ b/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/modes/microwargear_7/display/MiWG7DisplayRegion.java @@ -37,6 +37,7 @@ import java.util.UUID; @RegionConstructorData( identifier = "microwargear_display", + name = "MicoWarGearDisplay", widthX = Tile.tileSize, widthZ = Tile.tileSize ) diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/path/PathRegion.java b/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/path/PathRegion.java index 3be9e689..9bf55f39 100644 --- a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/path/PathRegion.java +++ b/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/path/PathRegion.java @@ -30,6 +30,7 @@ import java.util.UUID; @RegionConstructorData( identifier = "path", + name = "Path", widthX = Tile.tileSize, widthZ = Tile.tileSize ) diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/special/dry/DryRegion.java b/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/special/dry/DryRegion.java index 5060e214..c7090f7e 100644 --- a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/special/dry/DryRegion.java +++ b/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/special/dry/DryRegion.java @@ -37,6 +37,7 @@ import static de.steamwar.bausystem.region.dynamic.special.SpecialArea.SPECIAL_P @RegionConstructorData( identifier = "special_dry", + name = "Dry", widthX = Tile.tileSize, widthZ = Tile.tileSize ) diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/special/wet/WetRegion.java b/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/special/wet/WetRegion.java index f8293f4f..5c1faddd 100644 --- a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/special/wet/WetRegion.java +++ b/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/special/wet/WetRegion.java @@ -36,6 +36,7 @@ import static de.steamwar.bausystem.region.dynamic.special.SpecialArea.SPECIAL_P @RegionConstructorData( identifier = "special_wet", + name = "Wet", widthX = Tile.tileSize, widthZ = Tile.tileSize )