diff --git a/pom.xml b/pom.xml
index 6ddac51..9e2e192 100644
--- a/pom.xml
+++ b/pom.xml
@@ -89,6 +89,18 @@
6.1
provided
+
+ com.sk89q.worldedit
+ worldedit-bukkit
+ 7.0.0-SNAPSHOT
+ provided
+
+
+ com.sk89q.worldguard
+ worldguard-legacy
+ 7.0.0-SNAPSHOT
+ provided
+
com.griefcraft
entitylwc
diff --git a/src/com/dre/brewery/P.java b/src/com/dre/brewery/P.java
index ea3d8a0..9c3de8d 100644
--- a/src/com/dre/brewery/P.java
+++ b/src/com/dre/brewery/P.java
@@ -3,6 +3,7 @@ package com.dre.brewery;
import com.dre.brewery.filedata.*;
import com.dre.brewery.integration.LogBlockBarrel;
import com.dre.brewery.integration.WGBarrel;
+import com.dre.brewery.integration.WGBarrel7;
import com.dre.brewery.integration.WGBarrelNew;
import com.dre.brewery.integration.WGBarrelOld;
import com.dre.brewery.listeners.*;
@@ -31,6 +32,7 @@ import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.HandlerList;
import org.bukkit.inventory.ItemStack;
+import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin;
public class P extends JavaPlugin {
@@ -263,19 +265,17 @@ public class P extends JavaPlugin {
// Third-Party
useWG = config.getBoolean("useWorldGuard", true) && getServer().getPluginManager().isPluginEnabled("WorldGuard");
if (useWG) {
- try {
- try {
- Class.forName("com.sk89q.worldguard.bukkit.RegionContainer");
- wg = new WGBarrelNew();
- } catch (ClassNotFoundException e) {
- wg = new WGBarrelOld();
- }
- } catch (Throwable e) {
- wg = null;
+ Plugin plugin = Bukkit.getPluginManager().getPlugin("WorldEdit");
+ if (plugin != null) {
+ String wgv = plugin.getDescription().getVersion();
+ if (wgv.startsWith("7.")) wg = new WGBarrel7();
+ else if (wgv.startsWith("6.")) wg = new WGBarrelNew();
+ else if (wgv.startsWith("5.")) wg = new WGBarrelOld();
+ }
+ if (wg == null) {
P.p.errorLog("Failed loading WorldGuard Integration! Opening Barrels will NOT work!");
- P.p.errorLog("Brewery was tested with version 5.8 to 6.1 of WorldGuard!");
+ P.p.errorLog("Brewery was tested with version 5.8, 6.1 and 7.0 of WorldGuard!");
P.p.errorLog("Disable the WorldGuard support in the config and do /brew reload");
- e.printStackTrace();
}
}
useLWC = config.getBoolean("useLWC", true) && getServer().getPluginManager().isPluginEnabled("LWC");
diff --git a/src/com/dre/brewery/integration/WGBarrel7.java b/src/com/dre/brewery/integration/WGBarrel7.java
new file mode 100644
index 0000000..d46d886
--- /dev/null
+++ b/src/com/dre/brewery/integration/WGBarrel7.java
@@ -0,0 +1,38 @@
+package com.dre.brewery.integration;
+
+
+import org.bukkit.block.Block;
+import org.bukkit.entity.Player;
+import org.bukkit.plugin.Plugin;
+
+import com.dre.brewery.P;
+import com.sk89q.worldedit.util.Location;
+import com.sk89q.worldedit.world.World;
+import com.sk89q.worldguard.WorldGuard;
+import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
+import com.sk89q.worldguard.bukkit.permission.RegionPermissionModel;
+import com.sk89q.worldguard.internal.platform.WorldGuardPlatform;
+import com.sk89q.worldguard.protection.flags.Flags;
+import com.sk89q.worldguard.protection.regions.RegionQuery;
+
+public class WGBarrel7 implements WGBarrel {
+
+ public boolean checkAccess(Player player, Block spigot, Plugin plugin) {
+ WorldGuardPlugin wg = (WorldGuardPlugin) plugin;
+ WorldGuardPlatform platform = WorldGuard.getInstance().getPlatform();
+
+ World world = platform.getWorldByName(spigot.getWorld().getName());
+ if (!platform.getGlobalStateManager().get(world).useRegions) return true; // Region support disabled
+ if (new RegionPermissionModel(wg, player).mayIgnoreRegionProtection(spigot.getWorld())) return true; // Whitelisted cause
+
+ RegionQuery query = platform.getRegionContainer().createQuery();
+
+ if (!query.testBuild(new Location(world, spigot.getX(), spigot.getY(), spigot.getZ()), wg.wrapPlayer(player), Flags.USE, Flags.CHEST_ACCESS)) {
+ P.p.msg(player, P.p.languageReader.get("Error_NoBarrelAccess"));
+ return false;
+ }
+
+ return true;
+ }
+
+}