diff --git a/lib/worldguard-6.1.3-SNAPSHOT.jar b/lib/worldguard-6.1.3-SNAPSHOT.jar
deleted file mode 100644
index 88ad887..0000000
Binary files a/lib/worldguard-6.1.3-SNAPSHOT.jar and /dev/null differ
diff --git a/pom.xml b/pom.xml
index 7c6c57b..46ae774 100644
--- a/pom.xml
+++ b/pom.xml
@@ -113,6 +113,11 @@
16.6
provided
+
+ org.codemc.worldguardwrapper
+ worldguardwrapper
+ 1.0.0-SNAPSHOT
+
com.palmergames
Towny
@@ -127,13 +132,6 @@
system
${project.basedir}/lib/IslandWorld-7.0.jar
-
- com.sk89q
- worldguard
- 6.1.3-SNAPSHOT
- system
- ${project.basedir}/lib/worldguard-6.1.3-SNAPSHOT.jar
-
me.wiefferink
areashop
diff --git a/src/main/java/de/epiceric/shopchest/ShopChest.java b/src/main/java/de/epiceric/shopchest/ShopChest.java
index f2f2292..2b12458 100644
--- a/src/main/java/de/epiceric/shopchest/ShopChest.java
+++ b/src/main/java/de/epiceric/shopchest/ShopChest.java
@@ -1,7 +1,6 @@
package de.epiceric.shopchest;
import com.palmergames.bukkit.towny.Towny;
-import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
import com.wasteofplastic.askyblock.ASkyBlock;
import de.epiceric.shopchest.command.ShopCommand;
import de.epiceric.shopchest.config.Config;
@@ -44,6 +43,8 @@ import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.RegisteredServiceProvider;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitRunnable;
+import org.codemc.worldguardwrapper.WorldGuardWrapper;
+
import pl.islandworld.IslandWorld;
import us.talabrek.ultimateskyblock.api.uSkyBlockAPI;
@@ -73,7 +74,7 @@ public class ShopChest extends JavaPlugin {
private String downloadLink = "";
private ShopUtils shopUtils;
private FileWriter fw;
- private WorldGuardPlugin worldGuard;
+ private Plugin worldGuard;
private Towny towny;
private AuthMe authMe;
private uSkyBlockAPI uSkyBlock;
@@ -129,9 +130,8 @@ public class ShopChest extends JavaPlugin {
debug("Loading ShopChest version " + getDescription().getVersion());
- Plugin worldGuardPlugin = Bukkit.getServer().getPluginManager().getPlugin("WorldGuard");
- if (worldGuardPlugin instanceof WorldGuardPlugin) {
- worldGuard = (WorldGuardPlugin) worldGuardPlugin;
+ worldGuard = Bukkit.getServer().getPluginManager().getPlugin("WorldGuard");
+ if (worldGuard != null) {
WorldGuardShopFlag.register(this);
}
}
@@ -273,6 +273,10 @@ public class ShopChest extends JavaPlugin {
areaShop = (AreaShop) areaShopPlugin;
}
+ if (hasWorldGuard()) {
+ WorldGuardWrapper.getInstance().registerEvents(this);
+ }
+
if (hasPlotSquared()) {
new PlotSquaredShopFlag().register(this);
}
@@ -369,7 +373,7 @@ public class ShopChest extends JavaPlugin {
getServer().getPluginManager().registerEvents(new ShopItemListener(this), this);
getServer().getPluginManager().registerEvents(new ShopInteractListener(this), this);
getServer().getPluginManager().registerEvents(new NotifyPlayerOnJoinListener(this), this);
- getServer().getPluginManager().registerEvents(new ChestProtectListener(this, worldGuard), this);
+ getServer().getPluginManager().registerEvents(new ChestProtectListener(this), this);
if (!Utils.getServerVersion().equals("v1_8_R1")) {
getServer().getPluginManager().registerEvents(new BlockExplodeListener(this), this);
@@ -527,13 +531,6 @@ public class ShopChest extends JavaPlugin {
return worldGuard != null && worldGuard.isEnabled();
}
- /**
- * @return An instance of {@link WorldGuardPlugin} or {@code null} if WorldGuard is not enabled
- */
- public WorldGuardPlugin getWorldGuard() {
- return worldGuard;
- }
-
/**
* @return ShopChest's {@link ShopUtils} containing some important methods
*/
diff --git a/src/main/java/de/epiceric/shopchest/external/WorldGuardShopFlag.java b/src/main/java/de/epiceric/shopchest/external/WorldGuardShopFlag.java
index 9b61475..bbb3c59 100644
--- a/src/main/java/de/epiceric/shopchest/external/WorldGuardShopFlag.java
+++ b/src/main/java/de/epiceric/shopchest/external/WorldGuardShopFlag.java
@@ -1,29 +1,18 @@
package de.epiceric.shopchest.external;
-import com.google.common.collect.Lists;
-import com.sk89q.worldguard.protection.flags.Flag;
-import com.sk89q.worldguard.protection.flags.StateFlag;
+import org.codemc.worldguardwrapper.WorldGuardWrapper;
+
import de.epiceric.shopchest.ShopChest;
import de.epiceric.shopchest.config.Config;
public class WorldGuardShopFlag {
- private static Flag>[] customFlagList;
-
- public static final StateFlag CREATE_SHOP;
- public static final StateFlag USE_SHOP;
- public static final StateFlag USE_ADMIN_SHOP;
-
- static {
- CREATE_SHOP = new StateFlag("create-shop", Config.wgAllowCreateShopDefault);
- USE_SHOP = new StateFlag("use-shop", Config.wgAllowUseShopDefault);
- USE_ADMIN_SHOP = new StateFlag("use-admin-shop", Config.wgAllowUseAdminShopDefault);
-
- customFlagList = new Flag[] {CREATE_SHOP, USE_SHOP, USE_ADMIN_SHOP};
- }
-
public static void register(final ShopChest plugin) {
- plugin.getWorldGuard().getFlagRegistry().registerAll(Lists.newArrayList(customFlagList));
+ WorldGuardWrapper wrapper = WorldGuardWrapper.getInstance();
+
+ plugin.debug("Flag create-shop: " + wrapper.registerStateFlag("create-shop", Config.wgAllowCreateShopDefault));
+ plugin.debug("Flag use-shop: " + wrapper.registerStateFlag("use-shop", Config.wgAllowUseShopDefault));
+ plugin.debug("Flag use-admin-shop: " + wrapper.registerStateFlag("use-admin-shop", Config.wgAllowUseAdminShopDefault));
}
}
diff --git a/src/main/java/de/epiceric/shopchest/listeners/AreaShopListener.java b/src/main/java/de/epiceric/shopchest/listeners/AreaShopListener.java
index 66a02b5..ee35aca 100644
--- a/src/main/java/de/epiceric/shopchest/listeners/AreaShopListener.java
+++ b/src/main/java/de/epiceric/shopchest/listeners/AreaShopListener.java
@@ -1,7 +1,5 @@
package de.epiceric.shopchest.listeners;
-import com.sk89q.worldguard.protection.managers.RegionManager;
-import com.sk89q.worldguard.protection.regions.ProtectedRegion;
import de.epiceric.shopchest.ShopChest;
import de.epiceric.shopchest.config.Config;
import de.epiceric.shopchest.shop.Shop;
@@ -12,6 +10,8 @@ import me.wiefferink.areashop.events.notify.UnrentedRegionEvent;
import me.wiefferink.areashop.regions.GeneralRegion;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
+import org.codemc.worldguardwrapper.WorldGuardWrapper;
+import org.codemc.worldguardwrapper.implementation.AbstractRegion;
public class AreaShopListener implements Listener {
@@ -52,12 +52,10 @@ public class AreaShopListener implements Listener {
private void removeShopsInRegion(GeneralRegion generalRegion) {
if (!plugin.hasWorldGuard()) return;
- RegionManager regionManager = plugin.getWorldGuard().getRegionManager(generalRegion.getWorld());
-
for (Shop shop : plugin.getShopUtils().getShops()) {
if (!shop.getLocation().getWorld().getName().equals(generalRegion.getWorldName())) continue;
- for (ProtectedRegion r : regionManager.getApplicableRegions(shop.getLocation())) {
+ for (AbstractRegion r : WorldGuardWrapper.getInstance().getRegions(shop.getLocation())) {
if (generalRegion.getLowerCaseName().equals(r.getId())) {
plugin.getShopUtils().removeShop(shop, true);
break;
diff --git a/src/main/java/de/epiceric/shopchest/listeners/ChestProtectListener.java b/src/main/java/de/epiceric/shopchest/listeners/ChestProtectListener.java
index e4a57d7..d4a4f82 100644
--- a/src/main/java/de/epiceric/shopchest/listeners/ChestProtectListener.java
+++ b/src/main/java/de/epiceric/shopchest/listeners/ChestProtectListener.java
@@ -4,15 +4,11 @@ import com.palmergames.bukkit.towny.object.Resident;
import com.palmergames.bukkit.towny.object.Town;
import com.palmergames.bukkit.towny.object.TownBlock;
import com.palmergames.bukkit.towny.object.TownyUniverse;
-import com.sk89q.worldguard.bukkit.RegionContainer;
-import com.sk89q.worldguard.bukkit.RegionQuery;
-import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
import com.wasteofplastic.askyblock.ASkyBlockAPI;
import com.wasteofplastic.askyblock.Island;
import de.epiceric.shopchest.ShopChest;
import de.epiceric.shopchest.config.Config;
import de.epiceric.shopchest.external.PlotSquaredShopFlag;
-import de.epiceric.shopchest.external.WorldGuardShopFlag;
import de.epiceric.shopchest.language.LanguageUtils;
import de.epiceric.shopchest.language.Message;
import de.epiceric.shopchest.nms.Hologram;
@@ -41,6 +37,7 @@ import org.bukkit.event.entity.EntityExplodeEvent;
import org.bukkit.event.inventory.InventoryMoveItemEvent;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.inventory.InventoryHolder;
+import org.codemc.worldguardwrapper.WorldGuardWrapper;
import pl.islandworld.api.IslandWorldApi;
import us.talabrek.ultimateskyblock.api.IslandInfo;
@@ -51,12 +48,10 @@ public class ChestProtectListener implements Listener {
private ShopChest plugin;
private ShopUtils shopUtils;
- private WorldGuardPlugin worldGuard;
- public ChestProtectListener(ShopChest plugin, WorldGuardPlugin worldGuard) {
+ public ChestProtectListener(ShopChest plugin) {
this.plugin = plugin;
this.shopUtils = plugin.getShopUtils();
- this.worldGuard = worldGuard;
}
private void remove(final Shop shop, final Block b, final Player p) {
@@ -191,9 +186,7 @@ public class ChestProtectListener implements Listener {
boolean externalPluginsAllowed = true;
if (plugin.hasWorldGuard() && Config.enableWorldGuardIntegration) {
- RegionContainer container = worldGuard.getRegionContainer();
- RegionQuery query = container.createQuery();
- externalPluginsAllowed = query.testState(b.getLocation(), p, WorldGuardShopFlag.CREATE_SHOP);
+ externalPluginsAllowed = WorldGuardWrapper.getInstance().queryStateFlag(p, b.getLocation(), "create-shop").orElse(false);
}
if (externalPluginsAllowed && plugin.hasTowny() && Config.enableTownyIntegration) {
diff --git a/src/main/java/de/epiceric/shopchest/listeners/ShopInteractListener.java b/src/main/java/de/epiceric/shopchest/listeners/ShopInteractListener.java
index 8bc653c..c577b9d 100644
--- a/src/main/java/de/epiceric/shopchest/listeners/ShopInteractListener.java
+++ b/src/main/java/de/epiceric/shopchest/listeners/ShopInteractListener.java
@@ -7,10 +7,6 @@ import com.palmergames.bukkit.towny.object.Resident;
import com.palmergames.bukkit.towny.object.Town;
import com.palmergames.bukkit.towny.object.TownBlock;
import com.palmergames.bukkit.towny.object.TownyUniverse;
-import com.sk89q.worldguard.bukkit.RegionContainer;
-import com.sk89q.worldguard.bukkit.RegionQuery;
-import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
-import com.sk89q.worldguard.protection.flags.StateFlag;
import com.wasteofplastic.askyblock.ASkyBlockAPI;
import com.wasteofplastic.askyblock.Island;
import de.epiceric.shopchest.ShopChest;
@@ -22,7 +18,6 @@ import de.epiceric.shopchest.event.ShopInfoEvent;
import de.epiceric.shopchest.event.ShopOpenEvent;
import de.epiceric.shopchest.event.ShopRemoveEvent;
import de.epiceric.shopchest.external.PlotSquaredShopFlag;
-import de.epiceric.shopchest.external.WorldGuardShopFlag;
import de.epiceric.shopchest.language.LanguageUtils;
import de.epiceric.shopchest.language.Message;
import de.epiceric.shopchest.language.Replacement;
@@ -66,6 +61,8 @@ import org.bukkit.inventory.InventoryHolder;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.PlayerInventory;
import org.bukkit.scheduler.BukkitRunnable;
+import org.codemc.worldguardwrapper.WorldGuardWrapper;
+
import pl.islandworld.api.IslandWorldApi;
import us.talabrek.ultimateskyblock.api.IslandInfo;
@@ -86,14 +83,12 @@ public class ShopInteractListener implements Listener {
private Economy econ;
private Database database;
private ShopUtils shopUtils;
- private WorldGuardPlugin worldGuard;
public ShopInteractListener(ShopChest plugin) {
this.plugin = plugin;
this.econ = plugin.getEconomy();
this.database = plugin.getShopDatabase();
this.shopUtils = plugin.getShopUtils();
- this.worldGuard = plugin.getWorldGuard();
}
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
@@ -163,12 +158,10 @@ public class ShopInteractListener implements Listener {
if (plugin.hasWorldGuard() && Config.enableWorldGuardIntegration) {
plugin.debug("Checking if WorldGuard allows shop creation...");
- RegionContainer container = worldGuard.getRegionContainer();
- RegionQuery query = container.createQuery();
for (Location loc : chestLocations) {
if (loc != null) {
- externalPluginsAllowed &= query.testState(loc, p, WorldGuardShopFlag.CREATE_SHOP);
+ externalPluginsAllowed &= WorldGuardWrapper.getInstance().queryStateFlag(p, loc, "create-shop").orElse(false);
}
}
@@ -463,10 +456,8 @@ public class ShopInteractListener implements Listener {
}
if (externalPluginsAllowed && plugin.hasWorldGuard() && Config.enableWorldGuardIntegration) {
- StateFlag flag = (shop.getShopType() == ShopType.ADMIN ? WorldGuardShopFlag.USE_ADMIN_SHOP : WorldGuardShopFlag.USE_SHOP);
- RegionContainer container = worldGuard.getRegionContainer();
- RegionQuery query = container.createQuery();
- externalPluginsAllowed = query.testState(b.getLocation(), p, flag);
+ String flagName = (shop.getShopType() == ShopType.ADMIN ? "use-admin-shop" : "use-shop");
+ externalPluginsAllowed = WorldGuardWrapper.getInstance().queryStateFlag(p, b.getLocation(), flagName).orElse(false);
}
if (shop.getShopType() == ShopType.ADMIN) {
@@ -574,11 +565,8 @@ public class ShopInteractListener implements Listener {
}
if (externalPluginsAllowed && plugin.hasWorldGuard() && Config.enableWorldGuardIntegration) {
- RegionContainer container = worldGuard.getRegionContainer();
- RegionQuery query = container.createQuery();
-
- StateFlag flag = (shop.getShopType() == ShopType.ADMIN ? WorldGuardShopFlag.USE_ADMIN_SHOP : WorldGuardShopFlag.USE_SHOP);
- externalPluginsAllowed = query.testState(b.getLocation(), p, flag);
+ String flagName = (shop.getShopType() == ShopType.ADMIN ? "use-admin-shop" : "use-shop");
+ externalPluginsAllowed = WorldGuardWrapper.getInstance().queryStateFlag(p, b.getLocation(), flagName).orElse(false);
}
if (externalPluginsAllowed || p.hasPermission(Permissions.BYPASS_EXTERNAL_PLUGIN)) {
diff --git a/src/main/java/de/epiceric/shopchest/listeners/WorldGuardListener.java b/src/main/java/de/epiceric/shopchest/listeners/WorldGuardListener.java
index 804fcc3..e5bbd62 100644
--- a/src/main/java/de/epiceric/shopchest/listeners/WorldGuardListener.java
+++ b/src/main/java/de/epiceric/shopchest/listeners/WorldGuardListener.java
@@ -1,20 +1,10 @@
package de.epiceric.shopchest.listeners;
-import com.sk89q.worldguard.LocalPlayer;
-import com.sk89q.worldguard.bukkit.RegionContainer;
-import com.sk89q.worldguard.bukkit.RegionQuery;
-import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
-import com.sk89q.worldguard.bukkit.event.block.UseBlockEvent;
-import com.sk89q.worldguard.bukkit.event.entity.DamageEntityEvent;
-import com.sk89q.worldguard.bukkit.event.entity.UseEntityEvent;
-import com.sk89q.worldguard.protection.flags.StateFlag;
import de.epiceric.shopchest.ShopChest;
import de.epiceric.shopchest.config.Config;
import de.epiceric.shopchest.nms.Hologram;
import de.epiceric.shopchest.shop.Shop;
import de.epiceric.shopchest.utils.ClickType;
-import de.epiceric.shopchest.utils.Permissions;
-import de.epiceric.shopchest.external.WorldGuardShopFlag;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Chest;
@@ -25,27 +15,27 @@ import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
+import org.bukkit.event.Event.Result;
import org.bukkit.event.block.Action;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.inventory.InventoryOpenEvent;
import org.bukkit.event.player.PlayerInteractAtEntityEvent;
import org.bukkit.event.player.PlayerInteractEvent;
+import org.codemc.worldguardwrapper.WorldGuardWrapper;
+import org.codemc.worldguardwrapper.event.DamageEntityEvent;
+import org.codemc.worldguardwrapper.event.UseBlockEvent;
+import org.codemc.worldguardwrapper.event.UseEntityEvent;
public class WorldGuardListener implements Listener {
private ShopChest plugin;
- private WorldGuardPlugin worldGuard;
public WorldGuardListener(ShopChest plugin) {
this.plugin = plugin;
- this.worldGuard = plugin.getWorldGuard();
}
private boolean isAllowed(Player player, Location location, Action action) {
- LocalPlayer localPlayer = worldGuard.wrapPlayer(player);
- RegionContainer container = worldGuard.getRegionContainer();
- RegionQuery query = container.createQuery();
Shop shop = plugin.getShopUtils().getShop(location);
if (action == Action.RIGHT_CLICK_BLOCK && shop != null) {
@@ -57,7 +47,7 @@ public class WorldGuardListener implements Listener {
if (ClickType.getPlayerClickType(player) != null) {
switch (ClickType.getPlayerClickType(player).getClickType()) {
case CREATE:
- return query.testState(location, localPlayer, WorldGuardShopFlag.CREATE_SHOP);
+ return WorldGuardWrapper.getInstance().queryStateFlag(player, location, "create-shop").orElse(false);
case REMOVE:
case INFO:
case OPEN:
@@ -65,9 +55,8 @@ public class WorldGuardListener implements Listener {
}
} else {
if (shop != null) {
- StateFlag flag = (shop.getShopType() == Shop.ShopType.NORMAL ? WorldGuardShopFlag.USE_SHOP : WorldGuardShopFlag.USE_ADMIN_SHOP);
-
- return query.testState(location, localPlayer, flag);
+ String flagName = (shop.getShopType() == Shop.ShopType.NORMAL ? "use-shop" : "use-admin-shop");
+ return WorldGuardWrapper.getInstance().queryStateFlag(player, location, flagName).orElse(false);
}
}
@@ -77,8 +66,7 @@ public class WorldGuardListener implements Listener {
@EventHandler(priority = EventPriority.LOW)
public void onUseEntity(UseEntityEvent event) {
if (Config.enableWorldGuardIntegration) {
- Player player = event.getCause().getFirstPlayer();
- if (player == null) return;
+ Player player = event.getPlayer();
if (event.getOriginalEvent() instanceof PlayerInteractAtEntityEvent) {
PlayerInteractAtEntityEvent orig = (PlayerInteractAtEntityEvent) event.getOriginalEvent();
@@ -91,7 +79,7 @@ public class WorldGuardListener implements Listener {
for (Shop shop : plugin.getShopUtils().getShops()) {
if (shop.getHologram() != null && shop.getHologram().contains((ArmorStand) e)) {
if (isAllowed(player, shop.getLocation(), Action.RIGHT_CLICK_BLOCK)) {
- event.setAllowed(true);
+ event.setResult(Result.ALLOW);
orig.setCancelled(false);
}
@@ -106,8 +94,7 @@ public class WorldGuardListener implements Listener {
@EventHandler(priority = EventPriority.LOW)
public void onDamageEntity(DamageEntityEvent event) {
if (Config.enableWorldGuardIntegration) {
- Player player = event.getCause().getFirstPlayer();
- if (player == null) return;
+ Player player = event.getPlayer();
if (event.getOriginalEvent() instanceof EntityDamageByEntityEvent) {
EntityDamageByEntityEvent orig = (EntityDamageByEntityEvent) event.getOriginalEvent();
@@ -120,7 +107,7 @@ public class WorldGuardListener implements Listener {
for (Shop shop : plugin.getShopUtils().getShops()) {
if (shop.getHologram() != null && shop.getHologram().contains((ArmorStand) e)) {
if (isAllowed(player, shop.getLocation(), Action.LEFT_CLICK_BLOCK)) {
- event.setAllowed(true);
+ event.setResult(Result.ALLOW);
orig.setCancelled(false);
}
@@ -135,8 +122,7 @@ public class WorldGuardListener implements Listener {
@EventHandler(priority = EventPriority.LOW)
public void onUseBlock(UseBlockEvent event) {
if (Config.enableWorldGuardIntegration) {
- Player player = event.getCause().getFirstPlayer();
- if (player == null) return;
+ Player player = event.getPlayer();
if (event.getOriginalEvent() instanceof PlayerInteractEvent) {
PlayerInteractEvent orig = (PlayerInteractEvent) event.getOriginalEvent();
@@ -145,7 +131,7 @@ public class WorldGuardListener implements Listener {
Material type = orig.getClickedBlock().getType();
if (type == Material.CHEST || type == Material.TRAPPED_CHEST) {
if (isAllowed(player, orig.getClickedBlock().getLocation(), orig.getAction())) {
- event.setAllowed(true);
+ event.setResult(Result.ALLOW);
ClickType ct = ClickType.getPlayerClickType(player);
if (!(ct != null && ct.getClickType() == ClickType.EnumClickType.CREATE)) {
@@ -161,7 +147,7 @@ public class WorldGuardListener implements Listener {
if (orig.getInventory().getHolder() instanceof Chest) {
if (isAllowed(player, ((Chest)orig.getInventory().getHolder()).getLocation(), Action.RIGHT_CLICK_BLOCK)) {
- event.setAllowed(true);
+ event.setResult(Result.ALLOW);
ClickType ct = ClickType.getPlayerClickType(player);
if (!(ct != null && ct.getClickType() == ClickType.EnumClickType.CREATE)) {