diff --git a/legacy/src/main/java/net/islandearth/rpgregions/api/integrations/worldguard/WorldGuardLegacyIntegration.java b/legacy/src/main/java/net/islandearth/rpgregions/api/integrations/worldguard/WorldGuardLegacyIntegration.java index 56b9688..81f3bc1 100644 --- a/legacy/src/main/java/net/islandearth/rpgregions/api/integrations/worldguard/WorldGuardLegacyIntegration.java +++ b/legacy/src/main/java/net/islandearth/rpgregions/api/integrations/worldguard/WorldGuardLegacyIntegration.java @@ -94,4 +94,12 @@ public class WorldGuardLegacyIntegration implements IntegrationManager { .getApplicableRegions(location) .getRegions(); } + + @Override + public Set getAllRegionNames(org.bukkit.World world) { + return WorldGuardPlugin.inst() + .getRegionContainer() + .get(world) + .getRegions().keySet(); + } } diff --git a/modern/src/main/java/net/islandearth/rpgregions/api/integrations/griefprevention/GriefPreventionIntegration.java b/modern/src/main/java/net/islandearth/rpgregions/api/integrations/griefprevention/GriefPreventionIntegration.java index a86c216..822327d 100644 --- a/modern/src/main/java/net/islandearth/rpgregions/api/integrations/griefprevention/GriefPreventionIntegration.java +++ b/modern/src/main/java/net/islandearth/rpgregions/api/integrations/griefprevention/GriefPreventionIntegration.java @@ -16,7 +16,9 @@ import org.bukkit.entity.Player; import org.bukkit.event.player.PlayerMoveEvent; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Set; public class GriefPreventionIntegration implements IntegrationManager { @@ -83,4 +85,13 @@ public class GriefPreventionIntegration implements IntegrationManager { Claim claim = GriefPrevention.instance.dataStore.getClaim(Long.parseLong(region)); return claim != null; } + + @Override + public Set getAllRegionNames(World world) { + Set claims = new HashSet<>(); + for (Claim claim : GriefPrevention.instance.dataStore.getClaims()) { + claims.add("" + claim.getID()); + } + return claims; + } } diff --git a/modern/src/main/java/net/islandearth/rpgregions/api/integrations/residence/ResidenceIntegration.java b/modern/src/main/java/net/islandearth/rpgregions/api/integrations/residence/ResidenceIntegration.java index ac49985..ca50417 100644 --- a/modern/src/main/java/net/islandearth/rpgregions/api/integrations/residence/ResidenceIntegration.java +++ b/modern/src/main/java/net/islandearth/rpgregions/api/integrations/residence/ResidenceIntegration.java @@ -17,6 +17,7 @@ import org.bukkit.event.player.PlayerMoveEvent; import java.util.ArrayList; import java.util.List; +import java.util.Set; public class ResidenceIntegration implements IntegrationManager { @@ -83,4 +84,9 @@ public class ResidenceIntegration implements IntegrationManager { ClaimedResidence res = Residence.getInstance().getResidenceManager().getByName(region); return res != null; } + + @Override + public Set getAllRegionNames(World world) { + return Residence.getInstance().getResidenceManager().getResidences().keySet(); + } } diff --git a/modern/src/main/java/net/islandearth/rpgregions/api/integrations/ultraregions/UltraRegionsIntegration.java b/modern/src/main/java/net/islandearth/rpgregions/api/integrations/ultraregions/UltraRegionsIntegration.java index f9bfb03..38784ed 100644 --- a/modern/src/main/java/net/islandearth/rpgregions/api/integrations/ultraregions/UltraRegionsIntegration.java +++ b/modern/src/main/java/net/islandearth/rpgregions/api/integrations/ultraregions/UltraRegionsIntegration.java @@ -19,7 +19,9 @@ import org.bukkit.entity.Player; import org.bukkit.event.player.PlayerMoveEvent; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Set; import java.util.stream.Collectors; public class UltraRegionsIntegration implements IntegrationManager { @@ -98,6 +100,16 @@ public class UltraRegionsIntegration implements IntegrationManager { return !regions.isEmpty(); } + @Override + public Set getAllRegionNames(World world) { + ManagedWorld managedWorld = UltraRegions.getAPI().getWorlds().find(world); + Set regions = new HashSet<>(); + for (Region region : UltraRegions.getAPI().newRegionQuery(managedWorld).getRegions()) { + regions.add(region.getName()); + } + return regions; + } + private List getProtectedRegions(Location location) { ManagedWorld world = UltraRegions.getAPI().getWorlds().find(location.getWorld()); RegionQuery query = UltraRegions.getAPI().newRegionQuery(world).location(new XYZ(location.getX(), location.getY(), location.getZ())); diff --git a/modern/src/main/java/net/islandearth/rpgregions/api/integrations/worldguard/WorldGuardIntegration.java b/modern/src/main/java/net/islandearth/rpgregions/api/integrations/worldguard/WorldGuardIntegration.java index 7d94703..449a431 100644 --- a/modern/src/main/java/net/islandearth/rpgregions/api/integrations/worldguard/WorldGuardIntegration.java +++ b/modern/src/main/java/net/islandearth/rpgregions/api/integrations/worldguard/WorldGuardIntegration.java @@ -109,6 +109,15 @@ public class WorldGuardIntegration implements IntegrationManager { .getRegions().containsKey(region); } + @Override + public Set getAllRegionNames(World world) { + return WorldGuard.getInstance() + .getPlatform() + .getRegionContainer() + .get(BukkitAdapter.adapt(world)) + .getRegions().keySet(); + } + private Set getProtectedRegions(Location location) { return WorldGuard.getInstance() .getPlatform() diff --git a/rpgregions/src/main/java/net/islandearth/rpgregions/RPGRegions.java b/rpgregions/src/main/java/net/islandearth/rpgregions/RPGRegions.java index 55f4d2d..fe55f1e 100644 --- a/rpgregions/src/main/java/net/islandearth/rpgregions/RPGRegions.java +++ b/rpgregions/src/main/java/net/islandearth/rpgregions/RPGRegions.java @@ -192,6 +192,7 @@ public final class RPGRegions extends JavaPlugin implements RPGRegionsAPI, Langu private void registerCommands() { PaperCommandManager manager = new PaperCommandManager(this); manager.getCommandCompletions().registerAsyncCompletion("regions", context -> ImmutableList.copyOf(getManagers().getRegionsCache().getConfiguredRegions().keySet())); + manager.getCommandCompletions().registerAsyncCompletion("integration-regions", context -> ImmutableList.copyOf(this.getManagers().getIntegrationManager().getAllRegionNames(context.getPlayer().getWorld()))); manager.getCommandCompletions().registerAsyncCompletion("schematics", context -> { File schematicFolder = new File("plugins/WorldEdit/schematics/"); List files = new ArrayList<>(); diff --git a/rpgregions/src/main/java/net/islandearth/rpgregions/api/integrations/IntegrationManager.java b/rpgregions/src/main/java/net/islandearth/rpgregions/api/integrations/IntegrationManager.java index 7d8f3c9..e8e888f 100644 --- a/rpgregions/src/main/java/net/islandearth/rpgregions/api/integrations/IntegrationManager.java +++ b/rpgregions/src/main/java/net/islandearth/rpgregions/api/integrations/IntegrationManager.java @@ -5,6 +5,8 @@ import org.bukkit.Location; import org.bukkit.World; import org.bukkit.event.player.PlayerMoveEvent; +import java.util.Set; + public interface IntegrationManager { /** @@ -29,4 +31,6 @@ public interface IntegrationManager { boolean exists(World location, String region); + Set getAllRegionNames(World world); + } diff --git a/rpgregions/src/main/java/net/islandearth/rpgregions/commands/RPGRegionsCommand.java b/rpgregions/src/main/java/net/islandearth/rpgregions/commands/RPGRegionsCommand.java index e45b51b..9f635cd 100644 --- a/rpgregions/src/main/java/net/islandearth/rpgregions/commands/RPGRegionsCommand.java +++ b/rpgregions/src/main/java/net/islandearth/rpgregions/commands/RPGRegionsCommand.java @@ -66,7 +66,7 @@ public class RPGRegionsCommand extends BaseCommand { @Subcommand("add") @CommandPermission("rpgregions.add") - @CommandCompletion("@regions") + @CommandCompletion("@integration-regions") public void onAdd(Player player, String region) { if (!plugin.getManagers().getIntegrationManager().exists(player.getLocation().getWorld(), region)) { player.sendMessage(StringUtils.colour("&cThat region does not exist in your protection plugin."));