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 d70ef36..17bacf2 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 @@ -43,6 +43,17 @@ public interface IWorldGuardImplementation { */ boolean registerStateFlag(@NonNull String flagName, @NonNull Boolean defaultValue); + /** + * 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. * @@ -51,7 +62,9 @@ public interface IWorldGuardImplementation { * @param flag The flag * @return The flag's value */ - Optional queryFlag(Player player, @NonNull Location location, @NonNull AbstractFlag flag); + default Optional queryFlag(Player player, @NonNull Location location, @NonNull AbstractFlag flag) { + return queryFlag(player, location, flag.getName(), flag.getType()); + } /** * Register a flag to WorldGuard's flag registry. 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 df22a38..072bf8e 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 @@ -83,10 +83,10 @@ public class WorldGuardImplementation extends AbstractWorldGuardImplementation { @Override @SuppressWarnings("unchecked") - public Optional queryFlag(Player player, Location location, AbstractFlag flag) { - Flag wgFlag = flagRegistry.get(flag.getName()); - Object value = queryValue(player, location, wgFlag).orElse(null); - if (flag.getType().isInstance(value)) { + 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); } return Optional.empty(); 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 3f794fa..227418c 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 @@ -96,10 +96,10 @@ public class WorldGuardImplementation extends AbstractWorldGuardImplementation { @Override @SuppressWarnings("unchecked") - public Optional queryFlag(Player player, Location location, AbstractFlag flag) { - Flag wgFlag = flagRegistry.get(flag.getName()); - Object value = queryValue(player, location, wgFlag).orElse(null); - if (flag.getType().isInstance(value)) { + 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); } return Optional.empty();