From 8d4a73256d9e98fd3181715fd09563c1a0347956 Mon Sep 17 00:00:00 2001 From: Daniel Saukel Date: Sat, 8 Sep 2018 02:28:52 +0200 Subject: [PATCH] Update WorldGuard support to WG7 --- pom.xml | 12 ++++++ src/com/dre/brewery/P.java | 22 +++++------ .../dre/brewery/integration/WGBarrel7.java | 38 +++++++++++++++++++ 3 files changed, 61 insertions(+), 11 deletions(-) create mode 100644 src/com/dre/brewery/integration/WGBarrel7.java 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; + } + +}