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