diff --git a/README.md b/README.md index 7627d35..3d6d2e0 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ How to include WorldEditWrapper into your maven project: org.codemc.worldguardwrapper worldguardwrapper - 1.1.0-SNAPSHOT + 1.1.2-SNAPSHOT ``` diff --git a/api/pom.xml b/api/pom.xml index 6bb8969..ce72445 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -7,7 +7,7 @@ org.codemc.worldguardwrapper worldguardwrapper-parent - 1.1.1-SNAPSHOT + 1.1.2-SNAPSHOT worldguardwrapper-api diff --git a/api/src/main/java/org/codemc/worldguardwrapper/flag/IWrappedStatusFlag.java b/api/src/main/java/org/codemc/worldguardwrapper/flag/IWrappedStatusFlag.java new file mode 100644 index 0000000..c5c5a80 --- /dev/null +++ b/api/src/main/java/org/codemc/worldguardwrapper/flag/IWrappedStatusFlag.java @@ -0,0 +1,4 @@ +package org.codemc.worldguardwrapper.flag; + +public interface IWrappedStatusFlag extends IWrappedFlag { +} diff --git a/api/src/main/java/org/codemc/worldguardwrapper/region/IWrappedRegion.java b/api/src/main/java/org/codemc/worldguardwrapper/region/IWrappedRegion.java index d1e937d..8d7df85 100644 --- a/api/src/main/java/org/codemc/worldguardwrapper/region/IWrappedRegion.java +++ b/api/src/main/java/org/codemc/worldguardwrapper/region/IWrappedRegion.java @@ -17,8 +17,6 @@ public interface IWrappedRegion { void setFlag(IWrappedFlag flag, T value); - Map, Object> getFlags(); - int getPriority(); IWrappedDomain getOwners(); diff --git a/implementation/pom.xml b/implementation/pom.xml index 46d1d76..6675187 100644 --- a/implementation/pom.xml +++ b/implementation/pom.xml @@ -7,7 +7,7 @@ org.codemc.worldguardwrapper worldguardwrapper-parent - 1.1.1-SNAPSHOT + 1.1.2-SNAPSHOT worldguardwrapper-implementation diff --git a/implementation/v6/pom.xml b/implementation/v6/pom.xml index e13e992..6d90abc 100644 --- a/implementation/v6/pom.xml +++ b/implementation/v6/pom.xml @@ -7,7 +7,7 @@ org.codemc.worldguardwrapper worldguardwrapper-implementation - 1.1.1-SNAPSHOT + 1.1.2-SNAPSHOT worldguardwrapper-implementation-v6 @@ -18,7 +18,7 @@ ${project.groupId} worldguardwrapper-api - 1.1.1-SNAPSHOT + 1.1.2-SNAPSHOT provided diff --git a/implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/WorldGuardImplementation.java b/implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/WorldGuardImplementation.java index f11ddb4..78ac6c4 100644 --- a/implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/WorldGuardImplementation.java +++ b/implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/WorldGuardImplementation.java @@ -20,7 +20,9 @@ import org.bukkit.util.Vector; import org.codemc.worldguardwrapper.flag.IWrappedFlag; import org.codemc.worldguardwrapper.flag.WrappedState; import org.codemc.worldguardwrapper.implementation.IWorldGuardImplementation; -import org.codemc.worldguardwrapper.implementation.v6.flag.WrappedFlag; +import org.codemc.worldguardwrapper.implementation.v6.flag.WrappedPrimitiveFlag; +import org.codemc.worldguardwrapper.implementation.v6.flag.AbstractWrappedFlag; +import org.codemc.worldguardwrapper.implementation.v6.flag.WrappedStatusFlag; import org.codemc.worldguardwrapper.implementation.v6.region.WrappedRegion; import org.codemc.worldguardwrapper.implementation.v6.utility.WorldGuardVectorUtilities; import org.codemc.worldguardwrapper.region.IWrappedRegion; @@ -56,6 +58,32 @@ public class WorldGuardImplementation implements IWorldGuardImplementation { .orElse(null), flag)); } + // TODO: find a better way to define wrapper mappings and register mappings + @SuppressWarnings("unchecked") + private IWrappedFlag wrap(Flag flag, Class type) { + final IWrappedFlag wrappedFlag; + if (type.equals(WrappedState.class)) { + wrappedFlag = (IWrappedFlag) new WrappedStatusFlag((Flag) flag); + } else if (type.equals(Boolean.class) || type.equals(boolean.class)) { + wrappedFlag = new WrappedPrimitiveFlag(flag); + } else if (type.equals(Double.class) || type.equals(double.class)) { + wrappedFlag = new WrappedPrimitiveFlag(flag); + } else if (type.equals(Enum.class)) { + wrappedFlag = new WrappedPrimitiveFlag(flag); + } else if (type.equals(Integer.class) || type.equals(int.class)) { + wrappedFlag = new WrappedPrimitiveFlag(flag); + } else if (type.equals(Location.class)) { + wrappedFlag = new WrappedPrimitiveFlag(flag); + } else if (type.equals(String.class)) { + wrappedFlag = new WrappedPrimitiveFlag(flag); + } else if (type.equals(Vector.class)) { + wrappedFlag = new WrappedPrimitiveFlag(flag); + } else { + throw new IllegalArgumentException("Unsupported flag type " + type.getName()); + } + return wrappedFlag; + } + @Override public JavaPlugin getWorldGuardPlugin() { return WorldGuardPlugin.inst(); @@ -66,46 +94,44 @@ public class WorldGuardImplementation implements IWorldGuardImplementation { return 6; } - @Override - public Optional queryFlag(Player player, Location location, IWrappedFlag flag) { - Flag wrappedFlag = ((WrappedFlag) flag).getHandle(); - return queryValue(player, location, wrappedFlag); - } - - - @SuppressWarnings("unchecked") @Override public Optional> getFlag(String name, Class type) { return Optional.ofNullable(flagRegistry.get(name)) - .map(flag -> (IWrappedFlag) new WrappedFlag(flag)); + .map(flag -> wrap(flag, type)); + } + + @Override + public Optional queryFlag(Player player, Location location, IWrappedFlag flag) { + AbstractWrappedFlag wrappedFlag = (AbstractWrappedFlag) flag; + return wrappedFlag.fromWGValue(queryValue(player, location, wrappedFlag.getHandle())); } @SuppressWarnings("unchecked") @Override public Optional> registerFlag(String name, Class type, T defaultValue) { - final Flag wrappedFlag; - if (type.equals(Boolean.class) || type.equals(boolean.class)) { - wrappedFlag = (Flag) new BooleanFlag(name); + final Flag flag; + if (type.equals(WrappedState.class)) { + flag = new StateFlag(name, defaultValue == WrappedState.ALLOW); + } else if (type.equals(Boolean.class) || type.equals(boolean.class)) { + flag = new BooleanFlag(name); } else if (type.equals(Double.class) || type.equals(double.class)) { - wrappedFlag = (Flag) new DoubleFlag(name); + flag = new DoubleFlag(name); } else if (type.equals(Enum.class)) { - wrappedFlag = new EnumFlag(name, type); + flag = new EnumFlag(name, type); } else if (type.equals(Integer.class) || type.equals(int.class)) { - wrappedFlag = (Flag) new IntegerFlag(name); + flag = new IntegerFlag(name); } else if (type.equals(Location.class)) { - wrappedFlag = (Flag) new LocationFlag(name); - } else if (type.equals(WrappedState.class)) { - wrappedFlag = (Flag) new StateFlag(name, defaultValue == WrappedState.ALLOW); + flag = new LocationFlag(name); } else if (type.equals(String.class)) { - wrappedFlag = (Flag) new StringFlag(name, (String) defaultValue); + flag = new StringFlag(name, (String) defaultValue); } else if (type.equals(Vector.class)) { - wrappedFlag = (Flag) new VectorFlag(name); + flag = new VectorFlag(name); } else { throw new IllegalArgumentException("Unsupported flag type " + type.getName()); } try { - flagRegistry.register(wrappedFlag); - return Optional.of(new WrappedFlag<>(wrappedFlag)); + flagRegistry.register(flag); + return Optional.of(wrap(flag, type)); } catch (FlagConflictException ignored) { } return Optional.empty(); diff --git a/implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/flag/WrappedFlag.java b/implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/flag/AbstractWrappedFlag.java similarity index 60% rename from implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/flag/WrappedFlag.java rename to implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/flag/AbstractWrappedFlag.java index 75ab934..c543dd0 100644 --- a/implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/flag/WrappedFlag.java +++ b/implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/flag/AbstractWrappedFlag.java @@ -9,18 +9,22 @@ import java.util.Optional; @AllArgsConstructor @Getter -public class WrappedFlag implements IWrappedFlag { +public abstract class AbstractWrappedFlag implements IWrappedFlag { - private final Flag handle; + private final Flag handle; @Override public String getName() { return handle.getName(); } + public abstract Optional fromWGValue(Object value); + + public abstract Optional fromWrapperValue(T value); + @Override public Optional getDefaultValue() { - return Optional.ofNullable(handle.getDefault()); + return fromWGValue(handle.getDefault()); } } diff --git a/implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/flag/WrappedPrimitiveFlag.java b/implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/flag/WrappedPrimitiveFlag.java new file mode 100644 index 0000000..e0f41ff --- /dev/null +++ b/implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/flag/WrappedPrimitiveFlag.java @@ -0,0 +1,23 @@ +package org.codemc.worldguardwrapper.implementation.v6.flag; + +import com.sk89q.worldguard.protection.flags.Flag; + +import java.util.Optional; + +public class WrappedPrimitiveFlag extends AbstractWrappedFlag { + + public WrappedPrimitiveFlag(Flag handle) { + super(handle); + } + + @Override + public Optional fromWGValue(Object value) { + return Optional.ofNullable((T) value); + } + + @Override + public Optional fromWrapperValue(T value) { + return Optional.ofNullable(value); + } + +} diff --git a/implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/flag/WrappedStatusFlag.java b/implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/flag/WrappedStatusFlag.java new file mode 100644 index 0000000..ce5205f --- /dev/null +++ b/implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/flag/WrappedStatusFlag.java @@ -0,0 +1,28 @@ +package org.codemc.worldguardwrapper.implementation.v6.flag; + +import com.sk89q.worldguard.protection.flags.Flag; +import com.sk89q.worldguard.protection.flags.StateFlag; +import org.codemc.worldguardwrapper.flag.IWrappedStatusFlag; +import org.codemc.worldguardwrapper.flag.WrappedState; + +import java.util.Optional; + +public class WrappedStatusFlag extends AbstractWrappedFlag implements IWrappedStatusFlag { + + public WrappedStatusFlag(Flag handle) { + super(handle); + } + + @Override + public Optional fromWGValue(Object value) { + return Optional.ofNullable(value) + .map(state -> state == StateFlag.State.ALLOW ? WrappedState.ALLOW : WrappedState.DENY); + } + + @Override + public Optional fromWrapperValue(WrappedState value) { + return Optional.ofNullable(value) + .map(state -> state == WrappedState.ALLOW ? StateFlag.State.ALLOW : StateFlag.State.DENY); + } + +} diff --git a/implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/region/WrappedRegion.java b/implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/region/WrappedRegion.java index 1fd74b6..5f1b534 100644 --- a/implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/region/WrappedRegion.java +++ b/implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/region/WrappedRegion.java @@ -8,7 +8,7 @@ import lombok.Getter; import org.bukkit.Location; import org.bukkit.World; import org.codemc.worldguardwrapper.flag.IWrappedFlag; -import org.codemc.worldguardwrapper.implementation.v6.flag.WrappedFlag; +import org.codemc.worldguardwrapper.implementation.v6.flag.AbstractWrappedFlag; import org.codemc.worldguardwrapper.implementation.v6.utility.WorldGuardVectorUtilities; import org.codemc.worldguardwrapper.region.IWrappedDomain; import org.codemc.worldguardwrapper.region.IWrappedRegion; @@ -72,23 +72,16 @@ public class WrappedRegion implements IWrappedRegion { @SuppressWarnings("unchecked") @Override public Optional getFlag(IWrappedFlag flag) { - Flag wrappedFlag = ((WrappedFlag) flag).getHandle(); - return Optional.ofNullable(handle.getFlag(wrappedFlag)) - .map(value -> (T) value); + AbstractWrappedFlag wrappedFlag = (AbstractWrappedFlag) flag; + return Optional.ofNullable(handle.getFlag(wrappedFlag.getHandle())) + .map(value -> (T) wrappedFlag.fromWGValue(value)); } @SuppressWarnings("unchecked") @Override public void setFlag(IWrappedFlag flag, T value) { - Flag wrappedFlag = ((WrappedFlag) flag).getHandle(); - handle.setFlag(wrappedFlag, value); - } - - @Override - public Map, Object> getFlags() { - Map, Object> map = new HashMap<>(); - handle.getFlags().forEach((flag, value) -> map.put(new WrappedFlag<>(flag), value)); - return map; + AbstractWrappedFlag wrappedFlag = (AbstractWrappedFlag) flag; + handle.setFlag((Flag) wrappedFlag.getHandle(), wrappedFlag.fromWrapperValue(value).orElse(null)); } @Override diff --git a/implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/utility/WorldGuardVectorUtilities.java b/implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/utility/WorldGuardVectorUtilities.java index 988fb8c..03e1d0f 100644 --- a/implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/utility/WorldGuardVectorUtilities.java +++ b/implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/utility/WorldGuardVectorUtilities.java @@ -23,4 +23,5 @@ public class WorldGuardVectorUtilities { public List toBlockVector2DList(List locations) { return locations.stream().map(location -> new BlockVector2D(location.getX(), location.getZ())).collect(Collectors.toList()); } + } diff --git a/implementation/v7/pom.xml b/implementation/v7/pom.xml index d76dad5..520d702 100644 --- a/implementation/v7/pom.xml +++ b/implementation/v7/pom.xml @@ -7,7 +7,7 @@ org.codemc.worldguardwrapper worldguardwrapper-implementation - 1.1.1-SNAPSHOT + 1.1.2-SNAPSHOT worldguardwrapper-implementation-v7 @@ -18,7 +18,7 @@ ${project.groupId} worldguardwrapper-api - 1.1.1-SNAPSHOT + 1.1.2-SNAPSHOT provided diff --git a/implementation/v7/src/main/java/org/codemc/worldguardwrapper/implementation/v7/WorldGuardImplementation.java b/implementation/v7/src/main/java/org/codemc/worldguardwrapper/implementation/v7/WorldGuardImplementation.java index b42075c..1c0d9f2 100644 --- a/implementation/v7/src/main/java/org/codemc/worldguardwrapper/implementation/v7/WorldGuardImplementation.java +++ b/implementation/v7/src/main/java/org/codemc/worldguardwrapper/implementation/v7/WorldGuardImplementation.java @@ -24,7 +24,9 @@ import org.bukkit.util.Vector; import org.codemc.worldguardwrapper.flag.IWrappedFlag; import org.codemc.worldguardwrapper.flag.WrappedState; import org.codemc.worldguardwrapper.implementation.IWorldGuardImplementation; -import org.codemc.worldguardwrapper.implementation.v7.flag.WrappedFlag; +import org.codemc.worldguardwrapper.implementation.v7.flag.AbstractWrappedFlag; +import org.codemc.worldguardwrapper.implementation.v7.flag.WrappedPrimitiveFlag; +import org.codemc.worldguardwrapper.implementation.v7.flag.WrappedStatusFlag; import org.codemc.worldguardwrapper.implementation.v7.region.WrappedRegion; import org.codemc.worldguardwrapper.region.IWrappedRegion; @@ -60,6 +62,32 @@ public class WorldGuardImplementation implements IWorldGuardImplementation { .orElse(null), flag)); } + // TODO: find a better way to define wrapper mappings and register mappings + @SuppressWarnings("unchecked") + private IWrappedFlag wrap(Flag flag, Class type) { + final IWrappedFlag wrappedFlag; + if (type.equals(WrappedState.class)) { + wrappedFlag = (IWrappedFlag) new WrappedStatusFlag((Flag) flag); + } else if (type.equals(Boolean.class) || type.equals(boolean.class)) { + wrappedFlag = new WrappedPrimitiveFlag(flag); + } else if (type.equals(Double.class) || type.equals(double.class)) { + wrappedFlag = new WrappedPrimitiveFlag(flag); + } else if (type.equals(Enum.class)) { + wrappedFlag = new WrappedPrimitiveFlag(flag); + } else if (type.equals(Integer.class) || type.equals(int.class)) { + wrappedFlag = new WrappedPrimitiveFlag(flag); + } else if (type.equals(Location.class)) { + wrappedFlag = new WrappedPrimitiveFlag(flag); + } else if (type.equals(String.class)) { + wrappedFlag = new WrappedPrimitiveFlag(flag); + } else if (type.equals(Vector.class)) { + wrappedFlag = new WrappedPrimitiveFlag(flag); + } else { + throw new IllegalArgumentException("Unsupported flag type " + type.getName()); + } + return wrappedFlag; + } + @Override public JavaPlugin getWorldGuardPlugin() { return WorldGuardPlugin.inst(); @@ -70,45 +98,44 @@ public class WorldGuardImplementation implements IWorldGuardImplementation { return 7; } - @Override - public Optional queryFlag(Player player, Location location, IWrappedFlag flag) { - Flag wrappedFlag = ((WrappedFlag) flag).getHandle(); - return queryValue(player, location, wrappedFlag); - } - - @SuppressWarnings("unchecked") @Override public Optional> getFlag(String name, Class type) { return Optional.ofNullable(flagRegistry.get(name)) - .map(flag -> (IWrappedFlag) new WrappedFlag(flag)); + .map(flag -> wrap(flag, type)); + } + + @Override + public Optional queryFlag(Player player, Location location, IWrappedFlag flag) { + AbstractWrappedFlag wrappedFlag = (AbstractWrappedFlag) flag; + return wrappedFlag.fromWGValue(queryValue(player, location, wrappedFlag.getHandle())); } @SuppressWarnings("unchecked") @Override public Optional> registerFlag(String name, Class type, T defaultValue) { - final Flag wrappedFlag; - if (type.equals(Boolean.class) || type.equals(boolean.class)) { - wrappedFlag = (Flag) new BooleanFlag(name); + final Flag flag; + if (type.equals(WrappedState.class)) { + flag = new StateFlag(name, defaultValue == WrappedState.ALLOW); + } else if (type.equals(Boolean.class) || type.equals(boolean.class)) { + flag = new BooleanFlag(name); } else if (type.equals(Double.class) || type.equals(double.class)) { - wrappedFlag = (Flag) new DoubleFlag(name); + flag = new DoubleFlag(name); } else if (type.equals(Enum.class)) { - wrappedFlag = new EnumFlag(name, type); + flag = new EnumFlag(name, type); } else if (type.equals(Integer.class) || type.equals(int.class)) { - wrappedFlag = (Flag) new IntegerFlag(name); + flag = new IntegerFlag(name); } else if (type.equals(Location.class)) { - wrappedFlag = (Flag) new LocationFlag(name); - } else if (type.equals(WrappedState.class)) { - wrappedFlag = (Flag) new StateFlag(name, defaultValue == WrappedState.ALLOW); + flag = new LocationFlag(name); } else if (type.equals(String.class)) { - wrappedFlag = (Flag) new StringFlag(name, (String) defaultValue); + flag = new StringFlag(name, (String) defaultValue); } else if (type.equals(Vector.class)) { - wrappedFlag = (Flag) new VectorFlag(name); + flag = new VectorFlag(name); } else { throw new IllegalArgumentException("Unsupported flag type " + type.getName()); } try { - flagRegistry.register(wrappedFlag); - return Optional.of(new WrappedFlag<>(wrappedFlag)); + flagRegistry.register(flag); + return Optional.of(wrap(flag, type)); } catch (FlagConflictException ignored) { } return Optional.empty(); diff --git a/implementation/v7/src/main/java/org/codemc/worldguardwrapper/implementation/v7/flag/WrappedFlag.java b/implementation/v7/src/main/java/org/codemc/worldguardwrapper/implementation/v7/flag/AbstractWrappedFlag.java similarity index 60% rename from implementation/v7/src/main/java/org/codemc/worldguardwrapper/implementation/v7/flag/WrappedFlag.java rename to implementation/v7/src/main/java/org/codemc/worldguardwrapper/implementation/v7/flag/AbstractWrappedFlag.java index 9aaab3f..e3f067e 100644 --- a/implementation/v7/src/main/java/org/codemc/worldguardwrapper/implementation/v7/flag/WrappedFlag.java +++ b/implementation/v7/src/main/java/org/codemc/worldguardwrapper/implementation/v7/flag/AbstractWrappedFlag.java @@ -9,18 +9,22 @@ import java.util.Optional; @AllArgsConstructor @Getter -public class WrappedFlag implements IWrappedFlag { +public abstract class AbstractWrappedFlag implements IWrappedFlag { - private final Flag handle; + private final Flag handle; @Override public String getName() { return handle.getName(); } + public abstract Optional fromWGValue(Object value); + + public abstract Optional fromWrapperValue(T value); + @Override public Optional getDefaultValue() { - return Optional.ofNullable(handle.getDefault()); + return fromWGValue(handle.getDefault()); } } diff --git a/implementation/v7/src/main/java/org/codemc/worldguardwrapper/implementation/v7/flag/WrappedPrimitiveFlag.java b/implementation/v7/src/main/java/org/codemc/worldguardwrapper/implementation/v7/flag/WrappedPrimitiveFlag.java new file mode 100644 index 0000000..e669c29 --- /dev/null +++ b/implementation/v7/src/main/java/org/codemc/worldguardwrapper/implementation/v7/flag/WrappedPrimitiveFlag.java @@ -0,0 +1,23 @@ +package org.codemc.worldguardwrapper.implementation.v7.flag; + +import com.sk89q.worldguard.protection.flags.Flag; + +import java.util.Optional; + +public class WrappedPrimitiveFlag extends AbstractWrappedFlag { + + public WrappedPrimitiveFlag(Flag handle) { + super(handle); + } + + @Override + public Optional fromWGValue(Object value) { + return Optional.ofNullable((T) value); + } + + @Override + public Optional fromWrapperValue(T value) { + return Optional.ofNullable(value); + } + +} diff --git a/implementation/v7/src/main/java/org/codemc/worldguardwrapper/implementation/v7/flag/WrappedStatusFlag.java b/implementation/v7/src/main/java/org/codemc/worldguardwrapper/implementation/v7/flag/WrappedStatusFlag.java new file mode 100644 index 0000000..72d4436 --- /dev/null +++ b/implementation/v7/src/main/java/org/codemc/worldguardwrapper/implementation/v7/flag/WrappedStatusFlag.java @@ -0,0 +1,28 @@ +package org.codemc.worldguardwrapper.implementation.v7.flag; + +import com.sk89q.worldguard.protection.flags.Flag; +import com.sk89q.worldguard.protection.flags.StateFlag; +import org.codemc.worldguardwrapper.flag.IWrappedStatusFlag; +import org.codemc.worldguardwrapper.flag.WrappedState; + +import java.util.Optional; + +public class WrappedStatusFlag extends AbstractWrappedFlag implements IWrappedStatusFlag { + + public WrappedStatusFlag(Flag handle) { + super(handle); + } + + @Override + public Optional fromWGValue(Object value) { + return Optional.ofNullable(value) + .map(state -> state == StateFlag.State.ALLOW ? WrappedState.ALLOW : WrappedState.DENY); + } + + @Override + public Optional fromWrapperValue(WrappedState value) { + return Optional.ofNullable(value) + .map(state -> state == WrappedState.ALLOW ? StateFlag.State.ALLOW : StateFlag.State.DENY); + } + +} diff --git a/implementation/v7/src/main/java/org/codemc/worldguardwrapper/implementation/v7/region/WrappedRegion.java b/implementation/v7/src/main/java/org/codemc/worldguardwrapper/implementation/v7/region/WrappedRegion.java index bd7a7e6..8dcc2f5 100644 --- a/implementation/v7/src/main/java/org/codemc/worldguardwrapper/implementation/v7/region/WrappedRegion.java +++ b/implementation/v7/src/main/java/org/codemc/worldguardwrapper/implementation/v7/region/WrappedRegion.java @@ -9,14 +9,16 @@ import lombok.Getter; import org.bukkit.Location; import org.bukkit.World; import org.codemc.worldguardwrapper.flag.IWrappedFlag; -import org.codemc.worldguardwrapper.implementation.v7.flag.WrappedFlag; +import org.codemc.worldguardwrapper.implementation.v7.flag.AbstractWrappedFlag; import org.codemc.worldguardwrapper.region.IWrappedDomain; import org.codemc.worldguardwrapper.region.IWrappedRegion; import org.codemc.worldguardwrapper.selection.ICuboidSelection; import org.codemc.worldguardwrapper.selection.IPolygonalSelection; import org.codemc.worldguardwrapper.selection.ISelection; -import java.util.*; +import java.util.Optional; +import java.util.Set; +import java.util.UUID; import java.util.stream.Collectors; @AllArgsConstructor @@ -72,23 +74,16 @@ public class WrappedRegion implements IWrappedRegion { @SuppressWarnings("unchecked") @Override public Optional getFlag(IWrappedFlag flag) { - Flag wrappedFlag = ((WrappedFlag) flag).getHandle(); - return Optional.ofNullable(handle.getFlag(wrappedFlag)) - .map(value -> (T) value); + AbstractWrappedFlag wrappedFlag = (AbstractWrappedFlag) flag; + return Optional.ofNullable(handle.getFlag(wrappedFlag.getHandle())) + .map(value -> (T) wrappedFlag.fromWGValue(value)); } @SuppressWarnings("unchecked") @Override public void setFlag(IWrappedFlag flag, T value) { - Flag wrappedFlag = ((WrappedFlag) flag).getHandle(); - handle.setFlag(wrappedFlag, value); - } - - @Override - public Map, Object> getFlags() { - Map, Object> map = new HashMap<>(); - handle.getFlags().forEach((flag, value) -> map.put(new WrappedFlag<>(flag), value)); - return map; + AbstractWrappedFlag wrappedFlag = (AbstractWrappedFlag) flag; + handle.setFlag((Flag) wrappedFlag.getHandle(), wrappedFlag.fromWrapperValue(value).orElse(null)); } @Override diff --git a/library/pom.xml b/library/pom.xml index b845425..db9b878 100644 --- a/library/pom.xml +++ b/library/pom.xml @@ -7,7 +7,7 @@ org.codemc.worldguardwrapper worldguardwrapper-parent - 1.1.1-SNAPSHOT + 1.1.2-SNAPSHOT worldguardwrapper @@ -18,17 +18,17 @@ ${project.groupId} worldguardwrapper-api - 1.1.1-SNAPSHOT + 1.1.2-SNAPSHOT ${project.groupId} worldguardwrapper-implementation-v6 - 1.1.1-SNAPSHOT + 1.1.2-SNAPSHOT ${project.groupId} worldguardwrapper-implementation-v7 - 1.1.1-SNAPSHOT + 1.1.2-SNAPSHOT diff --git a/pom.xml b/pom.xml index f5de583..61c3780 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ org.codemc.worldguardwrapper worldguardwrapper-parent - 1.1.1-SNAPSHOT + 1.1.2-SNAPSHOT pom