From 4fa65012c28c15899bbacc9c559ca595e78a1ffe Mon Sep 17 00:00:00 2001 From: Gabriele C Date: Mon, 26 Nov 2018 20:11:05 +0100 Subject: [PATCH 1/5] New flag system WIP --- ...ent.java => WrappedDamageEntityEvent.java} | 2 +- ...nt.java => WrappedDisallowedPVPEvent.java} | 2 +- ...ckEvent.java => WrappedUseBlockEvent.java} | 2 +- ...yEvent.java => WrappedUseEntityEvent.java} | 2 +- .../flag/AbstractWrappedFlag.java | 17 +++ .../flag/WrappedBooleanFlag.java | 11 ++ .../flag/WrappedDoubleFlag.java | 11 ++ .../flag/WrappedEnumFlag.java | 15 +++ .../flag/WrappedIntegerFlag.java | 15 +++ .../flag/WrappedLocationFlag.java | 17 +++ .../flag/WrappedSetFlag.java | 31 ++++++ .../flag/WrappedStringFlag.java | 15 +++ .../flags/AbstractWrappedFlag.java | 71 ------------- .../worldguardwrapper/flags/BooleanFlag.java | 43 -------- .../worldguardwrapper/flags/DoubleFlag.java | 37 ------- .../worldguardwrapper/flags/EnumFlag.java | 47 -------- .../worldguardwrapper/flags/IntegerFlag.java | 37 ------- .../worldguardwrapper/flags/LocationFlag.java | 100 ------------------ .../worldguardwrapper/flags/SetFlag.java | 77 -------------- .../worldguardwrapper/flags/StringFlag.java | 33 ------ .../{PlayerDomain.java => WrappedDomain.java} | 2 +- .../region/WrappedRegion.java | 7 +- .../IWorldGuardImplementation.java | 23 +--- .../wrapper/WrapperAdapter.java | 25 +++++ .../wrapper/WrapperAdapterRegister.java | 34 ++++++ .../implementation/v6/EventListener.java | 10 +- .../v6/WorldGuardImplementation.java | 89 ++++++---------- .../implementation/v7/EventListener.java | 10 +- .../v7/WorldGuardImplementation.java | 12 +-- 29 files changed, 253 insertions(+), 544 deletions(-) rename api/src/main/java/org/codemc/worldguardwrapper/event/{DamageEntityEvent.java => WrappedDamageEntityEvent.java} (90%) rename api/src/main/java/org/codemc/worldguardwrapper/event/{DisallowedPVPEvent.java => WrappedDisallowedPVPEvent.java} (89%) rename api/src/main/java/org/codemc/worldguardwrapper/event/{UseBlockEvent.java => WrappedUseBlockEvent.java} (92%) rename api/src/main/java/org/codemc/worldguardwrapper/event/{UseEntityEvent.java => WrappedUseEntityEvent.java} (91%) create mode 100644 api/src/main/java/org/codemc/worldguardwrapper/flag/AbstractWrappedFlag.java create mode 100644 api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedBooleanFlag.java create mode 100644 api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedDoubleFlag.java create mode 100644 api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedEnumFlag.java create mode 100644 api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedIntegerFlag.java create mode 100644 api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedLocationFlag.java create mode 100644 api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedSetFlag.java create mode 100644 api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedStringFlag.java delete mode 100644 api/src/main/java/org/codemc/worldguardwrapper/flags/AbstractWrappedFlag.java delete mode 100644 api/src/main/java/org/codemc/worldguardwrapper/flags/BooleanFlag.java delete mode 100644 api/src/main/java/org/codemc/worldguardwrapper/flags/DoubleFlag.java delete mode 100644 api/src/main/java/org/codemc/worldguardwrapper/flags/EnumFlag.java delete mode 100644 api/src/main/java/org/codemc/worldguardwrapper/flags/IntegerFlag.java delete mode 100644 api/src/main/java/org/codemc/worldguardwrapper/flags/LocationFlag.java delete mode 100644 api/src/main/java/org/codemc/worldguardwrapper/flags/SetFlag.java delete mode 100644 api/src/main/java/org/codemc/worldguardwrapper/flags/StringFlag.java rename api/src/main/java/org/codemc/worldguardwrapper/region/{PlayerDomain.java => WrappedDomain.java} (89%) create mode 100644 implementation/interface/src/main/java/org/codemc/worldguardwrapper/implementation/wrapper/WrapperAdapter.java create mode 100644 implementation/interface/src/main/java/org/codemc/worldguardwrapper/implementation/wrapper/WrapperAdapterRegister.java diff --git a/api/src/main/java/org/codemc/worldguardwrapper/event/DamageEntityEvent.java b/api/src/main/java/org/codemc/worldguardwrapper/event/WrappedDamageEntityEvent.java similarity index 90% rename from api/src/main/java/org/codemc/worldguardwrapper/event/DamageEntityEvent.java rename to api/src/main/java/org/codemc/worldguardwrapper/event/WrappedDamageEntityEvent.java index f0c2ccf..de980e3 100644 --- a/api/src/main/java/org/codemc/worldguardwrapper/event/DamageEntityEvent.java +++ b/api/src/main/java/org/codemc/worldguardwrapper/event/WrappedDamageEntityEvent.java @@ -10,7 +10,7 @@ import org.bukkit.event.HandlerList; @RequiredArgsConstructor @Getter -public class DamageEntityEvent extends AbstractWrappedEvent { +public class WrappedDamageEntityEvent extends AbstractWrappedEvent { private static final HandlerList handlers = new HandlerList(); diff --git a/api/src/main/java/org/codemc/worldguardwrapper/event/DisallowedPVPEvent.java b/api/src/main/java/org/codemc/worldguardwrapper/event/WrappedDisallowedPVPEvent.java similarity index 89% rename from api/src/main/java/org/codemc/worldguardwrapper/event/DisallowedPVPEvent.java rename to api/src/main/java/org/codemc/worldguardwrapper/event/WrappedDisallowedPVPEvent.java index 3a150fd..8903173 100644 --- a/api/src/main/java/org/codemc/worldguardwrapper/event/DisallowedPVPEvent.java +++ b/api/src/main/java/org/codemc/worldguardwrapper/event/WrappedDisallowedPVPEvent.java @@ -8,7 +8,7 @@ import org.bukkit.event.HandlerList; @RequiredArgsConstructor @Getter -public class DisallowedPVPEvent extends AbstractWrappedEvent { +public class WrappedDisallowedPVPEvent extends AbstractWrappedEvent { private static final HandlerList handlers = new HandlerList(); diff --git a/api/src/main/java/org/codemc/worldguardwrapper/event/UseBlockEvent.java b/api/src/main/java/org/codemc/worldguardwrapper/event/WrappedUseBlockEvent.java similarity index 92% rename from api/src/main/java/org/codemc/worldguardwrapper/event/UseBlockEvent.java rename to api/src/main/java/org/codemc/worldguardwrapper/event/WrappedUseBlockEvent.java index 363ad76..9edc76d 100644 --- a/api/src/main/java/org/codemc/worldguardwrapper/event/UseBlockEvent.java +++ b/api/src/main/java/org/codemc/worldguardwrapper/event/WrappedUseBlockEvent.java @@ -13,7 +13,7 @@ import java.util.List; @RequiredArgsConstructor @Getter -public class UseBlockEvent extends AbstractWrappedEvent { +public class WrappedUseBlockEvent extends AbstractWrappedEvent { private static final HandlerList handlers = new HandlerList(); diff --git a/api/src/main/java/org/codemc/worldguardwrapper/event/UseEntityEvent.java b/api/src/main/java/org/codemc/worldguardwrapper/event/WrappedUseEntityEvent.java similarity index 91% rename from api/src/main/java/org/codemc/worldguardwrapper/event/UseEntityEvent.java rename to api/src/main/java/org/codemc/worldguardwrapper/event/WrappedUseEntityEvent.java index 7f903ea..03bb067 100644 --- a/api/src/main/java/org/codemc/worldguardwrapper/event/UseEntityEvent.java +++ b/api/src/main/java/org/codemc/worldguardwrapper/event/WrappedUseEntityEvent.java @@ -10,7 +10,7 @@ import org.bukkit.event.HandlerList; @RequiredArgsConstructor @Getter -public class UseEntityEvent extends AbstractWrappedEvent { +public class WrappedUseEntityEvent extends AbstractWrappedEvent { private static final HandlerList handlers = new HandlerList(); diff --git a/api/src/main/java/org/codemc/worldguardwrapper/flag/AbstractWrappedFlag.java b/api/src/main/java/org/codemc/worldguardwrapper/flag/AbstractWrappedFlag.java new file mode 100644 index 0000000..eb2b910 --- /dev/null +++ b/api/src/main/java/org/codemc/worldguardwrapper/flag/AbstractWrappedFlag.java @@ -0,0 +1,17 @@ +package org.codemc.worldguardwrapper.flag; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NonNull; +import lombok.RequiredArgsConstructor; + +@AllArgsConstructor +@RequiredArgsConstructor +@Getter +public abstract class AbstractWrappedFlag { + @NonNull + private String name; + @NonNull + private Class type; + private T defaultValue; +} diff --git a/api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedBooleanFlag.java b/api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedBooleanFlag.java new file mode 100644 index 0000000..f4bc53f --- /dev/null +++ b/api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedBooleanFlag.java @@ -0,0 +1,11 @@ +package org.codemc.worldguardwrapper.flag; + +/** + * A flag that stores a boolean. + */ +public class WrappedBooleanFlag extends AbstractWrappedFlag { + + public WrappedBooleanFlag(String name) { + super(name, boolean.class, null); + } +} diff --git a/api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedDoubleFlag.java b/api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedDoubleFlag.java new file mode 100644 index 0000000..a307477 --- /dev/null +++ b/api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedDoubleFlag.java @@ -0,0 +1,11 @@ +package org.codemc.worldguardwrapper.flag; + +/** + * A flag that stores a double. + */ +public class WrappedDoubleFlag extends AbstractWrappedFlag { + + public WrappedDoubleFlag(String name) { + super(name, double.class, null); + } +} diff --git a/api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedEnumFlag.java b/api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedEnumFlag.java new file mode 100644 index 0000000..2c8d99a --- /dev/null +++ b/api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedEnumFlag.java @@ -0,0 +1,15 @@ +package org.codemc.worldguardwrapper.flag; + +/** + * A flag that stores an enum value. + */ +public class WrappedEnumFlag> extends AbstractWrappedFlag { + + public WrappedEnumFlag(String name, Class enumClass) { + this(name, enumClass, null); + } + + public WrappedEnumFlag(String name, Class enumClass, T defaultValue) { + super(name, enumClass, defaultValue); + } +} diff --git a/api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedIntegerFlag.java b/api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedIntegerFlag.java new file mode 100644 index 0000000..4851e4c --- /dev/null +++ b/api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedIntegerFlag.java @@ -0,0 +1,15 @@ +package org.codemc.worldguardwrapper.flag; + +/** + * A flag that stores an integer. + */ +public class WrappedIntegerFlag extends AbstractWrappedFlag { + + public WrappedIntegerFlag(String name) { + this(name, 0); + } + + public WrappedIntegerFlag(String name, int defaultValue) { + super(name, int.class, defaultValue); + } +} diff --git a/api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedLocationFlag.java b/api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedLocationFlag.java new file mode 100644 index 0000000..0068503 --- /dev/null +++ b/api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedLocationFlag.java @@ -0,0 +1,17 @@ +package org.codemc.worldguardwrapper.flag; + +import org.bukkit.Location; + +/** + * A flag that stores a bukkit location. + */ +public class WrappedLocationFlag extends AbstractWrappedFlag { + + public WrappedLocationFlag(String name) { + this(name, null); + } + + public WrappedLocationFlag(String name, Location defaultValue) { + super(name, Location.class, defaultValue); + } +} diff --git a/api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedSetFlag.java b/api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedSetFlag.java new file mode 100644 index 0000000..da6fd99 --- /dev/null +++ b/api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedSetFlag.java @@ -0,0 +1,31 @@ +package org.codemc.worldguardwrapper.flag; + +import java.util.HashSet; +import java.util.Set; + +/** + * A flag that stores a set of values of the sub flag's type. + */ +public class WrappedSetFlag extends AbstractWrappedFlag> { + + private AbstractWrappedFlag subFlag; + + public WrappedSetFlag(String name, AbstractWrappedFlag subFlag) { + this(name, new HashSet<>(), subFlag); + } + + @SuppressWarnings("unchecked") + public WrappedSetFlag(String name, Set defaultValue, AbstractWrappedFlag subFlag) { + super(name, (Class>) defaultValue.getClass(), defaultValue); + this.subFlag = subFlag; + } + + /** + * Get the type of values stored in this flag. + * + * @return The stored flag type. + */ + public AbstractWrappedFlag getSubFlag() { + return subFlag; + } +} diff --git a/api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedStringFlag.java b/api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedStringFlag.java new file mode 100644 index 0000000..a9b296f --- /dev/null +++ b/api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedStringFlag.java @@ -0,0 +1,15 @@ +package org.codemc.worldguardwrapper.flag; + +/** + * A flag that stores a string. + */ +public class WrappedStringFlag extends AbstractWrappedFlag { + + public WrappedStringFlag(String name) { + this(name, ""); + } + + public WrappedStringFlag(String name, String defaultValue) { + super(name, String.class, defaultValue); + } +} diff --git a/api/src/main/java/org/codemc/worldguardwrapper/flags/AbstractWrappedFlag.java b/api/src/main/java/org/codemc/worldguardwrapper/flags/AbstractWrappedFlag.java deleted file mode 100644 index 6a4febf..0000000 --- a/api/src/main/java/org/codemc/worldguardwrapper/flags/AbstractWrappedFlag.java +++ /dev/null @@ -1,71 +0,0 @@ -package org.codemc.worldguardwrapper.flags; - -import lombok.AllArgsConstructor; -import lombok.NonNull; -import lombok.RequiredArgsConstructor; -import org.bukkit.entity.Player; - -@AllArgsConstructor -@RequiredArgsConstructor -public abstract class AbstractWrappedFlag { - @NonNull - private String name; - @NonNull - private Class type; - private T defaultValue; - - /** - * Get the name of this flag. - * - * @return The name - */ - public String getName() { - return name; - } - - /** - * Get the type of this flag's value. - * - * @return The type - */ - public Class getType() { - return type; - } - - /** - * Get the default value of this flag. - * - * @return The default value (may be {@code null}) - */ - public T getDefaultValue() { - return defaultValue; - } - - /** - * Convert the value stored in this flag into a type that can be - * serialized into YAML. - * - * @param value The value - * @return The serialized type - */ - public abstract Object serialize(T value); - - /** - * Convert a raw object that was loaded (from a YAML file, for example) into the - * type that this flag uses. - * - * @param serialized The raw object - * @return The deserialized type - */ - public abstract T deserialize(Object serialized); - - /** - * Parse a given input to force it to a type compatible with the flag. - * - * @param player Player who entered the string. - * @param userInput Input string (e.g. a player input) - * @return A type compatible with the flag - */ - public abstract T parse(Player player, String userInput); - -} diff --git a/api/src/main/java/org/codemc/worldguardwrapper/flags/BooleanFlag.java b/api/src/main/java/org/codemc/worldguardwrapper/flags/BooleanFlag.java deleted file mode 100644 index cf96232..0000000 --- a/api/src/main/java/org/codemc/worldguardwrapper/flags/BooleanFlag.java +++ /dev/null @@ -1,43 +0,0 @@ -package org.codemc.worldguardwrapper.flags; - -import org.bukkit.entity.Player; - -/** - * A flag that stores a boolean. - */ -public class BooleanFlag extends AbstractWrappedFlag { - - public BooleanFlag(String name) { - this(name, false); - } - - public BooleanFlag(String name, boolean defaultValue) { - super(name, boolean.class, defaultValue); - } - - @Override - public Object serialize(Boolean value) { - return value; - } - - @Override - public Boolean deserialize(Object serialized) { - return (Boolean) serialized; - } - - @Override - public Boolean parse(Player player, String userInput) { - if (userInput.equalsIgnoreCase("true") || userInput.equalsIgnoreCase("yes") - || userInput.equalsIgnoreCase("on") - || userInput.equalsIgnoreCase("1")) { - return true; - } else if (userInput.equalsIgnoreCase("false") || userInput.equalsIgnoreCase("no") - || userInput.equalsIgnoreCase("off") - || userInput.equalsIgnoreCase("0")) { - return false; - } else { - return null; - } - } - -} diff --git a/api/src/main/java/org/codemc/worldguardwrapper/flags/DoubleFlag.java b/api/src/main/java/org/codemc/worldguardwrapper/flags/DoubleFlag.java deleted file mode 100644 index e2b182e..0000000 --- a/api/src/main/java/org/codemc/worldguardwrapper/flags/DoubleFlag.java +++ /dev/null @@ -1,37 +0,0 @@ -package org.codemc.worldguardwrapper.flags; - -import org.bukkit.entity.Player; - -/** - * A flag that stores a double. - */ -public class DoubleFlag extends AbstractWrappedFlag { - - public DoubleFlag(String name) { - this(name, 0d); - } - - public DoubleFlag(String name, double defaultValue) { - super(name, double.class, defaultValue); - } - - @Override - public Object serialize(Double value) { - return value; - } - - @Override - public Double deserialize(Object serialized) { - if (serialized instanceof Number) { - return ((Number) serialized).doubleValue(); - } else { - return null; - } - } - - @Override - public Double parse(Player player, String userInput) { - return Double.parseDouble(userInput); - } - -} diff --git a/api/src/main/java/org/codemc/worldguardwrapper/flags/EnumFlag.java b/api/src/main/java/org/codemc/worldguardwrapper/flags/EnumFlag.java deleted file mode 100644 index 454f49c..0000000 --- a/api/src/main/java/org/codemc/worldguardwrapper/flags/EnumFlag.java +++ /dev/null @@ -1,47 +0,0 @@ -package org.codemc.worldguardwrapper.flags; - -import org.bukkit.entity.Player; - -/** - * A flag that stores an enum value. - */ -public class EnumFlag> extends AbstractWrappedFlag { - - public EnumFlag(String name, Class enumClass) { - this(name, enumClass, null); - } - - public EnumFlag(String name, Class enumClass, T defaultValue) { - super(name, enumClass, defaultValue); - } - - /** - * Get the enum class. - * TODO: really needed? we already have getType() -Gab - * - * @return The enum class - */ - public Class getEnumClass() { - return getType(); - } - - @Override - public Object serialize(T value) { - return value.name(); - } - - @Override - public T deserialize(Object serialized) { - if (serialized instanceof String) { - return Enum.valueOf(getEnumClass(), (String) serialized); - } else { - return null; - } - } - - @Override - public T parse(Player player, String userInput) { - return Enum.valueOf(getEnumClass(), userInput); - } - -} diff --git a/api/src/main/java/org/codemc/worldguardwrapper/flags/IntegerFlag.java b/api/src/main/java/org/codemc/worldguardwrapper/flags/IntegerFlag.java deleted file mode 100644 index 23c467f..0000000 --- a/api/src/main/java/org/codemc/worldguardwrapper/flags/IntegerFlag.java +++ /dev/null @@ -1,37 +0,0 @@ -package org.codemc.worldguardwrapper.flags; - -import org.bukkit.entity.Player; - -/** - * A flag that stores an integer. - */ -public class IntegerFlag extends AbstractWrappedFlag { - - public IntegerFlag(String name) { - this(name, 0); - } - - public IntegerFlag(String name, int defaultValue) { - super(name, int.class, defaultValue); - } - - @Override - public Object serialize(Integer value) { - return value; - } - - @Override - public Integer deserialize(Object serialized) { - if (serialized instanceof Number) { - return ((Number) serialized).intValue(); - } else { - return null; - } - } - - @Override - public Integer parse(Player player, String userInput) { - return Integer.parseInt(userInput); - } - -} diff --git a/api/src/main/java/org/codemc/worldguardwrapper/flags/LocationFlag.java b/api/src/main/java/org/codemc/worldguardwrapper/flags/LocationFlag.java deleted file mode 100644 index 371a68e..0000000 --- a/api/src/main/java/org/codemc/worldguardwrapper/flags/LocationFlag.java +++ /dev/null @@ -1,100 +0,0 @@ -package org.codemc.worldguardwrapper.flags; - -import org.bukkit.Bukkit; -import org.bukkit.Location; -import org.bukkit.World; -import org.bukkit.entity.Player; - -import java.util.HashMap; -import java.util.Map; - -/** - * A flag that stores a bukkit location. - */ -public class LocationFlag extends AbstractWrappedFlag { - - public LocationFlag(String name) { - this(name, null); - } - - public LocationFlag(String name, Location defaultValue) { - super(name, Location.class, defaultValue); - } - - @Override - public Object serialize(Location value) { - Map map = new HashMap<>(); - - map.put("world", value.getWorld().getName()); - map.put("x", value.getX()); - map.put("y", value.getY()); - map.put("z", value.getZ()); - map.put("yaw", value.getYaw()); - map.put("pitch", value.getPitch()); - - return map; - } - - @Override - public Location deserialize(Object serialized) { - if (serialized instanceof Map) { - Map map = (Map) serialized; - - Object worldName = map.get("world"); - if (worldName == null) return null; - - Object x = map.get("x"); - if (x == null) return null; - - Object y = map.get("y"); - if (y == null) return null; - - Object z = map.get("z"); - if (z == null) return null; - - Object yaw = map.get("yaw"); - if (yaw == null) return null; - - Object pitch = map.get("pitch"); - if (pitch == null) return null; - - World world = Bukkit.getWorld(String.valueOf(worldName)); - if (world == null) return null; - - return new Location(world, toNumber(x), toNumber(y), toNumber(z), - (float) toNumber(yaw), (float) toNumber(pitch)); - } - return null; - } - - @Override - public Location parse(Player player, String userInput) { - if ("here".equalsIgnoreCase(userInput)) { - return player.getLocation(); - } else if ("none".equalsIgnoreCase(userInput)) { - return null; - } else { - String[] split = userInput.split(","); - if (split.length >= 3) { - final World world = player.getWorld(); - final double x = Double.parseDouble(split[0]); - final double y = Double.parseDouble(split[1]); - final double z = Double.parseDouble(split[2]); - final float yaw = split.length < 4 ? 0 : Float.parseFloat(split[3]); - final float pitch = split.length < 5 ? 0 : Float.parseFloat(split[4]); - - return new Location(world, x, y, z, yaw, pitch); - } - } - return null; - } - - private double toNumber(Object o) { - if (o instanceof Number) { - return ((Number) o).doubleValue(); - } else { - return 0; - } - } - -} diff --git a/api/src/main/java/org/codemc/worldguardwrapper/flags/SetFlag.java b/api/src/main/java/org/codemc/worldguardwrapper/flags/SetFlag.java deleted file mode 100644 index d9abae6..0000000 --- a/api/src/main/java/org/codemc/worldguardwrapper/flags/SetFlag.java +++ /dev/null @@ -1,77 +0,0 @@ -package org.codemc.worldguardwrapper.flags; - -import org.bukkit.entity.Player; - -import java.util.*; - -/** - * A flag that stores a set of values of the sub flag's type. - */ -public class SetFlag extends AbstractWrappedFlag> { - - private AbstractWrappedFlag subFlag; - - public SetFlag(String name, AbstractWrappedFlag subFlag) { - this(name, new HashSet<>(), subFlag); - } - - @SuppressWarnings("unchecked") - public SetFlag(String name, Set defaultValue, AbstractWrappedFlag subFlag) { - super(name, (Class>) defaultValue.getClass(), defaultValue); - this.subFlag = subFlag; - } - - /** - * Get the type of values stored in this flag. - * - * @return The stored flag type. - */ - public AbstractWrappedFlag getSubType() { - return subFlag; - } - - @Override - public Set deserialize(Object o) { - if (o instanceof Collection) { - Collection collection = (Collection) o; - Set items = new HashSet(); - - for (Object sub : collection) { - T item = subFlag.deserialize(sub); - if (item != null) { - items.add(item); - } - } - - return items; - } else { - return null; - } - } - - @Override - public Object serialize(Set o) { - List list = new ArrayList(); - for (T item : o) { - list.add(subFlag.serialize(item)); - } - - return list; - } - - @Override - public Set parse(Player player, String userInput) { - if (userInput.isEmpty()) { - return new HashSet<>(); - } else { - Set items = new HashSet<>(); - - for (String str : userInput.split(",")) { - items.add(subFlag.parse(player, str)); - } - - return items; - } - } - -} diff --git a/api/src/main/java/org/codemc/worldguardwrapper/flags/StringFlag.java b/api/src/main/java/org/codemc/worldguardwrapper/flags/StringFlag.java deleted file mode 100644 index 7871931..0000000 --- a/api/src/main/java/org/codemc/worldguardwrapper/flags/StringFlag.java +++ /dev/null @@ -1,33 +0,0 @@ -package org.codemc.worldguardwrapper.flags; - -import org.bukkit.entity.Player; - -/** - * A flag that stores a string. - */ -public class StringFlag extends AbstractWrappedFlag { - - public StringFlag(String name) { - this(name, ""); - } - - public StringFlag(String name, String defaultValue) { - super(name, String.class, defaultValue); - } - - @Override - public Object serialize(String value) { - return value; - } - - @Override - public String deserialize(Object serialized) { - return (String) serialized; - } - - @Override - public String parse(Player player, String userInput) { - return userInput; - } - -} diff --git a/api/src/main/java/org/codemc/worldguardwrapper/region/PlayerDomain.java b/api/src/main/java/org/codemc/worldguardwrapper/region/WrappedDomain.java similarity index 89% rename from api/src/main/java/org/codemc/worldguardwrapper/region/PlayerDomain.java rename to api/src/main/java/org/codemc/worldguardwrapper/region/WrappedDomain.java index 6707682..b878f87 100644 --- a/api/src/main/java/org/codemc/worldguardwrapper/region/PlayerDomain.java +++ b/api/src/main/java/org/codemc/worldguardwrapper/region/WrappedDomain.java @@ -3,7 +3,7 @@ package org.codemc.worldguardwrapper.region; import java.util.Set; import java.util.UUID; -public interface PlayerDomain { +public interface WrappedDomain { Set getPlayers(); diff --git a/api/src/main/java/org/codemc/worldguardwrapper/region/WrappedRegion.java b/api/src/main/java/org/codemc/worldguardwrapper/region/WrappedRegion.java index ffe96dc..041515d 100644 --- a/api/src/main/java/org/codemc/worldguardwrapper/region/WrappedRegion.java +++ b/api/src/main/java/org/codemc/worldguardwrapper/region/WrappedRegion.java @@ -1,6 +1,7 @@ package org.codemc.worldguardwrapper.region; import org.bukkit.Location; +import org.codemc.worldguardwrapper.flag.AbstractWrappedFlag; import org.codemc.worldguardwrapper.selection.Selection; import java.util.Map; @@ -16,11 +17,13 @@ public interface WrappedRegion { Map getFlags(); + Map, Object> getWrappedFlags(); + int getPriority(); - PlayerDomain getOwners(); + WrappedDomain getOwners(); - PlayerDomain getMembers(); + WrappedDomain getMembers(); boolean contains(Location location); diff --git a/implementation/interface/src/main/java/org/codemc/worldguardwrapper/implementation/IWorldGuardImplementation.java b/implementation/interface/src/main/java/org/codemc/worldguardwrapper/implementation/IWorldGuardImplementation.java index 3fbecf0..8939f4f 100644 --- a/implementation/interface/src/main/java/org/codemc/worldguardwrapper/implementation/IWorldGuardImplementation.java +++ b/implementation/interface/src/main/java/org/codemc/worldguardwrapper/implementation/IWorldGuardImplementation.java @@ -5,7 +5,7 @@ import org.bukkit.Location; import org.bukkit.World; import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; -import org.codemc.worldguardwrapper.flags.AbstractWrappedFlag; +import org.codemc.worldguardwrapper.flag.AbstractWrappedFlag; import org.codemc.worldguardwrapper.region.WrappedRegion; import java.util.*; @@ -26,25 +26,6 @@ public interface IWorldGuardImplementation { */ int getApiVersion(); - /** - * Query a StateFlag's value for a given player at a given location. - * - * @param player The player - * @param location The location - * @param flagName The flag's name - * @return The flag's value - */ - Optional queryStateFlag(Player player, @NonNull Location location, @NonNull String flagName); - - /** - * Register a {@code StateFlag}. - * - * @param flagName The name of the flag - * @param defaultValue The flag's default value - * @return Whether the flag has been registered - */ - boolean registerStateFlag(@NonNull String flagName, @NonNull Boolean defaultValue); - /** * Query a flag's value for a given player at a given location. * @@ -74,7 +55,7 @@ public interface IWorldGuardImplementation { * @param flag The flag to register * @return Whether the flag has been registered */ - boolean registerFlag(@NonNull AbstractWrappedFlag flag); + boolean registerFlag(@NonNull AbstractWrappedFlag flag); /** * Get a region by its ID. diff --git a/implementation/interface/src/main/java/org/codemc/worldguardwrapper/implementation/wrapper/WrapperAdapter.java b/implementation/interface/src/main/java/org/codemc/worldguardwrapper/implementation/wrapper/WrapperAdapter.java new file mode 100644 index 0000000..b1af2b6 --- /dev/null +++ b/implementation/interface/src/main/java/org/codemc/worldguardwrapper/implementation/wrapper/WrapperAdapter.java @@ -0,0 +1,25 @@ +package org.codemc.worldguardwrapper.implementation.wrapper; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.function.Function; + +@AllArgsConstructor +public class WrapperAdapter { + + @Getter + private Class wrappedFlag; + @Getter + private Class unwrappedFlag; + private Function wrapper; + private Function unwrapper; + + public W wrap(U flag) { + return wrapper.apply(flag); + } + + public U unwrap(W flag) { + return unwrapper.apply(flag); + } +} diff --git a/implementation/interface/src/main/java/org/codemc/worldguardwrapper/implementation/wrapper/WrapperAdapterRegister.java b/implementation/interface/src/main/java/org/codemc/worldguardwrapper/implementation/wrapper/WrapperAdapterRegister.java new file mode 100644 index 0000000..f722836 --- /dev/null +++ b/implementation/interface/src/main/java/org/codemc/worldguardwrapper/implementation/wrapper/WrapperAdapterRegister.java @@ -0,0 +1,34 @@ +package org.codemc.worldguardwrapper.implementation.wrapper; + +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; + +public class WrapperAdapterRegister { + + private Map, WrapperAdapter> wrappedToAdapter = new HashMap<>(); + private Map, WrapperAdapter> unwrappedToAdapter = new HashMap<>(); + + public void register(WrapperAdapter adapter) { + wrappedToAdapter.put(adapter.getWrappedFlag(), adapter); + unwrappedToAdapter.put(adapter.getUnwrappedFlag(), adapter); + } + + @SuppressWarnings("unchecked") + public Optional> fromWrapped(W wrapped) { + return Optional.ofNullable(wrappedToAdapter.get(wrapped.getClass())); + } + + @SuppressWarnings("unchecked") + public Optional> fromUnwrapped(U unwrapped) { + return Optional.ofNullable(unwrappedToAdapter.get(unwrapped.getClass())); + } + + public Optional unwrap(W wrapped) { + return fromWrapped(wrapped).map(adapter -> adapter.unwrap(wrapped)); + } + + public Optional wrap(U unwrapped) { + return fromUnwrapped(unwrapped).map(adapter -> adapter.wrap(unwrapped)); + } +} diff --git a/implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/EventListener.java b/implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/EventListener.java index 40aa4f9..9f668b9 100644 --- a/implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/EventListener.java +++ b/implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/EventListener.java @@ -11,7 +11,7 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.Event.Result; -import org.codemc.worldguardwrapper.event.AbstractWrappedEvent; +import org.codemc.worldguardwrapper.event.*; @NoArgsConstructor public class EventListener implements Listener { @@ -24,7 +24,7 @@ public class EventListener implements Listener { return; } - AbstractWrappedEvent event = new org.codemc.worldguardwrapper.event.UseBlockEvent( + AbstractWrappedEvent event = new WrappedUseBlockEvent( worldGuardEvent.getOriginalEvent(), player, worldGuardEvent.getWorld(), worldGuardEvent.getBlocks(), @@ -46,7 +46,7 @@ public class EventListener implements Listener { return; } - AbstractWrappedEvent event = new org.codemc.worldguardwrapper.event.UseEntityEvent( + AbstractWrappedEvent event = new WrappedUseEntityEvent( worldGuardEvent.getOriginalEvent(), player, worldGuardEvent.getTarget(), @@ -68,7 +68,7 @@ public class EventListener implements Listener { return; } - AbstractWrappedEvent event = new org.codemc.worldguardwrapper.event.DamageEntityEvent( + AbstractWrappedEvent event = new WrappedDamageEntityEvent( worldGuardEvent.getOriginalEvent(), player, worldGuardEvent.getTarget(), @@ -84,7 +84,7 @@ public class EventListener implements Listener { @EventHandler(priority = EventPriority.LOW) public void onDisallowedPVP(DisallowedPVPEvent worldGuardEvent) { - AbstractWrappedEvent event = new org.codemc.worldguardwrapper.event.DisallowedPVPEvent( + AbstractWrappedEvent event = new WrappedDisallowedPVPEvent( worldGuardEvent.getAttacker(), worldGuardEvent.getDefender(), worldGuardEvent.getCause()); 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 0f66287..5472d71 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 @@ -5,9 +5,8 @@ import com.sk89q.worldedit.BlockVector2D; import com.sk89q.worldguard.LocalPlayer; import com.sk89q.worldguard.bukkit.WorldGuardPlugin; import com.sk89q.worldguard.protection.ApplicableRegionSet; +import com.sk89q.worldguard.protection.flags.BooleanFlag; import com.sk89q.worldguard.protection.flags.Flag; -import com.sk89q.worldguard.protection.flags.FlagContext; -import com.sk89q.worldguard.protection.flags.InvalidFlagFormat; import com.sk89q.worldguard.protection.flags.StateFlag; import com.sk89q.worldguard.protection.flags.registry.FlagConflictException; import com.sk89q.worldguard.protection.flags.registry.FlagRegistry; @@ -15,15 +14,17 @@ import com.sk89q.worldguard.protection.managers.RegionManager; import com.sk89q.worldguard.protection.regions.ProtectedCuboidRegion; import com.sk89q.worldguard.protection.regions.ProtectedPolygonalRegion; import com.sk89q.worldguard.protection.regions.ProtectedRegion; -import lombok.NoArgsConstructor; import lombok.NonNull; import org.bukkit.Location; import org.bukkit.World; import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; -import org.codemc.worldguardwrapper.flags.AbstractWrappedFlag; +import org.codemc.worldguardwrapper.flag.AbstractWrappedFlag; +import org.codemc.worldguardwrapper.flag.WrappedBooleanFlag; import org.codemc.worldguardwrapper.implementation.IWorldGuardImplementation; -import org.codemc.worldguardwrapper.region.PlayerDomain; +import org.codemc.worldguardwrapper.implementation.wrapper.WrapperAdapter; +import org.codemc.worldguardwrapper.implementation.wrapper.WrapperAdapterRegister; +import org.codemc.worldguardwrapper.region.WrappedDomain; import org.codemc.worldguardwrapper.region.WrappedRegion; import org.codemc.worldguardwrapper.selection.CuboidSelection; import org.codemc.worldguardwrapper.selection.PolygonalSelection; @@ -32,12 +33,20 @@ import org.codemc.worldguardwrapper.selection.Selection; import java.util.*; import java.util.stream.Collectors; -@NoArgsConstructor public class WorldGuardImplementation implements IWorldGuardImplementation { private final WorldGuardPlugin plugin = WorldGuardPlugin.inst(); private final FlagRegistry flagRegistry = plugin.getFlagRegistry(); + private final WrapperAdapterRegister, Flag> flagAdapter = new WrapperAdapterRegister<>(); + + @SuppressWarnings("unchecked") + public WorldGuardImplementation() { + // Register the flag adapters + flagAdapter.register(new WrapperAdapter<>(WrappedBooleanFlag.class, BooleanFlag.class, + flag -> new WrappedBooleanFlag(flag.getName()), flag -> new BooleanFlag(flag.getName()))); + } + private Optional wrapPlayer(Player player) { return Optional.ofNullable(player).map(bukkitPlayer -> plugin.wrapPlayer(player)); } @@ -130,6 +139,14 @@ public class WorldGuardImplementation implements IWorldGuardImplementation { return map; } + @Override + public Map, Object> getWrappedFlags() { + Map, Object> map = new HashMap<>(); + region.getFlags().forEach((flag, value) -> + flagAdapter.wrap(flag).ifPresent(wrapped -> map.put(wrapped, value))); + return map; + } + @Override public Optional getFlag(String name) { return Optional.ofNullable(flagRegistry.get(name)) @@ -142,8 +159,8 @@ public class WorldGuardImplementation implements IWorldGuardImplementation { } @Override - public PlayerDomain getOwners() { - return new PlayerDomain() { + public WrappedDomain getOwners() { + return new WrappedDomain() { @Override public Set getPlayers() { return region.getOwners().getUniqueIds(); @@ -177,8 +194,8 @@ public class WorldGuardImplementation implements IWorldGuardImplementation { } @Override - public PlayerDomain getMembers() { - return new PlayerDomain() { + public WrappedDomain getMembers() { + return new WrappedDomain() { @Override public Set getPlayers() { return region.getMembers().getUniqueIds(); @@ -228,25 +245,6 @@ public class WorldGuardImplementation implements IWorldGuardImplementation { return 6; } - @Override - public Optional queryStateFlag(Player player, @NonNull Location location, @NonNull String flagId) { - Flag flag = flagRegistry.get(flagId); - if (!(flag instanceof StateFlag)) { - return Optional.empty(); - } - return queryState(player, location, (StateFlag) flag).map(state -> state == StateFlag.State.ALLOW); - } - - @Override - public boolean registerStateFlag(@NonNull String flagId, @NonNull Boolean defaultValue) { - try { - flagRegistry.register(new StateFlag(flagId, defaultValue)); - return true; - } catch (FlagConflictException ignored) { - } - return false; - } - @Override @SuppressWarnings("unchecked") public Optional queryFlag(Player player, Location location, String flagName, Class type) { @@ -259,33 +257,14 @@ public class WorldGuardImplementation implements IWorldGuardImplementation { } @Override - public boolean registerFlag(AbstractWrappedFlag flag) { - Flag wgFlag = new Flag(flag.getName()) { - @Override - public T getDefault() { - return flag.getDefaultValue(); + public boolean registerFlag(AbstractWrappedFlag flag) { + Optional> unwrapped = flagAdapter.unwrap(flag); + if (unwrapped.isPresent()) { + try { + flagRegistry.register(unwrapped.get()); + return true; + } catch (FlagConflictException ignored) { } - - @Override - public Object marshal(T o) { - return flag.serialize(o); - } - - @Override - public T unmarshal(Object o) { - return flag.deserialize(o); - } - - @Override - public T parseInput(FlagContext context) throws InvalidFlagFormat { - return flag.parse(context.getPlayerSender(), context.getUserInput()); - } - }; - - try { - flagRegistry.register(wgFlag); - return true; - } catch (FlagConflictException ignored) { } return false; } diff --git a/implementation/v7/src/main/java/org/codemc/worldguardwrapper/implementation/v7/EventListener.java b/implementation/v7/src/main/java/org/codemc/worldguardwrapper/implementation/v7/EventListener.java index 9da9cba..6fa0b45 100644 --- a/implementation/v7/src/main/java/org/codemc/worldguardwrapper/implementation/v7/EventListener.java +++ b/implementation/v7/src/main/java/org/codemc/worldguardwrapper/implementation/v7/EventListener.java @@ -11,7 +11,7 @@ import org.bukkit.event.Event.Result; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; -import org.codemc.worldguardwrapper.event.AbstractWrappedEvent; +import org.codemc.worldguardwrapper.event.*; @NoArgsConstructor public class EventListener implements Listener { @@ -24,7 +24,7 @@ public class EventListener implements Listener { return; } - AbstractWrappedEvent event = new org.codemc.worldguardwrapper.event.UseBlockEvent( + AbstractWrappedEvent event = new WrappedUseBlockEvent( worldGuardEvent.getOriginalEvent(), player, worldGuardEvent.getWorld(), worldGuardEvent.getBlocks(), @@ -46,7 +46,7 @@ public class EventListener implements Listener { return; } - AbstractWrappedEvent event = new org.codemc.worldguardwrapper.event.UseEntityEvent( + AbstractWrappedEvent event = new WrappedUseEntityEvent( worldGuardEvent.getOriginalEvent(), player, worldGuardEvent.getTarget(), @@ -68,7 +68,7 @@ public class EventListener implements Listener { return; } - AbstractWrappedEvent event = new org.codemc.worldguardwrapper.event.DamageEntityEvent( + AbstractWrappedEvent event = new WrappedDamageEntityEvent( worldGuardEvent.getOriginalEvent(), player, worldGuardEvent.getTarget(), @@ -84,7 +84,7 @@ public class EventListener implements Listener { @EventHandler(priority = EventPriority.LOW) public void onDisallowedPVP(DisallowedPVPEvent worldGuardEvent) { - AbstractWrappedEvent event = new org.codemc.worldguardwrapper.event.DisallowedPVPEvent( + AbstractWrappedEvent event = new WrappedDisallowedPVPEvent( worldGuardEvent.getAttacker(), worldGuardEvent.getDefender(), worldGuardEvent.getCause()); 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 98a26a7..228e891 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 @@ -23,9 +23,9 @@ import org.bukkit.Location; import org.bukkit.World; import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; -import org.codemc.worldguardwrapper.flags.AbstractWrappedFlag; +import org.codemc.worldguardwrapper.flag.AbstractWrappedFlag; import org.codemc.worldguardwrapper.implementation.IWorldGuardImplementation; -import org.codemc.worldguardwrapper.region.PlayerDomain; +import org.codemc.worldguardwrapper.region.WrappedDomain; import org.codemc.worldguardwrapper.region.WrappedRegion; import org.codemc.worldguardwrapper.selection.CuboidSelection; import org.codemc.worldguardwrapper.selection.PolygonalSelection; @@ -142,8 +142,8 @@ public class WorldGuardImplementation implements IWorldGuardImplementation { } @Override - public PlayerDomain getOwners() { - return new PlayerDomain() { + public WrappedDomain getOwners() { + return new WrappedDomain() { @Override public Set getPlayers() { return region.getOwners().getUniqueIds(); @@ -177,8 +177,8 @@ public class WorldGuardImplementation implements IWorldGuardImplementation { } @Override - public PlayerDomain getMembers() { - return new PlayerDomain() { + public WrappedDomain getMembers() { + return new WrappedDomain() { @Override public Set getPlayers() { return region.getMembers().getUniqueIds(); From b54027de6d6cb510ef43b8f64f1fc2af5694cff6 Mon Sep 17 00:00:00 2001 From: Gabriele C Date: Tue, 27 Nov 2018 08:49:46 +0100 Subject: [PATCH 2/5] New flag system, bump version --- api/pom.xml | 2 +- .../flag/AbstractWrappedFlag.java | 17 - .../worldguardwrapper/flag/IWrappedFlag.java | 11 + .../flag/WrappedBooleanFlag.java | 11 - .../flag/WrappedDoubleFlag.java | 11 - .../flag/WrappedEnumFlag.java | 15 - .../flag/WrappedIntegerFlag.java | 15 - .../flag/WrappedLocationFlag.java | 17 - .../flag/WrappedSetFlag.java | 31 -- .../worldguardwrapper/flag/WrappedState.java | 9 + .../flag/WrappedStringFlag.java | 15 - .../IWorldGuardImplementation.java | 62 ++-- ...WrappedDomain.java => IWrappedDomain.java} | 2 +- .../region/IWrappedRegion.java | 30 ++ .../region/WrappedRegion.java | 30 -- ...idSelection.java => ICuboidSelection.java} | 2 +- ...election.java => IPolygonalSelection.java} | 2 +- .../{Selection.java => ISelection.java} | 2 +- implementation/interface/pom.xml | 24 -- .../wrapper/WrapperAdapter.java | 25 -- .../wrapper/WrapperAdapterRegister.java | 34 -- implementation/pom.xml | 3 +- implementation/v6/pom.xml | 7 +- .../v6/WorldGuardImplementation.java | 290 ++++-------------- .../v6/{ => event}/EventListener.java | 2 +- .../implementation/v6/flag/WrappedFlag.java | 27 ++ .../v6/region/WrappedRegion.java | 175 +++++++++++ .../v6/utility/WorldGuardVectorUtilities.java | 26 ++ implementation/v7/pom.xml | 125 +------- .../v7/WorldGuardImplementation.java | 282 ++++------------- .../v7/{ => event}/EventListener.java | 2 +- .../implementation/v7/flag/WrappedFlag.java | 26 ++ .../v7/region/WrappedRegion.java | 174 +++++++++++ library/pom.xml | 15 +- .../worldguardwrapper/WorldGuardWrapper.java | 15 +- pom.xml | 2 +- 36 files changed, 677 insertions(+), 861 deletions(-) delete mode 100644 api/src/main/java/org/codemc/worldguardwrapper/flag/AbstractWrappedFlag.java create mode 100644 api/src/main/java/org/codemc/worldguardwrapper/flag/IWrappedFlag.java delete mode 100644 api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedBooleanFlag.java delete mode 100644 api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedDoubleFlag.java delete mode 100644 api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedEnumFlag.java delete mode 100644 api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedIntegerFlag.java delete mode 100644 api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedLocationFlag.java delete mode 100644 api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedSetFlag.java create mode 100644 api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedState.java delete mode 100644 api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedStringFlag.java rename {implementation/interface => api}/src/main/java/org/codemc/worldguardwrapper/implementation/IWorldGuardImplementation.java (60%) rename api/src/main/java/org/codemc/worldguardwrapper/region/{WrappedDomain.java => IWrappedDomain.java} (89%) create mode 100644 api/src/main/java/org/codemc/worldguardwrapper/region/IWrappedRegion.java delete mode 100644 api/src/main/java/org/codemc/worldguardwrapper/region/WrappedRegion.java rename api/src/main/java/org/codemc/worldguardwrapper/selection/{CuboidSelection.java => ICuboidSelection.java} (72%) rename api/src/main/java/org/codemc/worldguardwrapper/selection/{PolygonalSelection.java => IPolygonalSelection.java} (76%) rename api/src/main/java/org/codemc/worldguardwrapper/selection/{Selection.java => ISelection.java} (62%) delete mode 100644 implementation/interface/pom.xml delete mode 100644 implementation/interface/src/main/java/org/codemc/worldguardwrapper/implementation/wrapper/WrapperAdapter.java delete mode 100644 implementation/interface/src/main/java/org/codemc/worldguardwrapper/implementation/wrapper/WrapperAdapterRegister.java rename implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/{ => event}/EventListener.java (98%) create mode 100644 implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/flag/WrappedFlag.java create mode 100644 implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/region/WrappedRegion.java create mode 100644 implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/utility/WorldGuardVectorUtilities.java rename implementation/v7/src/main/java/org/codemc/worldguardwrapper/implementation/v7/{ => event}/EventListener.java (98%) create mode 100644 implementation/v7/src/main/java/org/codemc/worldguardwrapper/implementation/v7/flag/WrappedFlag.java create mode 100644 implementation/v7/src/main/java/org/codemc/worldguardwrapper/implementation/v7/region/WrappedRegion.java diff --git a/api/pom.xml b/api/pom.xml index 629598e..e16bd4b 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -7,7 +7,7 @@ org.codemc.worldguardwrapper worldguardwrapper-parent - 1.0.4-SNAPSHOT + 1.1.0-SNAPSHOT worldguardwrapper-api diff --git a/api/src/main/java/org/codemc/worldguardwrapper/flag/AbstractWrappedFlag.java b/api/src/main/java/org/codemc/worldguardwrapper/flag/AbstractWrappedFlag.java deleted file mode 100644 index eb2b910..0000000 --- a/api/src/main/java/org/codemc/worldguardwrapper/flag/AbstractWrappedFlag.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.codemc.worldguardwrapper.flag; - -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NonNull; -import lombok.RequiredArgsConstructor; - -@AllArgsConstructor -@RequiredArgsConstructor -@Getter -public abstract class AbstractWrappedFlag { - @NonNull - private String name; - @NonNull - private Class type; - private T defaultValue; -} diff --git a/api/src/main/java/org/codemc/worldguardwrapper/flag/IWrappedFlag.java b/api/src/main/java/org/codemc/worldguardwrapper/flag/IWrappedFlag.java new file mode 100644 index 0000000..f2f45f2 --- /dev/null +++ b/api/src/main/java/org/codemc/worldguardwrapper/flag/IWrappedFlag.java @@ -0,0 +1,11 @@ +package org.codemc.worldguardwrapper.flag; + +import java.util.Optional; + +public interface IWrappedFlag { + + String getName(); + + Optional getDefaultValue(); + +} diff --git a/api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedBooleanFlag.java b/api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedBooleanFlag.java deleted file mode 100644 index f4bc53f..0000000 --- a/api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedBooleanFlag.java +++ /dev/null @@ -1,11 +0,0 @@ -package org.codemc.worldguardwrapper.flag; - -/** - * A flag that stores a boolean. - */ -public class WrappedBooleanFlag extends AbstractWrappedFlag { - - public WrappedBooleanFlag(String name) { - super(name, boolean.class, null); - } -} diff --git a/api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedDoubleFlag.java b/api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedDoubleFlag.java deleted file mode 100644 index a307477..0000000 --- a/api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedDoubleFlag.java +++ /dev/null @@ -1,11 +0,0 @@ -package org.codemc.worldguardwrapper.flag; - -/** - * A flag that stores a double. - */ -public class WrappedDoubleFlag extends AbstractWrappedFlag { - - public WrappedDoubleFlag(String name) { - super(name, double.class, null); - } -} diff --git a/api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedEnumFlag.java b/api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedEnumFlag.java deleted file mode 100644 index 2c8d99a..0000000 --- a/api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedEnumFlag.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.codemc.worldguardwrapper.flag; - -/** - * A flag that stores an enum value. - */ -public class WrappedEnumFlag> extends AbstractWrappedFlag { - - public WrappedEnumFlag(String name, Class enumClass) { - this(name, enumClass, null); - } - - public WrappedEnumFlag(String name, Class enumClass, T defaultValue) { - super(name, enumClass, defaultValue); - } -} diff --git a/api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedIntegerFlag.java b/api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedIntegerFlag.java deleted file mode 100644 index 4851e4c..0000000 --- a/api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedIntegerFlag.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.codemc.worldguardwrapper.flag; - -/** - * A flag that stores an integer. - */ -public class WrappedIntegerFlag extends AbstractWrappedFlag { - - public WrappedIntegerFlag(String name) { - this(name, 0); - } - - public WrappedIntegerFlag(String name, int defaultValue) { - super(name, int.class, defaultValue); - } -} diff --git a/api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedLocationFlag.java b/api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedLocationFlag.java deleted file mode 100644 index 0068503..0000000 --- a/api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedLocationFlag.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.codemc.worldguardwrapper.flag; - -import org.bukkit.Location; - -/** - * A flag that stores a bukkit location. - */ -public class WrappedLocationFlag extends AbstractWrappedFlag { - - public WrappedLocationFlag(String name) { - this(name, null); - } - - public WrappedLocationFlag(String name, Location defaultValue) { - super(name, Location.class, defaultValue); - } -} diff --git a/api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedSetFlag.java b/api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedSetFlag.java deleted file mode 100644 index da6fd99..0000000 --- a/api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedSetFlag.java +++ /dev/null @@ -1,31 +0,0 @@ -package org.codemc.worldguardwrapper.flag; - -import java.util.HashSet; -import java.util.Set; - -/** - * A flag that stores a set of values of the sub flag's type. - */ -public class WrappedSetFlag extends AbstractWrappedFlag> { - - private AbstractWrappedFlag subFlag; - - public WrappedSetFlag(String name, AbstractWrappedFlag subFlag) { - this(name, new HashSet<>(), subFlag); - } - - @SuppressWarnings("unchecked") - public WrappedSetFlag(String name, Set defaultValue, AbstractWrappedFlag subFlag) { - super(name, (Class>) defaultValue.getClass(), defaultValue); - this.subFlag = subFlag; - } - - /** - * Get the type of values stored in this flag. - * - * @return The stored flag type. - */ - public AbstractWrappedFlag getSubFlag() { - return subFlag; - } -} diff --git a/api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedState.java b/api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedState.java new file mode 100644 index 0000000..0901810 --- /dev/null +++ b/api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedState.java @@ -0,0 +1,9 @@ +package org.codemc.worldguardwrapper.flag; + +public enum WrappedState { + ALLOW, + DENY; + + WrappedState() { + } +} diff --git a/api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedStringFlag.java b/api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedStringFlag.java deleted file mode 100644 index a9b296f..0000000 --- a/api/src/main/java/org/codemc/worldguardwrapper/flag/WrappedStringFlag.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.codemc.worldguardwrapper.flag; - -/** - * A flag that stores a string. - */ -public class WrappedStringFlag extends AbstractWrappedFlag { - - public WrappedStringFlag(String name) { - this(name, ""); - } - - public WrappedStringFlag(String name, String defaultValue) { - super(name, String.class, defaultValue); - } -} diff --git a/implementation/interface/src/main/java/org/codemc/worldguardwrapper/implementation/IWorldGuardImplementation.java b/api/src/main/java/org/codemc/worldguardwrapper/implementation/IWorldGuardImplementation.java similarity index 60% rename from implementation/interface/src/main/java/org/codemc/worldguardwrapper/implementation/IWorldGuardImplementation.java rename to api/src/main/java/org/codemc/worldguardwrapper/implementation/IWorldGuardImplementation.java index 8939f4f..631cd86 100644 --- a/implementation/interface/src/main/java/org/codemc/worldguardwrapper/implementation/IWorldGuardImplementation.java +++ b/api/src/main/java/org/codemc/worldguardwrapper/implementation/IWorldGuardImplementation.java @@ -5,8 +5,8 @@ import org.bukkit.Location; import org.bukkit.World; import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; -import org.codemc.worldguardwrapper.flag.AbstractWrappedFlag; -import org.codemc.worldguardwrapper.region.WrappedRegion; +import org.codemc.worldguardwrapper.flag.IWrappedFlag; +import org.codemc.worldguardwrapper.region.IWrappedRegion; import java.util.*; @@ -26,17 +26,6 @@ public interface IWorldGuardImplementation { */ int getApiVersion(); - /** - * Query a flag's value for a given player at a given location. - * - * @param player The player - * @param location The location - * @param flagName The name of the flag - * @param type The type of the flag's value - * @return The flag's value - */ - Optional queryFlag(Player player, @NonNull Location location, @NonNull String flagName, Class type); - /** * Query a flag's value for a given player at a given location. * @@ -45,17 +34,36 @@ public interface IWorldGuardImplementation { * @param flag The flag * @return The flag's value */ - default Optional queryFlag(Player player, @NonNull Location location, @NonNull AbstractWrappedFlag flag) { - return queryFlag(player, location, flag.getName(), flag.getType()); - } + Optional queryFlag(Player player, @NonNull Location location, @NonNull IWrappedFlag flag); /** - * Register a flag to WorldGuard's flag registry. + * Returns the flag with the given name. * - * @param flag The flag to register - * @return Whether the flag has been registered + * @param name The flag name + * @return The flag, empty if it doesn't exists */ - boolean registerFlag(@NonNull AbstractWrappedFlag flag); + Optional> getFlag(@NonNull String name); + + /** + * Registers a flag to WorldGuard's flag registry. + * + * @param name The flag name + * @param type The flag type + * @param defaultValue the flag default value (if supported by the type), can be null + * @return The created flag, empty if a name conflict occurred + */ + Optional> registerFlag(@NonNull String name, @NonNull Class type, T defaultValue); + + /** + * Registers a flag to WorldGuard's flag registry. + * + * @param name The flag name + * @param type The flag type + * @return The created flag, empty if a name conflict occurred + */ + default Optional> registerFlag(@NonNull String name, @NonNull Class type) { + return registerFlag(name, type, null); + } /** * Get a region by its ID. @@ -64,7 +72,7 @@ public interface IWorldGuardImplementation { * @param id ID of the region * @return The region */ - Optional getRegion(@NonNull World world, @NonNull String id); + Optional getRegion(@NonNull World world, @NonNull String id); /** * Get an unmodifiable map of regions containing the state of the @@ -76,7 +84,7 @@ public interface IWorldGuardImplementation { * @param world The world * @return A map of regions */ - Map getRegions(@NonNull World world); + Map getRegions(@NonNull World world); /** * Get a set of regions at the given location. @@ -84,7 +92,7 @@ public interface IWorldGuardImplementation { * @param location The location * @return A set of regions */ - Set getRegions(@NonNull Location location); + Set getRegions(@NonNull Location location); /** @@ -94,7 +102,7 @@ public interface IWorldGuardImplementation { * @param maximum The maximum location of the area * @return A set of regions */ - Set getRegions(@NonNull Location minimum, @NonNull Location maximum); + Set getRegions(@NonNull Location minimum, @NonNull Location maximum); /** * Add a region. If only two points are given, a cuboid region will be created. @@ -105,7 +113,7 @@ public interface IWorldGuardImplementation { * @param maxY The maximum y coordinate * @return The added region */ - Optional addRegion(@NonNull String id, @NonNull List points, int minY, int maxY); + Optional addRegion(@NonNull String id, @NonNull List points, int minY, int maxY); /** * Add a cuboid region. @@ -115,7 +123,7 @@ public interface IWorldGuardImplementation { * @param point2 The second point of the region * @return The added region */ - default Optional addCuboidRegion(@NonNull String id, @NonNull Location point1, @NonNull Location point2) { + default Optional addCuboidRegion(@NonNull String id, @NonNull Location point1, @NonNull Location point2) { return addRegion(id, Arrays.asList(point1, point2), 0, 0); } @@ -126,6 +134,6 @@ public interface IWorldGuardImplementation { * @param id The region ID * @return A list of removed regions where the first entry is the region specified by {@code id} */ - Optional> removeRegion(@NonNull World world, @NonNull String id); + Optional> removeRegion(@NonNull World world, @NonNull String id); } diff --git a/api/src/main/java/org/codemc/worldguardwrapper/region/WrappedDomain.java b/api/src/main/java/org/codemc/worldguardwrapper/region/IWrappedDomain.java similarity index 89% rename from api/src/main/java/org/codemc/worldguardwrapper/region/WrappedDomain.java rename to api/src/main/java/org/codemc/worldguardwrapper/region/IWrappedDomain.java index b878f87..2a877b2 100644 --- a/api/src/main/java/org/codemc/worldguardwrapper/region/WrappedDomain.java +++ b/api/src/main/java/org/codemc/worldguardwrapper/region/IWrappedDomain.java @@ -3,7 +3,7 @@ package org.codemc.worldguardwrapper.region; import java.util.Set; import java.util.UUID; -public interface WrappedDomain { +public interface IWrappedDomain { Set getPlayers(); diff --git a/api/src/main/java/org/codemc/worldguardwrapper/region/IWrappedRegion.java b/api/src/main/java/org/codemc/worldguardwrapper/region/IWrappedRegion.java new file mode 100644 index 0000000..d1e937d --- /dev/null +++ b/api/src/main/java/org/codemc/worldguardwrapper/region/IWrappedRegion.java @@ -0,0 +1,30 @@ +package org.codemc.worldguardwrapper.region; + +import org.bukkit.Location; +import org.codemc.worldguardwrapper.flag.IWrappedFlag; +import org.codemc.worldguardwrapper.selection.ISelection; + +import java.util.Map; +import java.util.Optional; + +public interface IWrappedRegion { + + ISelection getSelection(); + + String getId(); + + Optional getFlag(IWrappedFlag flag); + + void setFlag(IWrappedFlag flag, T value); + + Map, Object> getFlags(); + + int getPriority(); + + IWrappedDomain getOwners(); + + IWrappedDomain getMembers(); + + boolean contains(Location location); + +} diff --git a/api/src/main/java/org/codemc/worldguardwrapper/region/WrappedRegion.java b/api/src/main/java/org/codemc/worldguardwrapper/region/WrappedRegion.java deleted file mode 100644 index 041515d..0000000 --- a/api/src/main/java/org/codemc/worldguardwrapper/region/WrappedRegion.java +++ /dev/null @@ -1,30 +0,0 @@ -package org.codemc.worldguardwrapper.region; - -import org.bukkit.Location; -import org.codemc.worldguardwrapper.flag.AbstractWrappedFlag; -import org.codemc.worldguardwrapper.selection.Selection; - -import java.util.Map; -import java.util.Optional; - -public interface WrappedRegion { - - Selection getSelection(); - - String getId(); - - Optional getFlag(String name); - - Map getFlags(); - - Map, Object> getWrappedFlags(); - - int getPriority(); - - WrappedDomain getOwners(); - - WrappedDomain getMembers(); - - boolean contains(Location location); - -} diff --git a/api/src/main/java/org/codemc/worldguardwrapper/selection/CuboidSelection.java b/api/src/main/java/org/codemc/worldguardwrapper/selection/ICuboidSelection.java similarity index 72% rename from api/src/main/java/org/codemc/worldguardwrapper/selection/CuboidSelection.java rename to api/src/main/java/org/codemc/worldguardwrapper/selection/ICuboidSelection.java index 384af0c..433cae4 100644 --- a/api/src/main/java/org/codemc/worldguardwrapper/selection/CuboidSelection.java +++ b/api/src/main/java/org/codemc/worldguardwrapper/selection/ICuboidSelection.java @@ -2,7 +2,7 @@ package org.codemc.worldguardwrapper.selection; import org.bukkit.Location; -public interface CuboidSelection extends Selection { +public interface ICuboidSelection extends ISelection { Location getMinimumPoint(); diff --git a/api/src/main/java/org/codemc/worldguardwrapper/selection/PolygonalSelection.java b/api/src/main/java/org/codemc/worldguardwrapper/selection/IPolygonalSelection.java similarity index 76% rename from api/src/main/java/org/codemc/worldguardwrapper/selection/PolygonalSelection.java rename to api/src/main/java/org/codemc/worldguardwrapper/selection/IPolygonalSelection.java index 29a2192..f115381 100644 --- a/api/src/main/java/org/codemc/worldguardwrapper/selection/PolygonalSelection.java +++ b/api/src/main/java/org/codemc/worldguardwrapper/selection/IPolygonalSelection.java @@ -4,7 +4,7 @@ import org.bukkit.Location; import java.util.Set; -public interface PolygonalSelection extends Selection { +public interface IPolygonalSelection extends ISelection { Set getPoints(); diff --git a/api/src/main/java/org/codemc/worldguardwrapper/selection/Selection.java b/api/src/main/java/org/codemc/worldguardwrapper/selection/ISelection.java similarity index 62% rename from api/src/main/java/org/codemc/worldguardwrapper/selection/Selection.java rename to api/src/main/java/org/codemc/worldguardwrapper/selection/ISelection.java index fc7b2f0..0f10b71 100644 --- a/api/src/main/java/org/codemc/worldguardwrapper/selection/Selection.java +++ b/api/src/main/java/org/codemc/worldguardwrapper/selection/ISelection.java @@ -1,4 +1,4 @@ package org.codemc.worldguardwrapper.selection; -public interface Selection { +public interface ISelection { } diff --git a/implementation/interface/pom.xml b/implementation/interface/pom.xml deleted file mode 100644 index 79e9ab0..0000000 --- a/implementation/interface/pom.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - 4.0.0 - - - org.codemc.worldguardwrapper - worldguardwrapper-implementation - 1.0.4-SNAPSHOT - - - worldguardwrapper-implementation-interface - - WorldGuardWrapper-Implementation-Interface - - - - ${project.groupId} - worldguardwrapper-api - 1.0.4-SNAPSHOT - - - diff --git a/implementation/interface/src/main/java/org/codemc/worldguardwrapper/implementation/wrapper/WrapperAdapter.java b/implementation/interface/src/main/java/org/codemc/worldguardwrapper/implementation/wrapper/WrapperAdapter.java deleted file mode 100644 index b1af2b6..0000000 --- a/implementation/interface/src/main/java/org/codemc/worldguardwrapper/implementation/wrapper/WrapperAdapter.java +++ /dev/null @@ -1,25 +0,0 @@ -package org.codemc.worldguardwrapper.implementation.wrapper; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -import java.util.function.Function; - -@AllArgsConstructor -public class WrapperAdapter { - - @Getter - private Class wrappedFlag; - @Getter - private Class unwrappedFlag; - private Function wrapper; - private Function unwrapper; - - public W wrap(U flag) { - return wrapper.apply(flag); - } - - public U unwrap(W flag) { - return unwrapper.apply(flag); - } -} diff --git a/implementation/interface/src/main/java/org/codemc/worldguardwrapper/implementation/wrapper/WrapperAdapterRegister.java b/implementation/interface/src/main/java/org/codemc/worldguardwrapper/implementation/wrapper/WrapperAdapterRegister.java deleted file mode 100644 index f722836..0000000 --- a/implementation/interface/src/main/java/org/codemc/worldguardwrapper/implementation/wrapper/WrapperAdapterRegister.java +++ /dev/null @@ -1,34 +0,0 @@ -package org.codemc.worldguardwrapper.implementation.wrapper; - -import java.util.HashMap; -import java.util.Map; -import java.util.Optional; - -public class WrapperAdapterRegister { - - private Map, WrapperAdapter> wrappedToAdapter = new HashMap<>(); - private Map, WrapperAdapter> unwrappedToAdapter = new HashMap<>(); - - public void register(WrapperAdapter adapter) { - wrappedToAdapter.put(adapter.getWrappedFlag(), adapter); - unwrappedToAdapter.put(adapter.getUnwrappedFlag(), adapter); - } - - @SuppressWarnings("unchecked") - public Optional> fromWrapped(W wrapped) { - return Optional.ofNullable(wrappedToAdapter.get(wrapped.getClass())); - } - - @SuppressWarnings("unchecked") - public Optional> fromUnwrapped(U unwrapped) { - return Optional.ofNullable(unwrappedToAdapter.get(unwrapped.getClass())); - } - - public Optional unwrap(W wrapped) { - return fromWrapped(wrapped).map(adapter -> adapter.unwrap(wrapped)); - } - - public Optional wrap(U unwrapped) { - return fromUnwrapped(unwrapped).map(adapter -> adapter.wrap(unwrapped)); - } -} diff --git a/implementation/pom.xml b/implementation/pom.xml index 470b738..3c1637c 100644 --- a/implementation/pom.xml +++ b/implementation/pom.xml @@ -7,14 +7,13 @@ org.codemc.worldguardwrapper worldguardwrapper-parent - 1.0.4-SNAPSHOT + 1.1.0-SNAPSHOT worldguardwrapper-implementation pom - interface v6 v7 diff --git a/implementation/v6/pom.xml b/implementation/v6/pom.xml index 8351242..75f2f13 100644 --- a/implementation/v6/pom.xml +++ b/implementation/v6/pom.xml @@ -7,7 +7,7 @@ org.codemc.worldguardwrapper worldguardwrapper-implementation - 1.0.4-SNAPSHOT + 1.1.0-SNAPSHOT worldguardwrapper-implementation-v6 @@ -17,8 +17,9 @@ ${project.groupId} - worldguardwrapper-implementation-interface - 1.0.4-SNAPSHOT + worldguardwrapper-api + 1.1.0-SNAPSHOT + provided com.sk89q.worldguard 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 5472d71..ee659b0 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 @@ -1,52 +1,39 @@ package org.codemc.worldguardwrapper.implementation.v6; -import com.sk89q.worldedit.BlockVector; -import com.sk89q.worldedit.BlockVector2D; import com.sk89q.worldguard.LocalPlayer; import com.sk89q.worldguard.bukkit.WorldGuardPlugin; import com.sk89q.worldguard.protection.ApplicableRegionSet; -import com.sk89q.worldguard.protection.flags.BooleanFlag; -import com.sk89q.worldguard.protection.flags.Flag; -import com.sk89q.worldguard.protection.flags.StateFlag; +import com.sk89q.worldguard.protection.flags.*; import com.sk89q.worldguard.protection.flags.registry.FlagConflictException; import com.sk89q.worldguard.protection.flags.registry.FlagRegistry; import com.sk89q.worldguard.protection.managers.RegionManager; import com.sk89q.worldguard.protection.regions.ProtectedCuboidRegion; import com.sk89q.worldguard.protection.regions.ProtectedPolygonalRegion; import com.sk89q.worldguard.protection.regions.ProtectedRegion; +import lombok.NoArgsConstructor; import lombok.NonNull; import org.bukkit.Location; import org.bukkit.World; import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; -import org.codemc.worldguardwrapper.flag.AbstractWrappedFlag; -import org.codemc.worldguardwrapper.flag.WrappedBooleanFlag; +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.wrapper.WrapperAdapter; -import org.codemc.worldguardwrapper.implementation.wrapper.WrapperAdapterRegister; -import org.codemc.worldguardwrapper.region.WrappedDomain; -import org.codemc.worldguardwrapper.region.WrappedRegion; -import org.codemc.worldguardwrapper.selection.CuboidSelection; -import org.codemc.worldguardwrapper.selection.PolygonalSelection; -import org.codemc.worldguardwrapper.selection.Selection; +import org.codemc.worldguardwrapper.implementation.v6.flag.WrappedFlag; +import org.codemc.worldguardwrapper.implementation.v6.region.WrappedRegion; +import org.codemc.worldguardwrapper.implementation.v6.utility.WorldGuardVectorUtilities; +import org.codemc.worldguardwrapper.region.IWrappedRegion; import java.util.*; import java.util.stream.Collectors; +@NoArgsConstructor public class WorldGuardImplementation implements IWorldGuardImplementation { private final WorldGuardPlugin plugin = WorldGuardPlugin.inst(); private final FlagRegistry flagRegistry = plugin.getFlagRegistry(); - private final WrapperAdapterRegister, Flag> flagAdapter = new WrapperAdapterRegister<>(); - - @SuppressWarnings("unchecked") - public WorldGuardImplementation() { - // Register the flag adapters - flagAdapter.register(new WrapperAdapter<>(WrappedBooleanFlag.class, BooleanFlag.class, - flag -> new WrappedBooleanFlag(flag.getName()), flag -> new BooleanFlag(flag.getName()))); - } - private Optional wrapPlayer(Player player) { return Optional.ofNullable(player).map(bukkitPlayer -> plugin.wrapPlayer(player)); } @@ -61,7 +48,7 @@ public class WorldGuardImplementation implements IWorldGuardImplementation { private Optional getApplicableRegions(@NonNull Location minimum, @NonNull Location maximum) { return getWorldManager(minimum.getWorld()).map(manager -> manager.getApplicableRegions( - new ProtectedCuboidRegion("temp", toBlockVector(minimum), toBlockVector(maximum)))); + new ProtectedCuboidRegion("temp", WorldGuardVectorUtilities.toBlockVector(minimum), WorldGuardVectorUtilities.toBlockVector(maximum)))); } private Optional queryValue(Player player, @NonNull Location location, @NonNull Flag flag) { @@ -69,172 +56,6 @@ public class WorldGuardImplementation implements IWorldGuardImplementation { .orElse(null), flag)); } - private Optional queryState(Player player, @NonNull Location location, @NonNull StateFlag... stateFlags) { - return getApplicableRegions(location).map(applicableRegions -> applicableRegions.queryState(wrapPlayer(player) - .orElse(null), stateFlags)); - } - - private BlockVector toBlockVector(Location location) { - return new BlockVector(location.getX(), location.getY(), location.getZ()); - } - - private Location fromBlockVector(World world, BlockVector vector) { - return new Location(world, vector.getX(), vector.getY(), vector.getZ()); - } - - private List toBlockVector2DList(List locations) { - return locations.stream().map(location -> new BlockVector2D(location.getX(), location.getZ())).collect(Collectors.toList()); - } - - private WrappedRegion toRegion(World world, ProtectedRegion region) { - return new WrappedRegion() { - - @Override - public Selection getSelection() { - if (region instanceof PolygonalSelection) { - return new PolygonalSelection() { - - @Override - public Set getPoints() { - return region.getPoints().stream() - .map(vector -> new BlockVector(vector.toVector())) - .map(vector -> fromBlockVector(world, vector)) - .collect(Collectors.toSet()); - } - - @Override - public int getMinimumY() { - return ((PolygonalSelection) region).getMinimumY(); - } - - @Override - public int getMaximumY() { - return ((PolygonalSelection) region).getMaximumY(); - } - }; - } - return new CuboidSelection() { - - @Override - public Location getMinimumPoint() { - return fromBlockVector(world, region.getMinimumPoint()); - } - - @Override - public Location getMaximumPoint() { - return fromBlockVector(world, region.getMaximumPoint()); - } - }; - } - - @Override - public String getId() { - return region.getId(); - } - - @Override - public Map getFlags() { - Map map = new HashMap<>(); - region.getFlags().forEach((flag, value) -> map.put(flag.getName(), value)); - return map; - } - - @Override - public Map, Object> getWrappedFlags() { - Map, Object> map = new HashMap<>(); - region.getFlags().forEach((flag, value) -> - flagAdapter.wrap(flag).ifPresent(wrapped -> map.put(wrapped, value))); - return map; - } - - @Override - public Optional getFlag(String name) { - return Optional.ofNullable(flagRegistry.get(name)) - .map(region::getFlag); - } - - @Override - public int getPriority() { - return region.getPriority(); - } - - @Override - public WrappedDomain getOwners() { - return new WrappedDomain() { - @Override - public Set getPlayers() { - return region.getOwners().getUniqueIds(); - } - - @Override - public void addPlayer(UUID uuid) { - region.getOwners().addPlayer(uuid); - } - - @Override - public void removePlayer(UUID uuid) { - region.getOwners().removePlayer(uuid); - } - - @Override - public Set getGroups() { - return region.getOwners().getGroups(); - } - - @Override - public void addGroup(String name) { - region.getOwners().addGroup(name); - } - - @Override - public void removeGroup(String name) { - region.getOwners().removeGroup(name); - } - }; - } - - @Override - public WrappedDomain getMembers() { - return new WrappedDomain() { - @Override - public Set getPlayers() { - return region.getMembers().getUniqueIds(); - } - - @Override - public void addPlayer(UUID uuid) { - region.getMembers().addPlayer(uuid); - } - - @Override - public void removePlayer(UUID uuid) { - region.getMembers().removePlayer(uuid); - } - - @Override - public Set getGroups() { - return region.getMembers().getGroups(); - } - - @Override - public void addGroup(String name) { - region.getMembers().addGroup(name); - } - - @Override - public void removeGroup(String name) { - region.getMembers().removeGroup(name); - } - }; - } - - @Override - public boolean contains(Location location) { - return region.contains(toBlockVector(location)); - } - }; - } - @Override public JavaPlugin getWorldGuardPlugin() { return WorldGuardPlugin.inst(); @@ -246,94 +67,113 @@ public class WorldGuardImplementation implements IWorldGuardImplementation { } @Override + public Optional queryFlag(Player player, Location location, IWrappedFlag flag) { + Flag wrappedFlag = ((WrappedFlag) flag).getHandle(); + return queryValue(player, location, wrappedFlag); + } + + @Override + public Optional> getFlag(String name) { + return Optional.ofNullable(flagRegistry.get(name)) + .map(WrappedFlag::new); + } + @SuppressWarnings("unchecked") - public Optional queryFlag(Player player, Location location, String flagName, Class type) { - Flag flag = flagRegistry.get(flagName); - Object value = queryValue(player, location, flag).orElse(null); - if (type.isInstance(value)) { - return Optional.of((T) value); + @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); + } else if (type.equals(Double.class) || type.equals(double.class)) { + wrappedFlag = (Flag) new DoubleFlag(name); + } else if (type.equals(Enum.class)) { + wrappedFlag = new EnumFlag(name, type); + } else if (type.equals(Integer.class) || type.equals(int.class)) { + wrappedFlag = (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); + } else if (type.equals(String.class)) { + wrappedFlag = (Flag) new StringFlag(name, (String) defaultValue); + } else if (type.equals(Vector.class)) { + wrappedFlag = (Flag) new VectorFlag(name); + } else { + throw new IllegalArgumentException("Unsupported flag type " + type.getName()); + } + try { + flagRegistry.register(wrappedFlag); + return Optional.of(new WrappedFlag<>(wrappedFlag)); + } catch (FlagConflictException ignored) { } return Optional.empty(); } @Override - public boolean registerFlag(AbstractWrappedFlag flag) { - Optional> unwrapped = flagAdapter.unwrap(flag); - if (unwrapped.isPresent()) { - try { - flagRegistry.register(unwrapped.get()); - return true; - } catch (FlagConflictException ignored) { - } - } - return false; + public Optional getRegion(World world, String id) { + return getWorldManager(world).map(regionManager -> new WrappedRegion(world, regionManager.getRegion(id))); } @Override - public Optional getRegion(World world, String id) { - return getWorldManager(world).map(regionManager -> toRegion(world, regionManager.getRegion(id))); - } - - @Override - public Map getRegions(World world) { + public Map getRegions(World world) { RegionManager regionManager = plugin.getRegionManager(world); Map regions = regionManager.getRegions(); - Map map = new HashMap<>(); - regions.forEach((name, region) -> map.put(name, toRegion(world, region))); + Map map = new HashMap<>(); + regions.forEach((name, region) -> map.put(name, new WrappedRegion(world, region))); return map; } @Override - public Set getRegions(Location location) { + public Set getRegions(Location location) { ApplicableRegionSet regionSet = getApplicableRegions(location).orElse(null); - Set set = new HashSet<>(); + Set set = new HashSet<>(); if (regionSet == null) { return set; } - regionSet.forEach(region -> set.add(toRegion(location.getWorld(), region))); + regionSet.forEach(region -> set.add(new WrappedRegion(location.getWorld(), region))); return set; } @Override - public Set getRegions(Location minimum, Location maximum) { + public Set getRegions(Location minimum, Location maximum) { ApplicableRegionSet regionSet = getApplicableRegions(minimum, maximum).orElse(null); - Set set = new HashSet<>(); + Set set = new HashSet<>(); if (regionSet == null) { return set; } - regionSet.forEach(region -> set.add(toRegion(minimum.getWorld(), region))); + regionSet.forEach(region -> set.add(new WrappedRegion(minimum.getWorld(), region))); return set; } @Override - public Optional addRegion(String id, List points, int minY, int maxY) { + public Optional addRegion(String id, List points, int minY, int maxY) { ProtectedRegion region; World world = points.get(0).getWorld(); if (points.size() == 2) { - region = new ProtectedCuboidRegion(id, toBlockVector(points.get(0)), toBlockVector(points.get(1))); + region = new ProtectedCuboidRegion(id, WorldGuardVectorUtilities.toBlockVector(points.get(0)), WorldGuardVectorUtilities.toBlockVector(points.get(1))); } else { - region = new ProtectedPolygonalRegion(id, toBlockVector2DList(points), minY, maxY); + region = new ProtectedPolygonalRegion(id, WorldGuardVectorUtilities.toBlockVector2DList(points), minY, maxY); } Optional manager = getWorldManager(world); if (manager.isPresent()) { manager.get().addRegion(region); - return Optional.of(toRegion(world, region)); + return Optional.of(new WrappedRegion(world, region)); } else { return Optional.empty(); } } @Override - public Optional> removeRegion(World world, String id) { + public Optional> removeRegion(World world, String id) { Optional> set = getWorldManager(world).map(manager -> manager.removeRegion(id)); - return set.map(protectedRegions -> protectedRegions.stream().map(region -> toRegion(world, region)) + return set.map(protectedRegions -> protectedRegions.stream().map(region -> new WrappedRegion(world, region)) .collect(Collectors.toSet())); } diff --git a/implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/EventListener.java b/implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/event/EventListener.java similarity index 98% rename from implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/EventListener.java rename to implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/event/EventListener.java index 9f668b9..05a80c6 100644 --- a/implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/EventListener.java +++ b/implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/event/EventListener.java @@ -1,4 +1,4 @@ -package org.codemc.worldguardwrapper.implementation.v6; +package org.codemc.worldguardwrapper.implementation.v6.event; import com.sk89q.worldguard.bukkit.event.block.UseBlockEvent; import com.sk89q.worldguard.bukkit.event.entity.DamageEntityEvent; 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/WrappedFlag.java new file mode 100644 index 0000000..b5318d7 --- /dev/null +++ b/implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/flag/WrappedFlag.java @@ -0,0 +1,27 @@ +package org.codemc.worldguardwrapper.implementation.v6.flag; + +import com.sk89q.worldguard.protection.flags.Flag; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Getter; +import org.codemc.worldguardwrapper.flag.IWrappedFlag; + +import java.util.Optional; + +@AllArgsConstructor +@Getter +public class WrappedFlag implements IWrappedFlag { + + private final Flag handle; + + @Override + public String getName() { + return handle.getName(); + } + + @Override + public Optional getDefaultValue() { + return Optional.ofNullable(handle.getDefault()); + } + +} 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 new file mode 100644 index 0000000..b58ffac --- /dev/null +++ b/implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/region/WrappedRegion.java @@ -0,0 +1,175 @@ +package org.codemc.worldguardwrapper.implementation.v6.region; + +import com.sk89q.worldedit.BlockVector; +import com.sk89q.worldguard.protection.flags.Flag; +import com.sk89q.worldguard.protection.regions.ProtectedRegion; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +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.utility.WorldGuardVectorUtilities; +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.stream.Collectors; + +@AllArgsConstructor +@Getter +public class WrappedRegion implements IWrappedRegion { + + private final World world; + private final ProtectedRegion handle; + + @Override + public ISelection getSelection() { + if (handle instanceof IPolygonalSelection) { + return new IPolygonalSelection() { + + @Override + public Set getPoints() { + return handle.getPoints().stream() + .map(vector -> new BlockVector(vector.toVector())) + .map(vector -> WorldGuardVectorUtilities.fromBlockVector(world, vector)) + .collect(Collectors.toSet()); + } + + @Override + public int getMinimumY() { + return ((IPolygonalSelection) handle).getMinimumY(); + } + + @Override + public int getMaximumY() { + return ((IPolygonalSelection) handle).getMaximumY(); + } + }; + } + return new ICuboidSelection() { + + @Override + public Location getMinimumPoint() { + return WorldGuardVectorUtilities.fromBlockVector(world, handle.getMinimumPoint()); + } + + @Override + public Location getMaximumPoint() { + return WorldGuardVectorUtilities.fromBlockVector(world, handle.getMaximumPoint()); + } + }; + } + + @Override + public String getId() { + return handle.getId(); + } + + @SuppressWarnings("unchecked") + @Override + public Optional getFlag(IWrappedFlag flag) { + Flag wrappedFlag = ((WrappedFlag) flag).getHandle(); + return Optional.ofNullable(handle.getFlag(wrappedFlag)) + .map(value -> (T) 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; + } + + @Override + public int getPriority() { + return handle.getPriority(); + } + + @Override + public IWrappedDomain getOwners() { + return new IWrappedDomain() { + @Override + public Set getPlayers() { + return handle.getOwners().getUniqueIds(); + } + + @Override + public void addPlayer(UUID uuid) { + handle.getOwners().addPlayer(uuid); + } + + @Override + public void removePlayer(UUID uuid) { + handle.getOwners().removePlayer(uuid); + } + + @Override + public Set getGroups() { + return handle.getOwners().getGroups(); + } + + @Override + public void addGroup(String name) { + handle.getOwners().addGroup(name); + } + + @Override + public void removeGroup(String name) { + handle.getOwners().removeGroup(name); + } + }; + } + + @Override + public IWrappedDomain getMembers() { + return new IWrappedDomain() { + @Override + public Set getPlayers() { + return handle.getMembers().getUniqueIds(); + } + + @Override + public void addPlayer(UUID uuid) { + handle.getMembers().addPlayer(uuid); + } + + @Override + public void removePlayer(UUID uuid) { + handle.getMembers().removePlayer(uuid); + } + + @Override + public Set getGroups() { + return handle.getMembers().getGroups(); + } + + @Override + public void addGroup(String name) { + handle.getMembers().addGroup(name); + } + + @Override + public void removeGroup(String name) { + handle.getMembers().removeGroup(name); + } + }; + } + + @Override + public boolean contains(Location location) { + return handle.contains(WorldGuardVectorUtilities.toBlockVector(location)); + } + +} 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 new file mode 100644 index 0000000..988fb8c --- /dev/null +++ b/implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/utility/WorldGuardVectorUtilities.java @@ -0,0 +1,26 @@ +package org.codemc.worldguardwrapper.implementation.v6.utility; + +import com.sk89q.worldedit.BlockVector; +import com.sk89q.worldedit.BlockVector2D; +import lombok.experimental.UtilityClass; +import org.bukkit.Location; +import org.bukkit.World; + +import java.util.List; +import java.util.stream.Collectors; + +@UtilityClass +public class WorldGuardVectorUtilities { + + public BlockVector toBlockVector(Location location) { + return new BlockVector(location.getX(), location.getY(), location.getZ()); + } + + public Location fromBlockVector(World world, BlockVector vector) { + return new Location(world, vector.getX(), vector.getY(), vector.getZ()); + } + + 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 fcf4d49..051945d 100644 --- a/implementation/v7/pom.xml +++ b/implementation/v7/pom.xml @@ -7,7 +7,7 @@ org.codemc.worldguardwrapper worldguardwrapper-implementation - 1.0.4-SNAPSHOT + 1.1.0-SNAPSHOT worldguardwrapper-implementation-v7 @@ -17,13 +17,14 @@ ${project.groupId} - worldguardwrapper-implementation-interface - 1.0.4-SNAPSHOT + worldguardwrapper-api + 1.1.0-SNAPSHOT + provided com.sk89q.worldguard worldguard-legacy - 7.0.0-20181117.063337-9 + 7.0.0-SNAPSHOT provided @@ -36,121 +37,5 @@ - - com.sk89q.worldguard - worldguard-core - 7.0.0-20181117.063337-9 - provided - - - com.sk89q.intake - intake - - - com.sk89q - squirrelid - - - org.flywaydb - flyway-core - - - org.khelekore - prtree - - - net.sf.opencsv - opencsv - - - com.googlecode.json-simple - json-simple - - - com.google.code.findbugs - jsr305 - - - - - com.sk89q.worldedit - worldedit-bukkit - 7.0.0-20181118.055910-28 - provided - - - com.sk89q - dummypermscompat - - - org.bukkit - bukkit - - - org.bstats - bstats-bukkit - - - io.papermc - paperlib - - - net.milkbowl.vault - VaultAPI - - - org.mockito - mockito-core - - - - - com.sk89q.worldedit - worldedit-core - 7.0.0-20181118.055910-28 - provided - - - de.schlichtherle - truezip - - - rhino - js - - - org.yaml - snakeyaml - - - com.google.guava - guava - - - com.sk89q - jchronic - - - com.google.code.findbugs - jsr305 - - - com.thoughtworks.paranamer - paranamer - - - com.google.code.gson - gson - - - com.sk89q.lib - jlibnoise - - - org.mockito - mockito-core - - - 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 228e891..8324e34 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 @@ -1,16 +1,14 @@ package org.codemc.worldguardwrapper.implementation.v7; +import com.sk89q.worldedit.BlockVector; +import com.sk89q.worldedit.BlockVector2D; import com.sk89q.worldedit.bukkit.BukkitAdapter; import com.sk89q.worldedit.bukkit.BukkitWorld; -import com.sk89q.worldedit.math.BlockVector2; import com.sk89q.worldguard.LocalPlayer; import com.sk89q.worldguard.WorldGuard; import com.sk89q.worldguard.bukkit.WorldGuardPlugin; import com.sk89q.worldguard.protection.ApplicableRegionSet; -import com.sk89q.worldguard.protection.flags.Flag; -import com.sk89q.worldguard.protection.flags.FlagContext; -import com.sk89q.worldguard.protection.flags.InvalidFlagFormat; -import com.sk89q.worldguard.protection.flags.StateFlag; +import com.sk89q.worldguard.protection.flags.*; import com.sk89q.worldguard.protection.flags.registry.FlagConflictException; import com.sk89q.worldguard.protection.flags.registry.FlagRegistry; import com.sk89q.worldguard.protection.managers.RegionManager; @@ -23,13 +21,13 @@ import org.bukkit.Location; import org.bukkit.World; import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; -import org.codemc.worldguardwrapper.flag.AbstractWrappedFlag; +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.region.WrappedDomain; -import org.codemc.worldguardwrapper.region.WrappedRegion; -import org.codemc.worldguardwrapper.selection.CuboidSelection; -import org.codemc.worldguardwrapper.selection.PolygonalSelection; -import org.codemc.worldguardwrapper.selection.Selection; +import org.codemc.worldguardwrapper.implementation.v7.flag.WrappedFlag; +import org.codemc.worldguardwrapper.implementation.v7.region.WrappedRegion; +import org.codemc.worldguardwrapper.region.IWrappedRegion; import java.util.*; import java.util.stream.Collectors; @@ -59,12 +57,12 @@ public class WorldGuardImplementation implements IWorldGuardImplementation { } private Optional getApplicableRegions(@NonNull Location location) { - return getWorldManager(location.getWorld()).map(manager -> manager.getApplicableRegions(BukkitAdapter.asBlockVector(location))); + return getWorldManager(location.getWorld()).map(manager -> manager.getApplicableRegions(BukkitAdapter.asVector(location))); } private Optional getApplicableRegions(@NonNull Location minimum, @NonNull Location maximum) { return getWorldManager(minimum.getWorld()).map(manager -> manager.getApplicableRegions( - new ProtectedCuboidRegion("temp", BukkitAdapter.asBlockVector(minimum), BukkitAdapter.asBlockVector(maximum)))); + new ProtectedCuboidRegion("temp", new BlockVector(BukkitAdapter.asVector(minimum)), new BlockVector(BukkitAdapter.asVector(maximum))))); } private Optional queryValue(Player player, @NonNull Location location, @NonNull Flag flag) { @@ -77,147 +75,6 @@ public class WorldGuardImplementation implements IWorldGuardImplementation { .orElse(null), stateFlags)); } - private WrappedRegion toRegion(World world, ProtectedRegion region) { - return new WrappedRegion() { - - @Override - public Selection getSelection() { - if (region instanceof PolygonalSelection) { - return new PolygonalSelection() { - - @Override - public Set getPoints() { - return region.getPoints().stream() - .map(BlockVector2::toBlockVector3) - .map(vector -> BukkitAdapter.adapt(world, vector)) - .collect(Collectors.toSet()); - } - - @Override - public int getMinimumY() { - return ((PolygonalSelection) region).getMinimumY(); - } - - @Override - public int getMaximumY() { - return ((PolygonalSelection) region).getMaximumY(); - } - }; - } - return new CuboidSelection() { - - @Override - public Location getMinimumPoint() { - return BukkitAdapter.adapt(world, region.getMinimumPoint()); - } - - @Override - public Location getMaximumPoint() { - return BukkitAdapter.adapt(world, region.getMaximumPoint()); - } - }; - } - - @Override - public String getId() { - return region.getId(); - } - - @Override - public Map getFlags() { - Map map = new HashMap<>(); - region.getFlags().forEach((flag, value) -> map.put(flag.getName(), value)); - return map; - } - - @Override - public Optional getFlag(String name) { - return Optional.ofNullable(flagRegistry.get(name)) - .map(region::getFlag); - } - - @Override - public int getPriority() { - return region.getPriority(); - } - - @Override - public WrappedDomain getOwners() { - return new WrappedDomain() { - @Override - public Set getPlayers() { - return region.getOwners().getUniqueIds(); - } - - @Override - public void addPlayer(UUID uuid) { - region.getOwners().addPlayer(uuid); - } - - @Override - public void removePlayer(UUID uuid) { - region.getOwners().removePlayer(uuid); - } - - @Override - public Set getGroups() { - return region.getOwners().getGroups(); - } - - @Override - public void addGroup(String name) { - region.getOwners().addGroup(name); - } - - @Override - public void removeGroup(String name) { - region.getOwners().removeGroup(name); - } - }; - } - - @Override - public WrappedDomain getMembers() { - return new WrappedDomain() { - @Override - public Set getPlayers() { - return region.getMembers().getUniqueIds(); - } - - @Override - public void addPlayer(UUID uuid) { - region.getMembers().addPlayer(uuid); - } - - @Override - public void removePlayer(UUID uuid) { - region.getMembers().removePlayer(uuid); - } - - @Override - public Set getGroups() { - return region.getMembers().getGroups(); - } - - @Override - public void addGroup(String name) { - region.getMembers().addGroup(name); - } - - @Override - public void removeGroup(String name) { - region.getMembers().removeGroup(name); - } - }; - } - - @Override - public boolean contains(Location location) { - return region.contains(BukkitAdapter.asBlockVector(location)); - } - }; - } - @Override public JavaPlugin getWorldGuardPlugin() { return WorldGuardPlugin.inst(); @@ -229,121 +86,102 @@ public class WorldGuardImplementation implements IWorldGuardImplementation { } @Override - public Optional queryStateFlag(Player player, @NonNull Location location, @NonNull String flagId) { - Flag flag = flagRegistry.get(flagId); - if (!(flag instanceof StateFlag)) { - return Optional.empty(); - } - return queryState(player, location, (StateFlag) flag).map(state -> state == StateFlag.State.ALLOW); + public Optional queryFlag(Player player, Location location, IWrappedFlag flag) { + Flag wrappedFlag = ((WrappedFlag) flag).getHandle(); + return queryValue(player, location, wrappedFlag); } @Override - public boolean registerStateFlag(@NonNull String flagId, @NonNull Boolean defaultValue) { - try { - flagRegistry.register(new StateFlag(flagId, defaultValue)); - return true; - } catch (FlagConflictException ignored) { - } - return false; + public Optional> getFlag(String name) { + return Optional.ofNullable(flagRegistry.get(name)) + .map(WrappedFlag::new); } - @Override @SuppressWarnings("unchecked") - public Optional queryFlag(Player player, Location location, String flagName, Class type) { - Flag flag = flagRegistry.get(flagName); - Object value = queryValue(player, location, flag).orElse(null); - if (type.isInstance(value)) { - return Optional.of((T) value); + @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); + } else if (type.equals(Double.class) || type.equals(double.class)) { + wrappedFlag = (Flag) new DoubleFlag(name); + } else if (type.equals(Enum.class)) { + wrappedFlag = new EnumFlag(name, type); + } else if (type.equals(Integer.class) || type.equals(int.class)) { + wrappedFlag = (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); + } else if (type.equals(String.class)) { + wrappedFlag = (Flag) new StringFlag(name, (String) defaultValue); + } else if (type.equals(Vector.class)) { + wrappedFlag = (Flag) new VectorFlag(name); + } else { + throw new IllegalArgumentException("Unsupported flag type " + type.getName()); + } + try { + flagRegistry.register(wrappedFlag); + return Optional.of(new WrappedFlag<>(wrappedFlag)); + } catch (FlagConflictException ignored) { } return Optional.empty(); } @Override - public boolean registerFlag(AbstractWrappedFlag flag) { - Flag wgFlag = new Flag(flag.getName()) { - @Override - public T getDefault() { - return flag.getDefaultValue(); - } - - @Override - public Object marshal(T o) { - return flag.serialize(o); - } - - @Override - public T unmarshal(Object o) { - return flag.deserialize(o); - } - - @Override - public T parseInput(FlagContext context) throws InvalidFlagFormat { - return flag.parse(getPlayer(context.getPlayerSender()).orElse(null), context.getUserInput()); - } - }; - - try { - flagRegistry.register(wgFlag); - return true; - } catch (FlagConflictException ignored) { - } - return false; - } - - @Override - public Optional getRegion(World world, String id) { + public Optional getRegion(World world, String id) { return getWorldManager(world) .map(regionManager -> regionManager.getRegion(id)) - .map(region -> toRegion(world, region)); + .map(region -> new WrappedRegion(world, region)); } @Override - public Map getRegions(World world) { + public Map getRegions(World world) { RegionManager regionManager = core.getPlatform().getRegionContainer().get(new BukkitWorld(world)); if (regionManager == null) { return Collections.emptyMap(); } Map regions = regionManager.getRegions(); - Map map = new HashMap<>(); - regions.forEach((name, region) -> map.put(name, toRegion(world, region))); + Map map = new HashMap<>(); + regions.forEach((name, region) -> map.put(name, new WrappedRegion(world, region))); return map; } @Override - public Set getRegions(Location location) { + public Set getRegions(Location location) { ApplicableRegionSet regionSet = getApplicableRegions(location).orElse(null); if (regionSet == null) { return Collections.emptySet(); } return regionSet.getRegions().stream() - .map(region -> toRegion(location.getWorld(), region)) + .map(region -> new WrappedRegion(location.getWorld(), region)) .collect(Collectors.toSet()); } @Override - public Set getRegions(Location minimum, Location maximum) { + public Set getRegions(Location minimum, Location maximum) { ApplicableRegionSet regionSet = getApplicableRegions(minimum, maximum).orElse(null); if (regionSet == null) { return Collections.emptySet(); } return regionSet.getRegions().stream() - .map(region -> toRegion(minimum.getWorld(), region)) + .map(region -> new WrappedRegion(minimum.getWorld(), region)) .collect(Collectors.toSet()); } @Override - public Optional addRegion(String id, List points, int minY, int maxY) { + public Optional addRegion(String id, List points, int minY, int maxY) { ProtectedRegion region; World world = points.get(0).getWorld(); if (points.size() == 2) { - region = new ProtectedCuboidRegion(id, BukkitAdapter.asBlockVector(points.get(0)), - BukkitAdapter.asBlockVector(points.get(1))); + region = new ProtectedCuboidRegion(id, new BlockVector(BukkitAdapter.asVector(points.get(0))), + new BlockVector(BukkitAdapter.asVector(points.get(1)))); } else { - List vectorPoints = points.stream() - .map(location -> BukkitAdapter.asBlockVector(location).toBlockVector2()) + List vectorPoints = points.stream() + .map(location -> new BlockVector2D(BukkitAdapter.asVector(location).toVector2D())) .collect(Collectors.toList()); region = new ProtectedPolygonalRegion(id, vectorPoints, minY, maxY); @@ -352,16 +190,16 @@ public class WorldGuardImplementation implements IWorldGuardImplementation { Optional manager = getWorldManager(world); if (manager.isPresent()) { manager.get().addRegion(region); - return Optional.of(toRegion(world, region)); + return Optional.of(new WrappedRegion(world, region)); } else { return Optional.empty(); } } @Override - public Optional> removeRegion(World world, String id) { + public Optional> removeRegion(World world, String id) { Optional> set = getWorldManager(world).map(manager -> manager.removeRegion(id)); return set.map(protectedRegions -> protectedRegions.stream() - .map(region -> toRegion(world, region)).collect(Collectors.toSet())); + .map(region -> new WrappedRegion(world, region)).collect(Collectors.toSet())); } } diff --git a/implementation/v7/src/main/java/org/codemc/worldguardwrapper/implementation/v7/EventListener.java b/implementation/v7/src/main/java/org/codemc/worldguardwrapper/implementation/v7/event/EventListener.java similarity index 98% rename from implementation/v7/src/main/java/org/codemc/worldguardwrapper/implementation/v7/EventListener.java rename to implementation/v7/src/main/java/org/codemc/worldguardwrapper/implementation/v7/event/EventListener.java index 6fa0b45..c551607 100644 --- a/implementation/v7/src/main/java/org/codemc/worldguardwrapper/implementation/v7/EventListener.java +++ b/implementation/v7/src/main/java/org/codemc/worldguardwrapper/implementation/v7/event/EventListener.java @@ -1,4 +1,4 @@ -package org.codemc.worldguardwrapper.implementation.v7; +package org.codemc.worldguardwrapper.implementation.v7.event; import com.sk89q.worldguard.bukkit.event.block.UseBlockEvent; import com.sk89q.worldguard.bukkit.event.entity.DamageEntityEvent; 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/WrappedFlag.java new file mode 100644 index 0000000..9aaab3f --- /dev/null +++ b/implementation/v7/src/main/java/org/codemc/worldguardwrapper/implementation/v7/flag/WrappedFlag.java @@ -0,0 +1,26 @@ +package org.codemc.worldguardwrapper.implementation.v7.flag; + +import com.sk89q.worldguard.protection.flags.Flag; +import lombok.AllArgsConstructor; +import lombok.Getter; +import org.codemc.worldguardwrapper.flag.IWrappedFlag; + +import java.util.Optional; + +@AllArgsConstructor +@Getter +public class WrappedFlag implements IWrappedFlag { + + private final Flag handle; + + @Override + public String getName() { + return handle.getName(); + } + + @Override + public Optional getDefaultValue() { + return Optional.ofNullable(handle.getDefault()); + } + +} 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 new file mode 100644 index 0000000..86695c3 --- /dev/null +++ b/implementation/v7/src/main/java/org/codemc/worldguardwrapper/implementation/v7/region/WrappedRegion.java @@ -0,0 +1,174 @@ +package org.codemc.worldguardwrapper.implementation.v7.region; + +import com.sk89q.worldedit.BlockVector2D; +import com.sk89q.worldedit.bukkit.BukkitAdapter; +import com.sk89q.worldguard.protection.flags.Flag; +import com.sk89q.worldguard.protection.regions.ProtectedRegion; +import lombok.AllArgsConstructor; +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.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.stream.Collectors; + +@AllArgsConstructor +@Getter +public class WrappedRegion implements IWrappedRegion { + + private final World world; + private final ProtectedRegion handle; + + @Override + public ISelection getSelection() { + if (handle instanceof IPolygonalSelection) { + return new IPolygonalSelection() { + + @Override + public Set getPoints() { + return handle.getPoints().stream() + .map(BlockVector2D::toVector) + .map(vector -> BukkitAdapter.adapt(world, vector)) + .collect(Collectors.toSet()); + } + + @Override + public int getMinimumY() { + return ((IPolygonalSelection) handle).getMinimumY(); + } + + @Override + public int getMaximumY() { + return ((IPolygonalSelection) handle).getMaximumY(); + } + }; + } + return new ICuboidSelection() { + + @Override + public Location getMinimumPoint() { + return BukkitAdapter.adapt(world, handle.getMinimumPoint()); + } + + @Override + public Location getMaximumPoint() { + return BukkitAdapter.adapt(world, handle.getMaximumPoint()); + } + }; + } + + @Override + public String getId() { + return handle.getId(); + } + + @SuppressWarnings("unchecked") + @Override + public Optional getFlag(IWrappedFlag flag) { + Flag wrappedFlag = ((WrappedFlag) flag).getHandle(); + return Optional.ofNullable(handle.getFlag(wrappedFlag)) + .map(value -> (T) 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; + } + + @Override + public int getPriority() { + return handle.getPriority(); + } + + @Override + public IWrappedDomain getOwners() { + return new IWrappedDomain() { + @Override + public Set getPlayers() { + return handle.getOwners().getUniqueIds(); + } + + @Override + public void addPlayer(UUID uuid) { + handle.getOwners().addPlayer(uuid); + } + + @Override + public void removePlayer(UUID uuid) { + handle.getOwners().removePlayer(uuid); + } + + @Override + public Set getGroups() { + return handle.getOwners().getGroups(); + } + + @Override + public void addGroup(String name) { + handle.getOwners().addGroup(name); + } + + @Override + public void removeGroup(String name) { + handle.getOwners().removeGroup(name); + } + }; + } + + @Override + public IWrappedDomain getMembers() { + return new IWrappedDomain() { + @Override + public Set getPlayers() { + return handle.getMembers().getUniqueIds(); + } + + @Override + public void addPlayer(UUID uuid) { + handle.getMembers().addPlayer(uuid); + } + + @Override + public void removePlayer(UUID uuid) { + handle.getMembers().removePlayer(uuid); + } + + @Override + public Set getGroups() { + return handle.getMembers().getGroups(); + } + + @Override + public void addGroup(String name) { + handle.getMembers().addGroup(name); + } + + @Override + public void removeGroup(String name) { + handle.getMembers().removeGroup(name); + } + }; + } + + @Override + public boolean contains(Location location) { + return handle.contains(BukkitAdapter.asVector(location)); + } + +} diff --git a/library/pom.xml b/library/pom.xml index d22b693..5c61084 100644 --- a/library/pom.xml +++ b/library/pom.xml @@ -7,7 +7,7 @@ org.codemc.worldguardwrapper worldguardwrapper-parent - 1.0.4-SNAPSHOT + 1.1.0-SNAPSHOT worldguardwrapper @@ -15,17 +15,22 @@ WorldGuardWrapper-Library + + ${project.groupId} + worldguardwrapper-api + 1.1.0-SNAPSHOT + ${project.groupId} worldguardwrapper-implementation-v6 - 1.0.4-SNAPSHOT - true + 1.1.0-SNAPSHOT + runtime ${project.groupId} worldguardwrapper-implementation-v7 - 1.0.4-SNAPSHOT - true + 1.1.0-SNAPSHOT + runtime diff --git a/library/src/main/java/org/codemc/worldguardwrapper/WorldGuardWrapper.java b/library/src/main/java/org/codemc/worldguardwrapper/WorldGuardWrapper.java index c96e832..42fe80d 100644 --- a/library/src/main/java/org/codemc/worldguardwrapper/WorldGuardWrapper.java +++ b/library/src/main/java/org/codemc/worldguardwrapper/WorldGuardWrapper.java @@ -27,13 +27,20 @@ public class WorldGuardWrapper implements IWorldGuardImplementation { private Listener eventListener; private WorldGuardWrapper() { + String version; try { Class.forName("com.sk89q.worldguard.WorldGuard"); - delegate = new org.codemc.worldguardwrapper.implementation.v7.WorldGuardImplementation(); - eventListener = new org.codemc.worldguardwrapper.implementation.v7.EventListener(); + version = "v7"; } catch (ClassNotFoundException e) { - delegate = new org.codemc.worldguardwrapper.implementation.v6.WorldGuardImplementation(); - eventListener = new org.codemc.worldguardwrapper.implementation.v6.EventListener(); + version = "v6"; + } + try { + delegate = (IWorldGuardImplementation) Class.forName("org.codemc.worldguardwrapper.implementation." + + version + ".WorldGuardImplementation").newInstance(); + eventListener = (Listener) Class.forName("new org.codemc.worldguardwrapper.implementation." + + version + ".event.EventListener").newInstance(); + } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) { + throw new RuntimeException("Unable to initialize WorldGuard implementation " + version, e); } } diff --git a/pom.xml b/pom.xml index 0630e94..4654194 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ org.codemc.worldguardwrapper worldguardwrapper-parent - 1.0.4-SNAPSHOT + 1.1.0-SNAPSHOT pom From 6642dce9c43f69270dd58d4f9af20b6a977f602c Mon Sep 17 00:00:00 2001 From: Gabriele C Date: Tue, 27 Nov 2018 23:04:59 +0100 Subject: [PATCH 3/5] Fix build, maven enhancements --- implementation/pom.xml | 3 ++ implementation/v6/pom.xml | 4 -- .../v6/event/EventListener.java | 2 +- .../implementation/v6/flag/WrappedFlag.java | 1 - .../v6/region/WrappedRegion.java | 1 - implementation/v7/pom.xml | 40 +++++++++++++++++++ .../v7/WorldGuardImplementation.java | 39 ++++++------------ .../v7/region/WrappedRegion.java | 6 +-- pom.xml | 5 +-- 9 files changed, 60 insertions(+), 41 deletions(-) diff --git a/implementation/pom.xml b/implementation/pom.xml index 3c1637c..225c932 100644 --- a/implementation/pom.xml +++ b/implementation/pom.xml @@ -28,6 +28,9 @@ sk89q-repo http://maven.sk89q.com/repo/ + + always + diff --git a/implementation/v6/pom.xml b/implementation/v6/pom.xml index 75f2f13..a7b8917 100644 --- a/implementation/v6/pom.xml +++ b/implementation/v6/pom.xml @@ -49,10 +49,6 @@ org.yaml snakeyaml - - com.google.code.findbugs - jsr305 - com.thoughtworks.paranamer paranamer diff --git a/implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/event/EventListener.java b/implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/event/EventListener.java index 05a80c6..b3587cd 100644 --- a/implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/event/EventListener.java +++ b/implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/event/EventListener.java @@ -7,10 +7,10 @@ import com.sk89q.worldguard.protection.events.DisallowedPVPEvent; import lombok.NoArgsConstructor; import org.bukkit.Bukkit; import org.bukkit.entity.Player; +import org.bukkit.event.Event.Result; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; -import org.bukkit.event.Event.Result; import org.codemc.worldguardwrapper.event.*; @NoArgsConstructor 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/WrappedFlag.java index b5318d7..75ab934 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/WrappedFlag.java @@ -1,7 +1,6 @@ package org.codemc.worldguardwrapper.implementation.v6.flag; import com.sk89q.worldguard.protection.flags.Flag; -import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Getter; import org.codemc.worldguardwrapper.flag.IWrappedFlag; 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 b58ffac..1fd74b6 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 @@ -3,7 +3,6 @@ package org.codemc.worldguardwrapper.implementation.v6.region; import com.sk89q.worldedit.BlockVector; import com.sk89q.worldguard.protection.flags.Flag; import com.sk89q.worldguard.protection.regions.ProtectedRegion; -import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Getter; import org.bukkit.Location; diff --git a/implementation/v7/pom.xml b/implementation/v7/pom.xml index 051945d..e0daafc 100644 --- a/implementation/v7/pom.xml +++ b/implementation/v7/pom.xml @@ -35,6 +35,46 @@ com.sk89q commandbook + + com.sk89q + dummypermscompat + + + com.sk89q.intake + intake + + + com.sk89q + squirrelid + + + org.khelekore + prtree + + + net.sf.opencsv + opencsv + + + com.googlecode.json-simple + json-simple + + + org.flywaydb + flyway-core + + + io.papermc + paperlib + + + org.bstats.bStats-Metrics + bstats-bukkit + + + org.bstats + bstats-bukkit + 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 8324e34..a5ee466 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 @@ -1,9 +1,8 @@ package org.codemc.worldguardwrapper.implementation.v7; -import com.sk89q.worldedit.BlockVector; -import com.sk89q.worldedit.BlockVector2D; import com.sk89q.worldedit.bukkit.BukkitAdapter; import com.sk89q.worldedit.bukkit.BukkitWorld; +import com.sk89q.worldedit.math.BlockVector2; import com.sk89q.worldguard.LocalPlayer; import com.sk89q.worldguard.WorldGuard; import com.sk89q.worldguard.bukkit.WorldGuardPlugin; @@ -15,8 +14,8 @@ import com.sk89q.worldguard.protection.managers.RegionManager; import com.sk89q.worldguard.protection.regions.ProtectedCuboidRegion; import com.sk89q.worldguard.protection.regions.ProtectedPolygonalRegion; import com.sk89q.worldguard.protection.regions.ProtectedRegion; +import lombok.NoArgsConstructor; import lombok.NonNull; -import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.World; import org.bukkit.entity.Player; @@ -32,37 +31,28 @@ import org.codemc.worldguardwrapper.region.IWrappedRegion; import java.util.*; import java.util.stream.Collectors; +@NoArgsConstructor public class WorldGuardImplementation implements IWorldGuardImplementation { - private final WorldGuard core; - private final FlagRegistry flagRegistry; - private final WorldGuardPlugin plugin; - - public WorldGuardImplementation() { - core = WorldGuard.getInstance(); - flagRegistry = core.getFlagRegistry(); - plugin = WorldGuardPlugin.inst(); - } + private final WorldGuard core = WorldGuard.getInstance(); + private final FlagRegistry flagRegistry = core.getFlagRegistry(); + private final WorldGuardPlugin plugin = WorldGuardPlugin.inst(); private Optional wrapPlayer(Player player) { return Optional.ofNullable(player).map(bukkitPlayer -> plugin.wrapPlayer(player)); } - private Optional getPlayer(LocalPlayer player) { - return Optional.ofNullable(Bukkit.getPlayer(player.getUniqueId())); - } - private Optional getWorldManager(@NonNull World world) { return Optional.ofNullable(core.getPlatform().getRegionContainer().get(BukkitAdapter.adapt(world))); } private Optional getApplicableRegions(@NonNull Location location) { - return getWorldManager(location.getWorld()).map(manager -> manager.getApplicableRegions(BukkitAdapter.asVector(location))); + return getWorldManager(location.getWorld()).map(manager -> manager.getApplicableRegions(BukkitAdapter.asBlockVector(location))); } private Optional getApplicableRegions(@NonNull Location minimum, @NonNull Location maximum) { return getWorldManager(minimum.getWorld()).map(manager -> manager.getApplicableRegions( - new ProtectedCuboidRegion("temp", new BlockVector(BukkitAdapter.asVector(minimum)), new BlockVector(BukkitAdapter.asVector(maximum))))); + new ProtectedCuboidRegion("temp", BukkitAdapter.asBlockVector(minimum), BukkitAdapter.asBlockVector(maximum)))); } private Optional queryValue(Player player, @NonNull Location location, @NonNull Flag flag) { @@ -70,11 +60,6 @@ public class WorldGuardImplementation implements IWorldGuardImplementation { .orElse(null), flag)); } - private Optional queryState(Player player, @NonNull Location location, @NonNull StateFlag... stateFlags) { - return getApplicableRegions(location).map(applicableRegions -> applicableRegions.queryState(wrapPlayer(player) - .orElse(null), stateFlags)); - } - @Override public JavaPlugin getWorldGuardPlugin() { return WorldGuardPlugin.inst(); @@ -177,11 +162,11 @@ public class WorldGuardImplementation implements IWorldGuardImplementation { ProtectedRegion region; World world = points.get(0).getWorld(); if (points.size() == 2) { - region = new ProtectedCuboidRegion(id, new BlockVector(BukkitAdapter.asVector(points.get(0))), - new BlockVector(BukkitAdapter.asVector(points.get(1)))); + region = new ProtectedCuboidRegion(id, BukkitAdapter.asBlockVector(points.get(0)), + BukkitAdapter.asBlockVector(points.get(1))); } else { - List vectorPoints = points.stream() - .map(location -> new BlockVector2D(BukkitAdapter.asVector(location).toVector2D())) + List vectorPoints = points.stream() + .map(location -> BukkitAdapter.asBlockVector(location).toBlockVector2()) .collect(Collectors.toList()); region = new ProtectedPolygonalRegion(id, vectorPoints, minY, maxY); 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 86695c3..bd7a7e6 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 @@ -1,7 +1,7 @@ package org.codemc.worldguardwrapper.implementation.v7.region; -import com.sk89q.worldedit.BlockVector2D; import com.sk89q.worldedit.bukkit.BukkitAdapter; +import com.sk89q.worldedit.math.BlockVector2; import com.sk89q.worldguard.protection.flags.Flag; import com.sk89q.worldguard.protection.regions.ProtectedRegion; import lombok.AllArgsConstructor; @@ -34,7 +34,7 @@ public class WrappedRegion implements IWrappedRegion { @Override public Set getPoints() { return handle.getPoints().stream() - .map(BlockVector2D::toVector) + .map(BlockVector2::toBlockVector3) .map(vector -> BukkitAdapter.adapt(world, vector)) .collect(Collectors.toSet()); } @@ -168,7 +168,7 @@ public class WrappedRegion implements IWrappedRegion { @Override public boolean contains(Location location) { - return handle.contains(BukkitAdapter.asVector(location)); + return handle.contains(BukkitAdapter.asBlockVector(location)); } } diff --git a/pom.xml b/pom.xml index 4654194..00d116b 100644 --- a/pom.xml +++ b/pom.xml @@ -149,10 +149,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.2.0 - - false - + 3.2.1 org.apache.maven.plugins From 1e3ea4c97136995d25115786a6f8cfa4081a7537 Mon Sep 17 00:00:00 2001 From: Gabriele C Date: Tue, 27 Nov 2018 23:08:31 +0100 Subject: [PATCH 4/5] Add travis CI --- .travis.yml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..683051e --- /dev/null +++ b/.travis.yml @@ -0,0 +1,8 @@ +sudo: false +dist: trusty +language: java +jdk: + - oraclejdk8 +cache: + directories: + - '$HOME/.m2/repository' From 1a3f9f3670fbb71586f4558afc1f907c4925142e Mon Sep 17 00:00:00 2001 From: Gabriele C Date: Tue, 27 Nov 2018 23:26:36 +0100 Subject: [PATCH 5/5] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b0318a2..7627d35 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ How to include WorldEditWrapper into your maven project: org.codemc.worldguardwrapper worldguardwrapper - 1.0.3-SNAPSHOT + 1.1.0-SNAPSHOT ``` @@ -34,7 +34,7 @@ Remember to include/relocate the library into your final jar, example: org.apache.maven.plugins maven-shade-plugin - 3.2.0 + 3.2.1 package