From 9dcf8d5b60a92d876f691a868de2fe8ab4913982 Mon Sep 17 00:00:00 2001 From: Esophose Date: Sat, 3 Aug 2019 14:02:10 -0600 Subject: [PATCH] WorldGuard 7.0.0 support --- api-modules/FactionsM/pom.xml | 6 + api-modules/FactionsOne/pom.xml | 6 + api-modules/FactionsUUID/pom.xml | 6 + api-modules/LegacyFactions/pom.xml | 6 + api-modules/WorldGuard-Legacy/pom.xml | 42 ++++++ .../dependencies/WorldGuardLegacyHelper.java | 2 +- api-modules/WorldGuard/pom.xml | 42 ++++++ .../utils/dependencies/WorldGuardHelper.java | 134 ++++++++++++++++++ plugin-modules/Core/pom.xml | 24 ++++ .../epicbosses/managers/BossHookManager.java | 11 +- .../songoda/epicbosses/utils/ServerUtils.java | 3 +- .../songoda/epicbosses/utils/Versions.java | 5 +- plugin-modules/FactionHelper/pom.xml | 9 ++ plugin-modules/WorldGuardHelper/pom.xml | 23 +++ .../epicbosses/utils/IWorldGuardHelper.java | 0 pom.xml | 36 ++--- 16 files changed, 332 insertions(+), 23 deletions(-) create mode 100644 api-modules/WorldGuard-Legacy/pom.xml rename plugin-modules/Core/src/com/songoda/epicbosses/utils/dependencies/WorldGuardHelper.java => api-modules/WorldGuard-Legacy/src/com/songoda/epicbosses/utils/dependencies/WorldGuardLegacyHelper.java (98%) create mode 100644 api-modules/WorldGuard/pom.xml create mode 100644 api-modules/WorldGuard/src/com/songoda/epicbosses/utils/dependencies/WorldGuardHelper.java create mode 100644 plugin-modules/WorldGuardHelper/pom.xml rename plugin-modules/{Core => WorldGuardHelper}/src/com/songoda/epicbosses/utils/IWorldGuardHelper.java (100%) diff --git a/api-modules/FactionsM/pom.xml b/api-modules/FactionsM/pom.xml index eec3174..b8eab52 100644 --- a/api-modules/FactionsM/pom.xml +++ b/api-modules/FactionsM/pom.xml @@ -14,6 +14,12 @@ jar + + org.spigotmc + spigot + 1.12.2 + provided + com.songoda.epicbosses FactionHelper diff --git a/api-modules/FactionsOne/pom.xml b/api-modules/FactionsOne/pom.xml index d6f43a8..f1cb903 100644 --- a/api-modules/FactionsOne/pom.xml +++ b/api-modules/FactionsOne/pom.xml @@ -14,6 +14,12 @@ jar + + org.spigotmc + spigot + 1.12.2 + provided + com.songoda.epicbosses FactionHelper diff --git a/api-modules/FactionsUUID/pom.xml b/api-modules/FactionsUUID/pom.xml index 4781c19..34e9dbb 100644 --- a/api-modules/FactionsUUID/pom.xml +++ b/api-modules/FactionsUUID/pom.xml @@ -14,6 +14,12 @@ jar + + org.spigotmc + spigot + 1.12.2 + provided + com.songoda.epicbosses FactionHelper diff --git a/api-modules/LegacyFactions/pom.xml b/api-modules/LegacyFactions/pom.xml index c89cc7b..bb834f6 100644 --- a/api-modules/LegacyFactions/pom.xml +++ b/api-modules/LegacyFactions/pom.xml @@ -14,6 +14,12 @@ jar + + org.spigotmc + spigot + 1.12.2 + provided + com.songoda.epicbosses FactionHelper diff --git a/api-modules/WorldGuard-Legacy/pom.xml b/api-modules/WorldGuard-Legacy/pom.xml new file mode 100644 index 0000000..1e8ad37 --- /dev/null +++ b/api-modules/WorldGuard-Legacy/pom.xml @@ -0,0 +1,42 @@ + + + + EpicBosses + com.songoda.epicbosses + maven-version-number + ../../pom.xml + + 4.0.0 + + WorldGuard-Legacy + jar + + + + org.spigotmc + spigot + 1.12.2 + provided + + + com.songoda.epicbosses + WorldGuardHelper + ${project.version} + provided + + + com.sk89q + worldedit + 6.1.9 + provided + + + com.sk89q + worldguard + 6.2.2 + provided + + + \ No newline at end of file diff --git a/plugin-modules/Core/src/com/songoda/epicbosses/utils/dependencies/WorldGuardHelper.java b/api-modules/WorldGuard-Legacy/src/com/songoda/epicbosses/utils/dependencies/WorldGuardLegacyHelper.java similarity index 98% rename from plugin-modules/Core/src/com/songoda/epicbosses/utils/dependencies/WorldGuardHelper.java rename to api-modules/WorldGuard-Legacy/src/com/songoda/epicbosses/utils/dependencies/WorldGuardLegacyHelper.java index 6c70461..25f029d 100644 --- a/plugin-modules/Core/src/com/songoda/epicbosses/utils/dependencies/WorldGuardHelper.java +++ b/api-modules/WorldGuard-Legacy/src/com/songoda/epicbosses/utils/dependencies/WorldGuardLegacyHelper.java @@ -18,7 +18,7 @@ import java.util.List; * @version 1.0.0 * @since 16-Oct-18 */ -public class WorldGuardHelper implements IWorldGuardHelper { +public class WorldGuardLegacyHelper implements IWorldGuardHelper { private WorldGuardPlugin worldGuard; diff --git a/api-modules/WorldGuard/pom.xml b/api-modules/WorldGuard/pom.xml new file mode 100644 index 0000000..324f211 --- /dev/null +++ b/api-modules/WorldGuard/pom.xml @@ -0,0 +1,42 @@ + + + + EpicBosses + com.songoda.epicbosses + maven-version-number + ../../pom.xml + + 4.0.0 + + WorldGuard + jar + + + + org.spigotmc + spigot + 1.14.1 + provided + + + com.songoda.epicbosses + WorldGuardHelper + ${project.version} + provided + + + com.sk89q + worldedit + 7.0.0 + provided + + + com.sk89q + worldguard + 7.0.0 + provided + + + \ No newline at end of file diff --git a/api-modules/WorldGuard/src/com/songoda/epicbosses/utils/dependencies/WorldGuardHelper.java b/api-modules/WorldGuard/src/com/songoda/epicbosses/utils/dependencies/WorldGuardHelper.java new file mode 100644 index 0000000..728e78f --- /dev/null +++ b/api-modules/WorldGuard/src/com/songoda/epicbosses/utils/dependencies/WorldGuardHelper.java @@ -0,0 +1,134 @@ +package com.songoda.epicbosses.utils.dependencies; + +import com.sk89q.worldedit.bukkit.BukkitAdapter; +import com.sk89q.worldedit.world.World; +import com.sk89q.worldguard.WorldGuard; +import com.sk89q.worldguard.protection.ApplicableRegionSet; +import com.sk89q.worldguard.protection.flags.Flags; +import com.sk89q.worldguard.protection.flags.StateFlag; +import com.sk89q.worldguard.protection.managers.RegionManager; +import com.sk89q.worldguard.protection.regions.ProtectedRegion; +import com.sk89q.worldguard.protection.regions.RegionQuery; +import com.songoda.epicbosses.utils.IWorldGuardHelper; +import org.bukkit.Bukkit; +import org.bukkit.Location; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author Charles Cullen + * @version 1.0.0 + * @since 16-Oct-18 + */ +public class WorldGuardHelper implements IWorldGuardHelper { + + private WorldGuard worldGuard; + + @Override + public boolean isPvpAllowed(Location loc) { + if(Bukkit.getServer().getPluginManager().getPlugin("WorldGuard") != null) { + if(worldGuard == null) { + this.worldGuard = WorldGuard.getInstance(); + } + + RegionQuery regionQuery = this.worldGuard.getPlatform().getRegionContainer().createQuery(); + ApplicableRegionSet applicableRegionSet = regionQuery.getApplicableRegions(BukkitAdapter.adapt(loc)); + StateFlag.State state = applicableRegionSet.queryState(null, Flags.PVP); + + return state != StateFlag.State.DENY; + } + + return true; + } + + @Override + public boolean isBreakAllowed(Location loc) { + if(Bukkit.getServer().getPluginManager().getPlugin("WorldGuard") != null) { + if(worldGuard == null) { + this.worldGuard = WorldGuard.getInstance(); + } + + RegionQuery regionQuery = this.worldGuard.getPlatform().getRegionContainer().createQuery(); + ApplicableRegionSet applicableRegionSet = regionQuery.getApplicableRegions(BukkitAdapter.adapt(loc)); + StateFlag.State state = applicableRegionSet.queryState(null, Flags.BLOCK_BREAK); + + return state != StateFlag.State.DENY; + } + + return true; + } + + @Override + public boolean isExplosionsAllowed(Location loc) { + if(Bukkit.getServer().getPluginManager().getPlugin("WorldGuard") != null) { + if(worldGuard == null) { + this.worldGuard = WorldGuard.getInstance(); + } + + RegionQuery regionQuery = this.worldGuard.getPlatform().getRegionContainer().createQuery(); + ApplicableRegionSet applicableRegionSet = regionQuery.getApplicableRegions(BukkitAdapter.adapt(loc)); + StateFlag.State state = applicableRegionSet.queryState(null, Flags.OTHER_EXPLOSION); + + return state != StateFlag.State.DENY; + } + + return true; + } + + @Override + public List getRegionNames(Location loc) { + if(Bukkit.getServer().getPluginManager().getPlugin("WorldGuard") != null) { + if (worldGuard == null) { + this.worldGuard = WorldGuard.getInstance(); + } + + List regions = new ArrayList<>(); + List parentNames = new ArrayList<>(); + World world = BukkitAdapter.adapt(loc.getWorld()); + RegionManager regionManager = this.worldGuard.getPlatform().getRegionContainer().get(world); + + if (regionManager == null) return null; + + ApplicableRegionSet set = regionManager.getApplicableRegions(BukkitAdapter.asBlockVector(loc)); + + for (ProtectedRegion region : set) { + String id = region.getId(); + + regions.add(id); + + ProtectedRegion parent = region.getParent(); + + while (parent != null) { + parentNames.add(parent.getId()); + parent = parent.getParent(); + } + } + + for (String name : parentNames) { + regions.remove(name); + } + + return regions; + } + + return null; + } + + @Override + public boolean isMobSpawningAllowed(Location loc) { + if(Bukkit.getServer().getPluginManager().getPlugin("WorldGuard") != null) { + if(worldGuard == null) { + this.worldGuard = WorldGuard.getInstance(); + } + + RegionQuery regionQuery = this.worldGuard.getPlatform().getRegionContainer().createQuery(); + ApplicableRegionSet applicableRegionSet = regionQuery.getApplicableRegions(BukkitAdapter.adapt(loc)); + StateFlag.State state = applicableRegionSet.queryState(null, Flags.MOB_SPAWNING); + + return state != StateFlag.State.DENY; + } + + return true; + } +} diff --git a/plugin-modules/Core/pom.xml b/plugin-modules/Core/pom.xml index 202fe34..ad33df0 100644 --- a/plugin-modules/Core/pom.xml +++ b/plugin-modules/Core/pom.xml @@ -14,6 +14,12 @@ jar + + org.spigotmc + spigot + 1.12.2 + provided + ${project.groupId} FactionHelper @@ -44,6 +50,24 @@ ${project.version} compile + + ${project.groupId} + WorldGuardHelper + ${project.version} + compile + + + ${project.groupId} + WorldGuard + ${project.version} + compile + + + ${project.groupId} + WorldGuard-Legacy + ${project.version} + compile + diff --git a/plugin-modules/Core/src/com/songoda/epicbosses/managers/BossHookManager.java b/plugin-modules/Core/src/com/songoda/epicbosses/managers/BossHookManager.java index ce0d298..dbdc69f 100644 --- a/plugin-modules/Core/src/com/songoda/epicbosses/managers/BossHookManager.java +++ b/plugin-modules/Core/src/com/songoda/epicbosses/managers/BossHookManager.java @@ -1,5 +1,8 @@ package com.songoda.epicbosses.managers; +import com.songoda.epicbosses.utils.Versions; +import com.songoda.epicbosses.utils.dependencies.WorldGuardHelper; +import com.songoda.epicbosses.utils.version.VersionHandler; import lombok.Getter; import com.songoda.epicbosses.CustomBosses; import com.songoda.epicbosses.utils.IASkyblockHelper; @@ -11,7 +14,7 @@ import utils.factions.FactionsM; import utils.factions.FactionsOne; import utils.factions.FactionsUUID; import utils.factions.LegacyFactions; -import com.songoda.epicbosses.utils.dependencies.WorldGuardHelper; +import com.songoda.epicbosses.utils.dependencies.WorldGuardLegacyHelper; import org.bukkit.Bukkit; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.FileConfiguration; @@ -73,7 +76,11 @@ public class BossHookManager implements IReloadable { private void setupWorldGuard() { if(!isWorldguardEnabled()) return; - this.worldGuardHelper = new WorldGuardHelper(); + if (new VersionHandler().getVersion().isHigherThanOrEqualTo(Versions.v1_13_R1)) { + this.worldGuardHelper = new WorldGuardHelper(); + } else { + this.worldGuardHelper = new WorldGuardLegacyHelper(); + } } private void setupFactions() { diff --git a/plugin-modules/Core/src/com/songoda/epicbosses/utils/ServerUtils.java b/plugin-modules/Core/src/com/songoda/epicbosses/utils/ServerUtils.java index 5cd7933..85e229d 100644 --- a/plugin-modules/Core/src/com/songoda/epicbosses/utils/ServerUtils.java +++ b/plugin-modules/Core/src/com/songoda/epicbosses/utils/ServerUtils.java @@ -9,6 +9,7 @@ import org.bukkit.event.Listener; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.scheduler.BukkitTask; +import java.util.ArrayList; import java.util.UUID; /** @@ -90,7 +91,7 @@ public class ServerUtils { public Entity getEntity(UUID uuid) { for (World world : Bukkit.getWorlds()) - for (Entity entity : world.getEntities()) + for (Entity entity : new ArrayList<>(world.getEntities())) if (entity.getUniqueId().equals(uuid)) return entity; return null; diff --git a/plugin-modules/Core/src/com/songoda/epicbosses/utils/Versions.java b/plugin-modules/Core/src/com/songoda/epicbosses/utils/Versions.java index 3760a2c..48af03c 100644 --- a/plugin-modules/Core/src/com/songoda/epicbosses/utils/Versions.java +++ b/plugin-modules/Core/src/com/songoda/epicbosses/utils/Versions.java @@ -18,7 +18,10 @@ public enum Versions { v1_9_R2(7, "1.9.4"), v1_10_R1(8, "1.10"), v1_11_R1(9, "1.11.2"), - v1_12_R1(10, "1.12.1"); + v1_12_R1(10, "1.12.1"), + v1_13_R1(11, "1.13"), + v1_13_R2(12, "1.13.2"), + v1_14_R1(13, "1.14"); @Getter private String displayVersion, bukkitVersion; private int weight; diff --git a/plugin-modules/FactionHelper/pom.xml b/plugin-modules/FactionHelper/pom.xml index 8a5020d..0273277 100644 --- a/plugin-modules/FactionHelper/pom.xml +++ b/plugin-modules/FactionHelper/pom.xml @@ -11,4 +11,13 @@ 4.0.0 FactionHelper + + + + org.spigotmc + spigot + 1.12.2 + provided + + \ No newline at end of file diff --git a/plugin-modules/WorldGuardHelper/pom.xml b/plugin-modules/WorldGuardHelper/pom.xml new file mode 100644 index 0000000..32411a0 --- /dev/null +++ b/plugin-modules/WorldGuardHelper/pom.xml @@ -0,0 +1,23 @@ + + + + EpicBosses + com.songoda.epicbosses + maven-version-number + ../../pom.xml + + 4.0.0 + + WorldGuardHelper + + + + org.spigotmc + spigot + 1.12.2 + provided + + + \ No newline at end of file diff --git a/plugin-modules/Core/src/com/songoda/epicbosses/utils/IWorldGuardHelper.java b/plugin-modules/WorldGuardHelper/src/com/songoda/epicbosses/utils/IWorldGuardHelper.java similarity index 100% rename from plugin-modules/Core/src/com/songoda/epicbosses/utils/IWorldGuardHelper.java rename to plugin-modules/WorldGuardHelper/src/com/songoda/epicbosses/utils/IWorldGuardHelper.java diff --git a/pom.xml b/pom.xml index 44097a5..0f5b34e 100644 --- a/pom.xml +++ b/pom.xml @@ -14,8 +14,11 @@ api-modules/FactionsOne api-modules/FactionsUUID api-modules/LegacyFactions + api-modules/WorldGuard + api-modules/WorldGuard-Legacy plugin-modules/Core plugin-modules/FactionHelper + plugin-modules/WorldGuardHelper @@ -26,30 +29,12 @@ - - org.spigotmc - spigot - 1.12.2 - provided - net.milkbowl vault 1.7.1 provided - - com.sk89q - worldedit - 6.1.9 - provided - - - com.sk89q - worldguard - 6.2.2 - provided - com.wasteofplastic askyblock @@ -153,6 +138,21 @@ LegacyFactions ${project.version} + + ${project.groupId} + WorldGuardHelper + ${project.version} + + + ${project.groupId} + WorldGuard + ${project.version} + + + ${project.groupId} + WorldGuard-Legacy + ${project.version} + ${project.groupId} Core