diff --git a/pom.xml b/pom.xml
index f121167..3fda5f4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -15,7 +15,7 @@
placeholderapi
- http://repo.extendedclip.com/content/repositories/placeholderapi/
+ https://repo.extendedclip.com/content/repositories/placeholderapi/
sk89q-repo
@@ -31,13 +31,13 @@
org.spigotmc
spigot-api
- 1.14.2-R0.1-SNAPSHOT
+ 1.20.4-R0.1-SNAPSHOT
provided
me.clip
placeholderapi
- LATEST
+ 2.11.6
provided
diff --git a/src/main/java/com/extendedclip/papi/expansion/worldguard/WorldGuardExpansion.java b/src/main/java/com/extendedclip/papi/expansion/worldguard/WorldGuardExpansion.java
index 10c0a4e..3bed92b 100644
--- a/src/main/java/com/extendedclip/papi/expansion/worldguard/WorldGuardExpansion.java
+++ b/src/main/java/com/extendedclip/papi/expansion/worldguard/WorldGuardExpansion.java
@@ -22,7 +22,6 @@
import me.clip.placeholderapi.PlaceholderAPIPlugin;
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
-import org.apache.commons.lang.StringUtils;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.OfflinePlayer;
@@ -30,8 +29,11 @@
import org.codemc.worldguardwrapper.WorldGuardWrapper;
import org.codemc.worldguardwrapper.region.IWrappedRegion;
import org.codemc.worldguardwrapper.selection.ICuboidSelection;
+import org.jetbrains.annotations.NotNull;
import java.util.*;
+import java.util.stream.Collectors;
+
import static java.util.stream.Collectors.toMap;
public class WorldGuardExpansion extends PlaceholderExpansion {
@@ -55,7 +57,7 @@ public boolean canRegister() {
}
@Override
- public String getName() {
+ public @NotNull String getName() {
return NAME;
}
@@ -65,7 +67,7 @@ public String getName() {
* @return The name of the author as a String.
*/
@Override
- public String getAuthor() {
+ public @NotNull String getAuthor() {
return "clip";
}
@@ -75,7 +77,7 @@ public String getAuthor() {
* @return The version as a String.
*/
@Override
- public String getVersion() {
+ public @NotNull String getVersion() {
return VERSION;
}
@@ -85,7 +87,7 @@ public String getVersion() {
* @return "worldguard".
*/
@Override
- public String getIdentifier() {
+ public @NotNull String getIdentifier() {
return IDENTIFIER;
}
@@ -93,6 +95,14 @@ public String getIdentifier() {
@Override
public String onRequest(OfflinePlayer offlinePlayer, String params) {
+ if (params.equalsIgnoreCase("regions")) {
+ return String.join(", ",getRegions(offlinePlayer.getLocation()));
+ }
+ if (params.startsWith("is_in_region_")) {
+ List regions = getRegions(offlinePlayer.getLocation());
+ return regions.contains(params.substring(13)) ? PlaceholderAPIPlugin.booleanTrue() : PlaceholderAPIPlugin.booleanFalse();
+ }
+
// Get the wrapper from input location
IWrappedRegion region;
ICuboidSelection selection;
@@ -134,6 +144,17 @@ public String onRequest(OfflinePlayer offlinePlayer, String params) {
return region.getFlags().keySet().stream().anyMatch(f ->
f.getName().equalsIgnoreCase(rg[1])) ? PlaceholderAPIPlugin.booleanTrue() : PlaceholderAPIPlugin.booleanFalse();
}
+ if (params.startsWith("region_flag_")) {
+ final String[] rg = params.split("region_flag_");
+ if (rg.length < 1) return null;
+
+ Optional> flag = region.getFlags().keySet().stream().filter(f ->
+ f.getName().equalsIgnoreCase(rg[1])).map(region::getFlag).findAny().orElse(null);
+ if (flag == null || !flag.isPresent()) return "";
+ return flag.get() instanceof Optional && ((Optional>) flag.get()).isPresent()
+ ? String.valueOf(((Optional>) flag.get()).get())
+ : "";
+ }
// Defined as a switch statement to keep thinks clean
switch (params) {
@@ -141,8 +162,11 @@ public String onRequest(OfflinePlayer offlinePlayer, String params) {
case "region_name":
return region.getId();
// Because some people are stubborn, let's have it also provide capitalization
+ // lul, that's fair
case "region_name_capitalized":
- return Character.isLetter(region.getId().charAt(0)) ? StringUtils.capitalize(region.getId()) : region.getId();
+ return Character.isLetter(region.getId().charAt(0))
+ ? String.valueOf(region.getId().charAt(0)).toUpperCase() + region.getId().substring(1)
+ : region.getId();
case "region_owner": {
// Create a set of owners
Set owners = new HashSet<>();
@@ -220,6 +244,12 @@ private IWrappedRegion getRegion(Location location, int priority) {
return null;
}
}
+ private List getRegions(Location location) {
+ return worldguard.getRegions(location)
+ .stream()
+ .map(IWrappedRegion::getId)
+ .collect(Collectors.toList());
+ }
/**
* Convert a string to a location