diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/regionnew/Region.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/regionnew/Region.java index 8c3a61eb..1bdab641 100644 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/regionnew/Region.java +++ b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/regionnew/Region.java @@ -31,6 +31,10 @@ import java.util.Optional; public interface Region { + static Region getRegion(Location location) { + return RegionSystem.REGION_SYSTEM.get(location); + } + RegionType getType(); & Flag.Value> RegionFlagPolicy hasFlag(@NonNull Flag flag); @@ -49,13 +53,13 @@ public interface Region { Optional getBuildMaxPoint(boolean extension); - boolean inBuildRegion(boolean extension); + boolean inBuildRegion(Location location, boolean extension); Optional getTestblockMinPoint(boolean extension); Optional getTestblockMaxPoint(boolean extension); - boolean inTestblockRegion(boolean extension); + boolean inTestblockRegion(Location location, boolean extension); // TODO: Add forEachChunk and getChunkOutsidePredicate diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/regionnew/RegionSystem.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/regionnew/RegionSystem.java index b5e8d63b..bbe4960d 100644 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/regionnew/RegionSystem.java +++ b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/regionnew/RegionSystem.java @@ -21,11 +21,14 @@ package de.steamwar.bausystem.regionnew; import org.bukkit.Location; +import java.lang.reflect.InvocationTargetException; import java.util.Optional; import java.util.stream.Stream; public interface RegionSystem { + RegionSystem REGION_SYSTEM = init(); + void load(); void save(); @@ -37,4 +40,48 @@ public interface RegionSystem { Stream getRegions(); boolean isModular(); + + private static RegionSystem init() { + try { + return (RegionSystem) Class.forName("de.steamwar.bausystem.regionnew.FixedRegionSystem").getConstructor().newInstance(); + } catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | + InvocationTargetException e) { + return new RegionSystem() { + @Override + public void load() { + throw new UnsupportedOperationException(); + } + + @Override + public void save() { + throw new UnsupportedOperationException(); + } + + @Override + public Region getGlobalRegion() { + throw new UnsupportedOperationException(); + } + + @Override + public Region get(Location location) { + throw new UnsupportedOperationException(); + } + + @Override + public Optional getRegion(String name) { + throw new UnsupportedOperationException(); + } + + @Override + public Stream getRegions() { + throw new UnsupportedOperationException(); + } + + @Override + public boolean isModular() { + throw new UnsupportedOperationException(); + } + }; + } + } } diff --git a/BauSystem/BauSystem_RegionFixed/src/de/steamwar/bausystem/regionnew/FixedGlobalRegion.java b/BauSystem/BauSystem_RegionFixed/src/de/steamwar/bausystem/regionnew/FixedGlobalRegion.java index 8288a057..81b39197 100644 --- a/BauSystem/BauSystem_RegionFixed/src/de/steamwar/bausystem/regionnew/FixedGlobalRegion.java +++ b/BauSystem/BauSystem_RegionFixed/src/de/steamwar/bausystem/regionnew/FixedGlobalRegion.java @@ -93,7 +93,7 @@ public final class FixedGlobalRegion implements Region { } @Override - public boolean inBuildRegion(boolean extension) { + public boolean inBuildRegion(Location location, boolean extension) { return false; } @@ -108,7 +108,7 @@ public final class FixedGlobalRegion implements Region { } @Override - public boolean inTestblockRegion(boolean extension) { + public boolean inTestblockRegion(Location location, boolean extension) { return false; } diff --git a/BauSystem/BauSystem_RegionFixed/src/de/steamwar/bausystem/regionnew/FixedRegion.java b/BauSystem/BauSystem_RegionFixed/src/de/steamwar/bausystem/regionnew/FixedRegion.java index 9d5bd31e..c89cdf61 100644 --- a/BauSystem/BauSystem_RegionFixed/src/de/steamwar/bausystem/regionnew/FixedRegion.java +++ b/BauSystem/BauSystem_RegionFixed/src/de/steamwar/bausystem/regionnew/FixedRegion.java @@ -77,7 +77,7 @@ public class FixedRegion implements Region { // TODO: Implement! } @Override - public boolean inBuildRegion(boolean extension) { + public boolean inBuildRegion(Location location, boolean extension) { return false; } @@ -92,7 +92,7 @@ public class FixedRegion implements Region { // TODO: Implement! } @Override - public boolean inTestblockRegion(boolean extension) { + public boolean inTestblockRegion(Location location, boolean extension) { return false; }