From 55182607bd181164163d06fdea3fa5c7fd088e9b Mon Sep 17 00:00:00 2001 From: RonanCraft Date: Thu, 6 Oct 2022 11:15:26 -0400 Subject: [PATCH] Regions validation recode + getLocations fix --- pom.xml | 11 +- .../player/commands/types/CmdLocation.java | 10 +- .../player/rtp/RTPPluginValidation.java | 217 ++---------------- .../regionPlugins/RTP_FactionsUUID.java | 30 +++ .../regionPlugins/RTP_GriefDefender.java | 34 +++ .../regionPlugins/RTP_GriefPrevention.java | 27 +++ .../depends/regionPlugins/RTP_KingdomsX.java | 27 +++ .../depends/regionPlugins/RTP_Lands.java | 27 +++ .../depends/regionPlugins/RTP_Pueblos.java | 27 +++ .../depends/regionPlugins/RTP_RedProtect.java | 27 +++ .../depends/regionPlugins/RTP_Residence.java | 32 +++ .../regionPlugins/RTP_SaberFactions.java | 30 +++ .../depends/regionPlugins/RTP_Towny.java | 27 +++ .../regionPlugins/RTP_UltimateClaims.java | 28 +++ .../depends/regionPlugins/RTP_WorldGuard.java | 37 +++ .../depends/regionPlugins/RTP_hClaims.java | 27 +++ .../references/settings/SoftDepends.java | 60 +++-- src/main/resources/config.yml | 4 + 18 files changed, 453 insertions(+), 229 deletions(-) create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_FactionsUUID.java create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_GriefDefender.java create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_GriefPrevention.java create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_KingdomsX.java create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_Lands.java create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_Pueblos.java create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_RedProtect.java create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_Residence.java create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_SaberFactions.java create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_Towny.java create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_UltimateClaims.java create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_WorldGuard.java create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_hClaims.java diff --git a/pom.xml b/pom.xml index 0703c12..12fa1b8 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ me.SuperRonanCraft BetterRTP jar - 3.4.4 + 3.4.5-DEV 1.8 @@ -305,7 +305,7 @@ xyz.xenondevs particle - 1.7.1 + 1.8.1 compile @@ -328,5 +328,12 @@ + + + com.github.SaberLLC + Saber-Factions + 2.4.0-RC + provided + diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdLocation.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdLocation.java index 0a676bd..75c8c53 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdLocation.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdLocation.java @@ -86,13 +86,15 @@ public class CmdLocation implements RTPCommand, RTPCommandHelpable { //Get locations a player has access to public static HashMap getLocations(CommandSender sendi, @Nullable World world) { HashMap locations = new HashMap<>(); + boolean needPermission = BetterRTP.getInstance().getSettings().isLocationNeedPermission(); + boolean needSameWorld = BetterRTP.getInstance().getSettings().isUseLocationsInSameWorld(); for (Map.Entry location : getLocations().entrySet()) { - boolean add = false; - if (BetterRTP.getInstance().getSettings().isLocationNeedPermission()) + boolean add = true; + if (needPermission) //Do we need permission to go to this location? add = PermissionNode.getLocation(sendi, location.getKey()); - if (BetterRTP.getInstance().getSettings().isUseLocationsInSameWorld()) + if (add && needSameWorld) //Can be added and needs same world (if not same world, we don't care to check) add = world == null || location.getValue().getWorld().equals(world); - if (add) + if (add) //Location can be added to list locations.put(location.getKey(), location.getValue()); } return locations; diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPPluginValidation.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPPluginValidation.java index 36c9e34..bf2c301 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPPluginValidation.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPPluginValidation.java @@ -17,27 +17,29 @@ import com.sk89q.worldguard.protection.regions.RegionQuery; import com.songoda.ultimateclaims.UltimateClaims; import me.RonanCraft.Pueblos.Pueblos; import me.SuperRonanCraft.BetterRTP.BetterRTP; +import me.SuperRonanCraft.BetterRTP.references.depends.regionPlugins.*; import me.SuperRonanCraft.BetterRTP.references.settings.SoftDepends; import me.angeschossen.lands.api.integration.LandsIntegration; import me.ryanhamshire.GriefPrevention.GriefPrevention; import org.bukkit.Location; -public class RTPPluginValidation { //Safe locations depending on enabled dependencies +public class RTPPluginValidation { boolean checkLocation(Location loc) { - boolean plugin_worldguard = getWorlguard(loc); - boolean plugin_griefPrevention = getGriefprevention(loc); - boolean plugin_towny = getTowny(loc); - boolean plugin_redProtect = getRedProtect(loc); - boolean plugin_factionsUUID = getFactionsUUID(loc); - boolean plugin_lands = getLands(loc); - boolean plugin_residence = getResidence(loc); - boolean plugin_kingdomsx = getKingdomsx(loc); - boolean plugin_hClaims = gethClaims(loc); - boolean plugin_griefDefender = getGriefDefender(loc); - boolean plugin_ultimateClaims = getUltimateClaims(loc); - boolean plugin_pueblos = getPueblos(loc); - return plugin_worldguard + boolean plugin_worldGuard = RTP_WorldGuard.check(loc); + boolean plugin_griefPrevention = RTP_GriefPrevention.check(loc); + boolean plugin_towny = RTP_Towny.check(loc); + boolean plugin_redProtect = RTP_RedProtect.check(loc); + boolean plugin_factionsUUID = RTP_FactionsUUID.check(loc); + boolean plugin_lands = RTP_Lands.check(loc); + boolean plugin_residence = RTP_Residence.check(loc); + boolean plugin_kingdomsx = RTP_KingdomsX.check(loc); + boolean plugin_hClaims = RTP_hClaims.check(loc); + boolean plugin_griefDefender = RTP_GriefDefender.check(loc); + boolean plugin_ultimateClaims = RTP_UltimateClaims.check(loc); + boolean plugin_pueblos = RTP_Pueblos.check(loc); + boolean plugin_saberFactions = RTP_SaberFactions.check(loc); + return plugin_worldGuard && plugin_griefPrevention && plugin_towny && plugin_redProtect @@ -48,190 +50,7 @@ public class RTPPluginValidation { //Safe locations depending on enabled depende && plugin_hClaims && plugin_griefDefender && plugin_ultimateClaims - && plugin_pueblos; - } - - // TESTED (v2.12.3) - // Worldguard (v7.0.4 B1), WorldEdit (v7.2.0 B5) - // https://dev.bukkit.org/projects/worldguard - private boolean getWorlguard(Location loc) { - boolean result = true; - if (getDepends().isWorldguard()) - try { - RegionContainer container = WorldGuard.getInstance().getPlatform().getRegionContainer(); - RegionQuery query = container.createQuery(); - ApplicableRegionSet set = query.getApplicableRegions(BukkitAdapter.adapt(loc)); - //for (ProtectedRegion region : set.getRegions()) { - // region.getId() - //} - result = set.size() == 0; - } catch (Exception e) { - e.printStackTrace(); - } - return result; - } - - // TESTED (v2.13.0) - // GriefPrevention (v16.15.0) - // https://www.spigotmc.org/resources/griefprevention.1884/ - private boolean getGriefprevention(Location loc) { - boolean result = true; - if (getDepends().isGriefprevention()) - try { - result = GriefPrevention.instance.dataStore.getClaimAt(loc, true, null) == null; - } catch (Exception e) { - e.printStackTrace(); - } - return result; - } - - // NOT TESTED (2.13.0) - // Towny (v0.96.1.11) - // https://www.spigotmc.org/resources/towny.72694/ - private boolean getTowny(Location loc) { - boolean result = true; - if (getDepends().isTowny()) - try { - result = TownyAPI.getInstance().isWilderness(loc); - } catch (Exception e) { - e.printStackTrace(); - } - return result; - } - - // TESTED (2.13.0) - // RedProtect (v7.7.2) - // https://www.spigotmc.org/resources/redprotect.15841/ - private boolean getRedProtect(Location loc) { - boolean result = true; - if (getDepends().isRedProtect()) - try { - result = RedProtect.get().getAPI().getRegion(loc) == null; - } catch (Exception e) { - e.printStackTrace(); - } - return result; - } - - // NOT TESTED (2.13.2) - // FactionsUUID (v1.6.9.5-U0.5.16) - // https://www.spigotmc.org/resources/factionsuuid.1035/ - private boolean getFactionsUUID(Location loc) { - boolean result = true; - if (getDepends().isFactionsUUID()) - try { - Faction faction = Board.getInstance().getFactionAt(new FLocation(loc)); - result = faction.isWilderness() || faction.isSafeZone(); - } catch (Exception e) { - e.printStackTrace(); - } - return result; - } - - // NOT TESTED (2.14.3) - // Lands (v5.0.5) - // https://www.spigotmc.org/resources/lands.53313/ - private boolean getLands(Location loc) { - boolean result = true; - if (getDepends().isLands()) - try { - result = !(new LandsIntegration(BetterRTP.getInstance()).isClaimed(loc)); - } catch (Exception e) { - e.printStackTrace(); - } - return result; - } - - // NOT TESTED (2.14.3) - // Residence (v4.9.1.9) - // https://www.spigotmc.org/resources/residence.11480/ - private boolean getResidence(Location loc) { - boolean result = true; - if (getDepends().isResidence()) - try { - result = Residence.getInstance().getResidenceManager().getByLoc(loc) == null; - } catch (Exception e) { - e.printStackTrace(); - } - return result; - } - - // NOT TESTED (3.0.2) - // KingdomsX (v1.10.5.2) - // https://www.spigotmc.org/resources/kingdomsx.77670/ - private boolean getKingdomsx(Location loc) { - boolean result = true; - if (getDepends().isKingdomsx()) - try { - org.kingdoms.constants.land.Land land = org.kingdoms.constants.land.Land.getLand(loc); - result = land == null || !land.isClaimed(); - } catch (Exception e) { - e.printStackTrace(); - } - return result; - } - - // NOT TESTED (3.1.0) - // hClaims (v1.1.1) - // https://www.spigotmc.org/resources/hclaims.90540/ (Local Repo) - private boolean gethClaims(Location loc) { - boolean result = true; - if (getDepends().isHClaims()) - try { - result = ClaimAPI.getInstance().isClaimed(loc); - } catch (Exception e) { - e.printStackTrace(); - } - return result; - } - - // NOT TESTED (3.1.0) - // GriefDefender (v1.5.10) - // https://www.spigotmc.org/resources/griefdefender.68900/ - private boolean getGriefDefender(Location loc) { - boolean result = true; - if (getDepends().isGriefDefender()) - try { - for (Claim claim : GriefDefender.getCore().getAllClaims()) - if (claim.contains(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ())) { - result = false; - break; - } - } catch (Exception e) { - e.printStackTrace(); - } - return result; - } - - // NOT TESTED (3.1.0) - // UltimateClaims (v1.6.1) - // https://songoda.com/marketplace/product/ultimateclaims-the-ultimate-claiming-plugin.65 - private boolean getUltimateClaims(Location loc) { - boolean result = true; - if (getDepends().isUltimateClaims()) - try { - result = UltimateClaims.getInstance().getClaimManager().getClaim(loc.getChunk()) == null; - } catch (Exception e) { - e.printStackTrace(); - } - return result; - } - - // NOT TESTED (3.1.0) - // Pueblos (v2.0.1) - // https://www.spigotmc.org/resources/pueblos.91255/ - private boolean getPueblos(Location loc) { - boolean result = true; - if (getDepends().isPueblos()) - try { - result = Pueblos.getInstance().getClaimHandler().getClaimMain(loc) == null; - } catch (Exception e) { - e.printStackTrace(); - } - return result; - } - - private SoftDepends getDepends() { - return BetterRTP.getInstance().getSettings().getsDepends(); + && plugin_pueblos + && plugin_saberFactions; } } diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_FactionsUUID.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_FactionsUUID.java new file mode 100644 index 0000000..784f8e7 --- /dev/null +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_FactionsUUID.java @@ -0,0 +1,30 @@ +package me.SuperRonanCraft.BetterRTP.references.depends.regionPlugins; + +import com.massivecraft.factions.Board; +import com.massivecraft.factions.FLocation; +import com.massivecraft.factions.Faction; +import me.SuperRonanCraft.BetterRTP.BetterRTP; +import me.SuperRonanCraft.BetterRTP.references.settings.SoftDepends; +import org.bukkit.Location; + +public class RTP_FactionsUUID { + + // NOT TESTED (2.13.2) + // FactionsUUID (v1.6.9.5-U0.5.16) + // https://www.spigotmc.org/resources/factionsuuid.1035/ + public static boolean check(Location loc) { + boolean result = true; + if (getDepends().isFactionsUUID()) + try { + Faction faction = Board.getInstance().getFactionAt(new FLocation(loc)); + result = faction.isWilderness() || faction.isSafeZone(); + } catch (Exception e) { + e.printStackTrace(); + } + return result; + } + + private static SoftDepends getDepends() { + return BetterRTP.getInstance().getSettings().getsDepends(); + } +} diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_GriefDefender.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_GriefDefender.java new file mode 100644 index 0000000..8c39d14 --- /dev/null +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_GriefDefender.java @@ -0,0 +1,34 @@ +package me.SuperRonanCraft.BetterRTP.references.depends.regionPlugins; + +import com.griefdefender.api.GriefDefender; +import com.griefdefender.api.claim.Claim; +import com.songoda.ultimateclaims.UltimateClaims; +import me.RonanCraft.Pueblos.Pueblos; +import me.SuperRonanCraft.BetterRTP.BetterRTP; +import me.SuperRonanCraft.BetterRTP.references.settings.SoftDepends; +import org.bukkit.Location; + +public class RTP_GriefDefender { + + // NOT TESTED (3.1.0) + // GriefDefender (v1.5.10) + // https://www.spigotmc.org/resources/griefdefender.68900/ + public static boolean check(Location loc) { + boolean result = true; + if (getDepends().isGriefDefender()) + try { + for (Claim claim : GriefDefender.getCore().getAllClaims()) + if (claim.contains(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ())) { + result = false; + break; + } + } catch (Exception e) { + e.printStackTrace(); + } + return result; + } + + private static SoftDepends getDepends() { + return BetterRTP.getInstance().getSettings().getsDepends(); + } +} diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_GriefPrevention.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_GriefPrevention.java new file mode 100644 index 0000000..93f3c6d --- /dev/null +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_GriefPrevention.java @@ -0,0 +1,27 @@ +package me.SuperRonanCraft.BetterRTP.references.depends.regionPlugins; + +import me.SuperRonanCraft.BetterRTP.BetterRTP; +import me.SuperRonanCraft.BetterRTP.references.settings.SoftDepends; +import me.ryanhamshire.GriefPrevention.GriefPrevention; +import org.bukkit.Location; + +public class RTP_GriefPrevention { + + // TESTED (v2.13.0) + // GriefPrevention (v16.15.0) + // https://www.spigotmc.org/resources/griefprevention.1884/ + public static boolean check(Location loc) { + boolean result = true; + if (getDepends().isGriefprevention()) + try { + result = GriefPrevention.instance.dataStore.getClaimAt(loc, true, null) == null; + } catch (Exception e) { + e.printStackTrace(); + } + return result; + } + + private static SoftDepends getDepends() { + return BetterRTP.getInstance().getSettings().getsDepends(); + } +} diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_KingdomsX.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_KingdomsX.java new file mode 100644 index 0000000..e12140d --- /dev/null +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_KingdomsX.java @@ -0,0 +1,27 @@ +package me.SuperRonanCraft.BetterRTP.references.depends.regionPlugins; + +import me.SuperRonanCraft.BetterRTP.BetterRTP; +import me.SuperRonanCraft.BetterRTP.references.settings.SoftDepends; +import org.bukkit.Location; + +public class RTP_KingdomsX { + + // NOT TESTED (3.0.2) + // KingdomsX (v1.10.5.2) + // https://www.spigotmc.org/resources/kingdomsx.77670/ + public static boolean check(Location loc) { + boolean result = true; + if (getDepends().isKingdomsx()) + try { + org.kingdoms.constants.land.Land land = org.kingdoms.constants.land.Land.getLand(loc); + result = land == null || !land.isClaimed(); + } catch (Exception e) { + e.printStackTrace(); + } + return result; + } + + private static SoftDepends getDepends() { + return BetterRTP.getInstance().getSettings().getsDepends(); + } +} diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_Lands.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_Lands.java new file mode 100644 index 0000000..5b5ea08 --- /dev/null +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_Lands.java @@ -0,0 +1,27 @@ +package me.SuperRonanCraft.BetterRTP.references.depends.regionPlugins; + +import me.SuperRonanCraft.BetterRTP.BetterRTP; +import me.SuperRonanCraft.BetterRTP.references.settings.SoftDepends; +import me.angeschossen.lands.api.integration.LandsIntegration; +import org.bukkit.Location; + +public class RTP_Lands { + + // NOT TESTED (2.14.3) + // Lands (v5.0.5) + // https://www.spigotmc.org/resources/lands.53313/ + public static boolean check(Location loc) { + boolean result = true; + if (getDepends().isLands()) + try { + result = !(new LandsIntegration(BetterRTP.getInstance()).isClaimed(loc)); + } catch (Exception e) { + e.printStackTrace(); + } + return result; + } + + private static SoftDepends getDepends() { + return BetterRTP.getInstance().getSettings().getsDepends(); + } +} diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_Pueblos.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_Pueblos.java new file mode 100644 index 0000000..1330731 --- /dev/null +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_Pueblos.java @@ -0,0 +1,27 @@ +package me.SuperRonanCraft.BetterRTP.references.depends.regionPlugins; + +import me.RonanCraft.Pueblos.Pueblos; +import me.SuperRonanCraft.BetterRTP.BetterRTP; +import me.SuperRonanCraft.BetterRTP.references.settings.SoftDepends; +import org.bukkit.Location; + +public class RTP_Pueblos { + + // NOT TESTED (3.1.0) + // Pueblos (v2.0.1) + // https://www.spigotmc.org/resources/pueblos.91255/ + public static boolean check(Location loc) { + boolean result = true; + if (getDepends().isPueblos()) + try { + result = Pueblos.getInstance().getClaimHandler().getClaimMain(loc) == null; + } catch (Exception e) { + e.printStackTrace(); + } + return result; + } + + private static SoftDepends getDepends() { + return BetterRTP.getInstance().getSettings().getsDepends(); + } +} diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_RedProtect.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_RedProtect.java new file mode 100644 index 0000000..28f403e --- /dev/null +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_RedProtect.java @@ -0,0 +1,27 @@ +package me.SuperRonanCraft.BetterRTP.references.depends.regionPlugins; + +import br.net.fabiozumbi12.RedProtect.Bukkit.RedProtect; +import me.SuperRonanCraft.BetterRTP.BetterRTP; +import me.SuperRonanCraft.BetterRTP.references.settings.SoftDepends; +import org.bukkit.Location; + +public class RTP_RedProtect { + + // TESTED (2.13.0) + // RedProtect (v7.7.2) + // https://www.spigotmc.org/resources/redprotect.15841/ + public static boolean check(Location loc) { + boolean result = true; + if (getDepends().isRedProtect()) + try { + result = RedProtect.get().getAPI().getRegion(loc) == null; + } catch (Exception e) { + e.printStackTrace(); + } + return result; + } + + private static SoftDepends getDepends() { + return BetterRTP.getInstance().getSettings().getsDepends(); + } +} diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_Residence.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_Residence.java new file mode 100644 index 0000000..96eccb1 --- /dev/null +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_Residence.java @@ -0,0 +1,32 @@ +package me.SuperRonanCraft.BetterRTP.references.depends.regionPlugins; + +import com.bekvon.bukkit.residence.Residence; +import com.griefdefender.api.GriefDefender; +import com.griefdefender.api.claim.Claim; +import com.hakan.claimsystem.api.ClaimAPI; +import com.songoda.ultimateclaims.UltimateClaims; +import me.RonanCraft.Pueblos.Pueblos; +import me.SuperRonanCraft.BetterRTP.BetterRTP; +import me.SuperRonanCraft.BetterRTP.references.settings.SoftDepends; +import org.bukkit.Location; + +public class RTP_Residence { + + // NOT TESTED (2.14.3) + // Residence (v4.9.1.9) + // https://www.spigotmc.org/resources/residence.11480/ + public static boolean check(Location loc) { + boolean result = true; + if (getDepends().isResidence()) + try { + result = Residence.getInstance().getResidenceManager().getByLoc(loc) == null; + } catch (Exception e) { + e.printStackTrace(); + } + return result; + } + + private static SoftDepends getDepends() { + return BetterRTP.getInstance().getSettings().getsDepends(); + } +} diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_SaberFactions.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_SaberFactions.java new file mode 100644 index 0000000..a8750e5 --- /dev/null +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_SaberFactions.java @@ -0,0 +1,30 @@ +package me.SuperRonanCraft.BetterRTP.references.depends.regionPlugins; + +import com.massivecraft.factions.*; +import me.RonanCraft.Pueblos.Pueblos; +import me.SuperRonanCraft.BetterRTP.BetterRTP; +import me.SuperRonanCraft.BetterRTP.references.settings.SoftDepends; +import org.bukkit.Location; + +public class RTP_SaberFactions { + + // NOT TESTED (3.4.5) + // SaberFactions (v2.0.1) + // https://www.spigotmc.org/resources/saberfactions.69771/ + public static boolean check(Location loc) { + boolean result = true; + if (getDepends().isSaberFactions()) + try { + FLocation fLoc = new FLocation(loc); + Faction faction = Board.getInstance().getFactionAt(fLoc); + result = faction == null; + } catch (Exception e) { + e.printStackTrace(); + } + return result; + } + + private static SoftDepends getDepends() { + return BetterRTP.getInstance().getSettings().getsDepends(); + } +} diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_Towny.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_Towny.java new file mode 100644 index 0000000..aa85d2f --- /dev/null +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_Towny.java @@ -0,0 +1,27 @@ +package me.SuperRonanCraft.BetterRTP.references.depends.regionPlugins; + +import com.palmergames.bukkit.towny.TownyAPI; +import me.SuperRonanCraft.BetterRTP.BetterRTP; +import me.SuperRonanCraft.BetterRTP.references.settings.SoftDepends; +import org.bukkit.Location; + +public class RTP_Towny { + + // NOT TESTED (2.13.0) + // Towny (v0.96.1.11) + // https://www.spigotmc.org/resources/towny.72694/ + public static boolean check(Location loc) { + boolean result = true; + if (getDepends().isTowny()) + try { + result = TownyAPI.getInstance().isWilderness(loc); + } catch (Exception e) { + e.printStackTrace(); + } + return result; + } + + private static SoftDepends getDepends() { + return BetterRTP.getInstance().getSettings().getsDepends(); + } +} diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_UltimateClaims.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_UltimateClaims.java new file mode 100644 index 0000000..a57aa25 --- /dev/null +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_UltimateClaims.java @@ -0,0 +1,28 @@ +package me.SuperRonanCraft.BetterRTP.references.depends.regionPlugins; + +import com.songoda.ultimateclaims.UltimateClaims; +import me.RonanCraft.Pueblos.Pueblos; +import me.SuperRonanCraft.BetterRTP.BetterRTP; +import me.SuperRonanCraft.BetterRTP.references.settings.SoftDepends; +import org.bukkit.Location; + +public class RTP_UltimateClaims { + + // NOT TESTED (3.1.0) + // UltimateClaims (v1.6.1) + // https://songoda.com/marketplace/product/ultimateclaims-the-ultimate-claiming-plugin.65 + public static boolean check(Location loc) { + boolean result = true; + if (getDepends().isUltimateClaims()) + try { + result = UltimateClaims.getInstance().getClaimManager().getClaim(loc.getChunk()) == null; + } catch (Exception e) { + e.printStackTrace(); + } + return result; + } + + private static SoftDepends getDepends() { + return BetterRTP.getInstance().getSettings().getsDepends(); + } +} diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_WorldGuard.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_WorldGuard.java new file mode 100644 index 0000000..caaf5cc --- /dev/null +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_WorldGuard.java @@ -0,0 +1,37 @@ +package me.SuperRonanCraft.BetterRTP.references.depends.regionPlugins; + +import com.sk89q.worldedit.bukkit.BukkitAdapter; +import com.sk89q.worldguard.WorldGuard; +import com.sk89q.worldguard.protection.ApplicableRegionSet; +import com.sk89q.worldguard.protection.regions.RegionContainer; +import com.sk89q.worldguard.protection.regions.RegionQuery; +import me.SuperRonanCraft.BetterRTP.BetterRTP; +import me.SuperRonanCraft.BetterRTP.references.settings.SoftDepends; +import org.bukkit.Location; + +public class RTP_WorldGuard { + + // TESTED (v2.12.3) + // Worldguard (v7.0.4 B1), WorldEdit (v7.2.0 B5) + // https://dev.bukkit.org/projects/worldguard + public static boolean check(Location loc) { + boolean result = true; + if (getDepends().isWorldguard()) + try { + RegionContainer container = WorldGuard.getInstance().getPlatform().getRegionContainer(); + RegionQuery query = container.createQuery(); + ApplicableRegionSet set = query.getApplicableRegions(BukkitAdapter.adapt(loc)); + //for (ProtectedRegion region : set.getRegions()) { + // region.getId() + //} + result = set.size() == 0; + } catch (Exception e) { + e.printStackTrace(); + } + return result; + } + + private static SoftDepends getDepends() { + return BetterRTP.getInstance().getSettings().getsDepends(); + } +} diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_hClaims.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_hClaims.java new file mode 100644 index 0000000..1755f02 --- /dev/null +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_hClaims.java @@ -0,0 +1,27 @@ +package me.SuperRonanCraft.BetterRTP.references.depends.regionPlugins; + +import com.hakan.claimsystem.api.ClaimAPI; +import me.SuperRonanCraft.BetterRTP.BetterRTP; +import me.SuperRonanCraft.BetterRTP.references.settings.SoftDepends; +import org.bukkit.Location; + +public class RTP_hClaims { + + // NOT TESTED (3.1.0) + // hClaims (v1.1.1) + // https://www.spigotmc.org/resources/hclaims.90540/ (Local Repo) + public static boolean check(Location loc) { + boolean result = true; + if (getDepends().isHClaims()) + try { + result = ClaimAPI.getInstance().isClaimed(loc); + } catch (Exception e) { + e.printStackTrace(); + } + return result; + } + + private static SoftDepends getDepends() { + return BetterRTP.getInstance().getSettings().getsDepends(); + } +} diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/settings/SoftDepends.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/settings/SoftDepends.java index 9c3ceee..e8c50dc 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/settings/SoftDepends.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/settings/SoftDepends.java @@ -9,31 +9,35 @@ import java.util.logging.Level; public class SoftDepends { - private boolean respect_worldguard = false; - private boolean respect_griefprevention = false; - private boolean respect_towny = false; - private boolean respect_redProtect = false; - private boolean respect_factionsUUID = false; - private boolean respect_lands = false; - private boolean respect_residence = false; - private boolean respect_kingdomsx = false; - private boolean respect_hClaims = false; - private boolean respect_griefDefender = false; - private boolean respect_ultimateClaims = false; - private boolean respect_pueblos = false; + private boolean + respect_worldguard = false, + respect_griefprevention = false, + respect_towny = false, + respect_redProtect = false, + respect_factionsUUID = false, + respect_lands = false, + respect_residence = false, + respect_kingdomsx = false, + respect_hClaims = false, + respect_griefDefender = false, + respect_ultimateClaims = false, + respect_pueblos = false, + respect_saberFactions = false; //RETURNABLES - @Getter private boolean worldguard = false; - @Getter private boolean griefprevention = false; - @Getter private boolean towny = false; - @Getter private boolean redProtect = false; - @Getter private boolean factionsUUID = false; - @Getter private boolean lands = false; - @Getter private boolean residence = false; - @Getter private boolean kingdomsx = false; - @Getter private boolean hClaims = false; - @Getter private boolean griefDefender = false; - @Getter private boolean ultimateClaims = false; - @Getter private boolean pueblos = false; + @Getter private boolean + worldguard = false, + griefprevention = false, + towny = false, + redProtect = false, + factionsUUID = false, + lands = false, + residence = false, + kingdomsx = false, + hClaims = false, + griefDefender = false, + ultimateClaims = false, + pueblos = false, + saberFactions = false; void load() { FileBasics.FILETYPE config = BetterRTP.getInstance().getFiles().getType(FileBasics.FILETYPE.CONFIG); @@ -50,6 +54,7 @@ public class SoftDepends { respect_griefDefender = config.getBoolean( pre + "GriefDefender"); respect_ultimateClaims = config.getBoolean( pre + "UltimateClaims"); respect_pueblos = config.getBoolean( pre + "Pueblos"); + respect_saberFactions = config.getBoolean( pre + "SaberFactions"); registerWorldguard(); registerGriefPrevention(); registerTowny(); @@ -62,6 +67,7 @@ public class SoftDepends { registerGriefDefender(); registerUltimateClaims(); registerPueblos(); + registerSaberFactions(); } public void registerWorldguard() { @@ -136,6 +142,12 @@ public class SoftDepends { debug("Respecting `Pueblos` was " + (pueblos ? "SUCCESSFULLY" : "NOT") + " registered"); } + public void registerSaberFactions() { + saberFactions = respect_saberFactions && Bukkit.getPluginManager().isPluginEnabled("Factions"); + if (respect_saberFactions) + debug("Respecting `SaberFactions` was " + (saberFactions ? "SUCCESSFULLY" : "NOT") + " registered"); + } + private void debug(String str) { if (BetterRTP.getInstance().getSettings().isDebug()) BetterRTP.getInstance().getLogger().log(Level.INFO, str); diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index e818b6e..7e4fea9 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -27,6 +27,10 @@ Settings: GriefDefender: false ## Respect UltimateClaims areas (https://songoda.com/marketplace/product/ultimateclaims-the-ultimate-claiming-plugin.65) UltimateClaims: false + ## Respect Pueblos regions (https://www.spigotmc.org/resources/pueblos.91255/) (My Favorite :D) + Pueblos: false + ## Respect SaberFactions areas (https://www.spigotmc.org/resources/saberfactions.69771/) + SaberFactions: false ## Output to console some debugging info Debugger: false