diff --git a/AreaShop/pom.xml b/AreaShop/pom.xml index d74792b..3de575a 100644 --- a/AreaShop/pom.xml +++ b/AreaShop/pom.xml @@ -1,292 +1,306 @@ - - 4.0.0 - areashop - jar - AreaShop - 2.5.0 - - - me.wiefferink - areashop-parent - parent - - - - - - org.bukkit - craftbukkit - system - any - ${project.basedir}/../dependencies/craftbukkit-1.7.9-R0.2-SNAPSHOT.jar - jar - true - - - - - me.wiefferink - interactivemessenger - 1.1-SNAPSHOT - - - - - me.wiefferink - bukkitdo - 1.0.0-SNAPSHOT - - - - - me.wiefferink - areashop-interface - AreaShopInterface - jar - compile - - - - - me.wiefferink - areashop-worldguard-5 - WorldGuard-5 - jar - compile - - - me.wiefferink - areashop-worldguard-6 - WorldGuard-6 - jar - compile - - - me.wiefferink - areashop-worldguard-6_1_3 - WorldGuard-6_1_3 - jar - compile - - - me.wiefferink - areashop-worldguard-7 - WorldGuard-7 - jar - compile - - - - - me.wiefferink - areashop-worldedit-5 - WorldEdit-5 - jar - compile - - - me.wiefferink - areashop-worldedit-6 - WorldEdit-6 - jar - compile - - - me.wiefferink - areashop-worldedit-7 - WorldEdit-7 - jar - compile - - - - - com.sk89q - worldedit - system - any - ${project.basedir}/../dependencies/worldedit-bukkit-7.0.0-beta-01.jar - - - com.sk89q - worldguard - system - any - ${project.basedir}/../dependencies/worldguard-legacy-7.0.0-beta01.jar - - - - - net.milkbowl.vault - VaultAPI - system - any - ${project.basedir}/../dependencies/VaultAPI-1.4.jar - - - - - org.bstats - bstats-bukkit - 1.1 - - - - - - - test-locally - - - copyResult - - - - - - maven-antrun-plugin - 1.8 - - - - - - - - package - - run - - - - - - - - - - - package-sources - - - sources - - - - - - org.apache.maven.plugins - maven-source-plugin - 3.0.0 - - - package - attach-sources - - jar - - - - - - - - - - - generate-javadoc - - - javadoc - - - - - - org.apache.maven.plugins - maven-javadoc-plugin - 2.10.4 - - - package - attach-javadocs - - jar - - - - - me.wiefferink.areashop.lib - ${javadoc} - - https://hub.spigotmc.org/javadocs/bukkit/ - http://docs.sk89q.com/worldedit/apidocs/ - http://docs.sk89q.com/worldguard/apidocs/ - - - - - - - - - - target - AreaShop - - - . - true - src/main/resources - - plugin.yml - config.yml - hiddenConfig.yml - default.yml - README.md - lang/*.yml - - - - - - org.apache.maven.plugins - maven-shade-plugin - 2.4.3 - - - package - - shade - - - - - - me.wiefferink.interactivemessenger - me.wiefferink.areashop.shaded.interactivemessenger - - - - me.wiefferink.bukkitdo - me.wiefferink.areashop.shaded.bukkitdo - - - - org.bstats - me.wiefferink.areashop.shaded.bstats - - - - - - - - maven-compiler-plugin - 3.5.1 - - - - + + 4.0.0 + areashop + jar + AreaShop + 2.5.0 + + + me.wiefferink + areashop-parent + parent + + + + + + org.bukkit + craftbukkit + system + any + ${project.basedir}/../dependencies/craftbukkit-1.7.9-R0.2-SNAPSHOT.jar + jar + true + + + + + me.wiefferink + interactivemessenger + 1.1-SNAPSHOT + + + + + me.wiefferink + bukkitdo + 1.0.0-SNAPSHOT + + + + + me.wiefferink + areashop-interface + latest + jar + compile + + + + + me.wiefferink + areashop-worldguard-5 + latest + jar + compile + + + me.wiefferink + areashop-worldguard-6 + latest + jar + compile + + + me.wiefferink + areashop-worldguard-6_1_3 + latest + jar + compile + + + me.wiefferink + areashop-worldguard-7_beta_1 + latest + jar + compile + + + me.wiefferink + areashop-worldguard-7_beta_2 + latest + jar + compile + + + + + com.sk89q + worldedit + system + any + ${project.basedir}/../dependencies/worldedit-bukkit-7.0.0-beta-04.jar + + + com.sk89q + worldguard + system + any + ${project.basedir}/../dependencies/worldguard-legacy-7.0.0-beta-02.jar + + + + + me.wiefferink + areashop-worldedit-5 + latest + jar + compile + + + me.wiefferink + areashop-worldedit-6 + latest + jar + compile + + + me.wiefferink + areashop-worldedit-7_beta_1 + latest + jar + compile + + + me.wiefferink + areashop-worldedit-7_beta_4 + latest + jar + compile + + + + + net.milkbowl.vault + VaultAPI + system + any + ${project.basedir}/../dependencies/VaultAPI-1.4.jar + + + + + org.bstats + bstats-bukkit + 1.1 + + + + + + + test-locally + + + copyResult + + + + + + maven-antrun-plugin + 1.8 + + + + + + + + package + + run + + + + + + + + + + + package-sources + + + sources + + + + + + org.apache.maven.plugins + maven-source-plugin + 3.0.0 + + + package + attach-sources + + jar + + + + + + + + + + + generate-javadoc + + + javadoc + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 2.10.4 + + + package + attach-javadocs + + jar + + + + + me.wiefferink.areashop.lib + ${javadoc} + + https://hub.spigotmc.org/javadocs/bukkit/ + http://docs.sk89q.com/worldedit/apidocs/ + http://docs.sk89q.com/worldguard/apidocs/ + + + + + + + + + + target + AreaShop + + + . + true + src/main/resources + + plugin.yml + config.yml + hiddenConfig.yml + default.yml + README.md + lang/*.yml + + + + + + org.apache.maven.plugins + maven-shade-plugin + 2.4.3 + + + package + + shade + + + + + + me.wiefferink.interactivemessenger + me.wiefferink.areashop.shaded.interactivemessenger + + + + me.wiefferink.bukkitdo + me.wiefferink.areashop.shaded.bukkitdo + + + + org.bstats + me.wiefferink.areashop.shaded.bstats + + + + + + + + maven-compiler-plugin + 3.5.1 + + + + diff --git a/AreaShop/src/main/java/me/wiefferink/areashop/AreaShop.java b/AreaShop/src/main/java/me/wiefferink/areashop/AreaShop.java index 87d95c5..e72b024 100644 --- a/AreaShop/src/main/java/me/wiefferink/areashop/AreaShop.java +++ b/AreaShop/src/main/java/me/wiefferink/areashop/AreaShop.java @@ -147,14 +147,57 @@ public final class AreaShop extends JavaPlugin implements AreaShopInterface { managers = new HashSet<>(); boolean error = false; + // Check if WorldEdit is present + String weVersion = null; + String rawWeVersion = null; + String weBeta = null; + Plugin plugin = getServer().getPluginManager().getPlugin("WorldEdit"); + if(!(plugin instanceof WorldEditPlugin) || !plugin.isEnabled()) { + error("WorldEdit plugin is not present or has not loaded correctly"); + error = true; + } else { + worldEdit = (WorldEditPlugin)plugin; + rawWeVersion = worldEdit.getDescription().getVersion(); + + // Find beta version + Pattern pattern = Pattern.compile("beta-?\\d+"); + Matcher matcher = pattern.matcher(rawWeVersion); + if (matcher.find()) { + weBeta = matcher.group(); + } + + // Get correct WorldEditInterface (handles things that changed version to version) + if(worldEdit.getDescription().getVersion().startsWith("5.")) { + weVersion = "5"; + } else if(worldEdit.getDescription().getVersion().startsWith("6.")) { + weVersion = "6"; + } else if ("beta-01".equalsIgnoreCase(weBeta)) { + weVersion = "7_beta_1"; + } else { + // beta-02 and beta-03 also have the new vector system already + weVersion = "7_beta_4"; + } + try { + final Class clazz = Class.forName("me.wiefferink.areashop.handlers.WorldEditHandler" + weVersion); + // Check if we have a NMSHandler class at that location. + if(WorldEditInterface.class.isAssignableFrom(clazz)) { // Make sure it actually implements WorldEditInterface + worldEditInterface = (WorldEditInterface)clazz.getConstructor(AreaShopInterface.class).newInstance(this); // Set our handler + } + } catch(final Exception e) { + error("Could not load the handler for WorldEdit (tried to load " + weVersion + "), report this problem to the author: " + ExceptionUtils.getStackTrace(e)); + error = true; + weVersion = null; + } + } + // Check if WorldGuard is present String wgVersion = null; - String rawVersion = null; + String rawWgVersion = null; int major = 0; int minor = 0; int fixes = 0; Integer build = null; - Plugin plugin = getServer().getPluginManager().getPlugin("WorldGuard"); + plugin = getServer().getPluginManager().getPlugin("WorldGuard"); if(!(plugin instanceof WorldGuardPlugin) || !plugin.isEnabled()) { error("WorldGuard plugin is not present or has not loaded correctly"); error = true; @@ -162,20 +205,20 @@ public final class AreaShop extends JavaPlugin implements AreaShopInterface { worldGuard = (WorldGuardPlugin)plugin; // Get correct WorldGuardInterface (handles things that changed version to version) try { - rawVersion = worldGuard.getDescription().getVersion(); - if(rawVersion.contains("-SNAPSHOT;")) { - String buildNumber = rawVersion.substring(rawVersion.indexOf("-SNAPSHOT;") + 10); + rawWgVersion = worldGuard.getDescription().getVersion(); + if(rawWgVersion.contains("-SNAPSHOT;")) { + String buildNumber = rawWgVersion.substring(rawWgVersion.indexOf("-SNAPSHOT;") + 10); if(buildNumber.contains("-")) { buildNumber = buildNumber.substring(0, buildNumber.indexOf("-")); try { build = Integer.parseInt(buildNumber); } catch(NumberFormatException e) { - warn("Could not correctly parse the build of WorldGuard, raw version: " + rawVersion + ", buildNumber: " + buildNumber); + warn("Could not correctly parse the build of WorldGuard, raw version: " + rawWgVersion + ", buildNumber: " + buildNumber); } } } // Clear stuff from the version string that is not a number - String[] versionParts = rawVersion.split("\\."); + String[] versionParts = rawWgVersion.split("\\."); for(int i = 0; i < versionParts.length; i++) { Pattern pattern = Pattern.compile("^\\d+"); Matcher matcher = pattern.matcher(versionParts[i]); @@ -195,10 +238,11 @@ public final class AreaShop extends JavaPlugin implements AreaShopInterface { fixes = Integer.parseInt(versionParts[2]); } } catch(NumberFormatException e) { - warn("Something went wrong while parsing WorldGuard version number: " + rawVersion); + warn("Something went wrong while parsing WorldGuard version number: " + rawWgVersion); } + // Determine correct implementation to use - if(worldGuard.getDescription().getVersion().startsWith("5.")) { + if(rawWgVersion.startsWith("5.")) { wgVersion = "5"; } else if(major == 6 && minor == 1 && fixes < 3) { wgVersion = "6"; @@ -211,11 +255,16 @@ public final class AreaShop extends JavaPlugin implements AreaShopInterface { } else { wgVersion = "6_1_3"; } + } else if ("beta-01".equalsIgnoreCase(weBeta)) { + // When using WorldEdit beta-01, we need to use the WorldGuard variant with the old vector system + wgVersion = "7_beta_1"; } else { - wgVersion = "7"; + // Even though the WorldGuard file is called beta-02, the reported version is still beta-01! + wgVersion = "7_beta_2"; } } catch(Exception e) { // If version detection fails, at least try to load the latest version - wgVersion = "7"; + warn("Parsing the WorldGuard version failed, assuming version 7_beta_2:", rawWgVersion); + wgVersion = "7_beta_2"; } // Load chosen implementation try { @@ -231,35 +280,6 @@ public final class AreaShop extends JavaPlugin implements AreaShopInterface { } } - // Check if WorldEdit is present - String weVersion = null; - plugin = getServer().getPluginManager().getPlugin("WorldEdit"); - if(!(plugin instanceof WorldEditPlugin) || !plugin.isEnabled()) { - error("WorldEdit plugin is not present or has not loaded correctly"); - error = true; - } else { - worldEdit = (WorldEditPlugin)plugin; - // Get correct WorldEditInterface (handles things that changed version to version) - if(worldEdit.getDescription().getVersion().startsWith("5.")) { - weVersion = "5"; - } else if(worldEdit.getDescription().getVersion().startsWith("6.")) { - weVersion = "6"; - } else { - weVersion = "7"; - } - try { - final Class clazz = Class.forName("me.wiefferink.areashop.handlers.WorldEditHandler" + weVersion); - // Check if we have a NMSHandler class at that location. - if(WorldEditInterface.class.isAssignableFrom(clazz)) { // Make sure it actually implements WorldEditInterface - worldEditInterface = (WorldEditInterface)clazz.getConstructor(AreaShopInterface.class).newInstance(this); // Set our handler - } - } catch(final Exception e) { - error("Could not load the handler for WorldEdit (tried to load " + weVersion + "), report this problem to the author: " + ExceptionUtils.getStackTrace(e)); - error = true; - weVersion = null; - } - } - // Check if Vault is present if(getServer().getPluginManager().getPlugin("Vault") == null) { error("Vault plugin is not present or has not loaded correctly"); @@ -273,10 +293,10 @@ public final class AreaShop extends JavaPlugin implements AreaShopInterface { // Print loaded version of WG and WE in debug if(wgVersion != null) { - AreaShop.debug("Loaded WorldGuardHandler" + wgVersion + " (raw version: " + rawVersion + ", major:" + major + ", minor:" + minor + ", fixes:" + fixes + ", build:" + build + ")"); + AreaShop.debug("Loaded WorldGuardHandler", wgVersion, "(raw version:" + rawWgVersion + ", major:" + major + ", minor:" + minor + ", fixes:" + fixes + ", build:" + build + ")"); } if(weVersion != null) { - AreaShop.debug("Loaded WorldEditHandler" + weVersion); + AreaShop.debug("Loaded WorldEditHandler", weVersion, "(raw version:" + rawWeVersion + ", beta:" + weBeta + ")"); } setupLanguageManager(); diff --git a/AreaShop/src/main/java/me/wiefferink/areashop/commands/StackCommand.java b/AreaShop/src/main/java/me/wiefferink/areashop/commands/StackCommand.java index 6ecae49..a26f61f 100644 --- a/AreaShop/src/main/java/me/wiefferink/areashop/commands/StackCommand.java +++ b/AreaShop/src/main/java/me/wiefferink/areashop/commands/StackCommand.java @@ -1,7 +1,5 @@ package me.wiefferink.areashop.commands; -import com.sk89q.worldedit.BlockVector; -import com.sk89q.worldedit.Vector; import com.sk89q.worldguard.protection.managers.RegionManager; import com.sk89q.worldguard.protection.regions.ProtectedCuboidRegion; import me.wiefferink.areashop.AreaShop; @@ -17,6 +15,7 @@ import org.bukkit.block.BlockFace; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; +import org.bukkit.util.Vector; import java.util.ArrayList; import java.util.List; @@ -104,7 +103,7 @@ public class StackCommand extends CommandAreaShop { plugin.message(player, "stack-unclearDirection", facing.toString().toLowerCase().replace('_', '-')); return; } - Vector shift = new BlockVector(0, 0, 0); + Vector shift = new Vector(0, 0, 0); if(facing == BlockFace.SOUTH) { shift = shift.setZ(-selection.getLength() - gap); } else if(facing == BlockFace.WEST) { @@ -183,8 +182,8 @@ public class StackCommand extends CommandAreaShop { } } // Add the region to WorldGuard (at startposition shifted by the number of this region times the blocks it should shift) - BlockVector minimum = new BlockVector(minimumVector.add(finalShift.multiply(current))); - BlockVector maximum = new BlockVector(maximumVector.add(finalShift.multiply(current))); + Vector minimum = minimumVector.clone().add(finalShift.clone().multiply(current)); + Vector maximum = maximumVector.clone().add(finalShift.clone().multiply(current)); // Check for out of bounds if(minimum.getBlockY() < 0) { tooLow++; @@ -193,7 +192,7 @@ public class StackCommand extends CommandAreaShop { tooHigh++; continue; } - ProtectedCuboidRegion region = new ProtectedCuboidRegion(regionName, minimum, maximum); + ProtectedCuboidRegion region = plugin.getWorldGuardHandler().createCuboidRegion(regionName, minimum,maximum); manager.addRegion(region); // Add the region to AreaShop if(rentRegions) { diff --git a/AreaShop/src/main/java/me/wiefferink/areashop/features/TeleportFeature.java b/AreaShop/src/main/java/me/wiefferink/areashop/features/TeleportFeature.java index a4633e5..ab73e35 100644 --- a/AreaShop/src/main/java/me/wiefferink/areashop/features/TeleportFeature.java +++ b/AreaShop/src/main/java/me/wiefferink/areashop/features/TeleportFeature.java @@ -528,12 +528,14 @@ public class TeleportFeature extends RegionFeature { // Calculate a default location if(startLocation == null) { // Set to block in the middle, y configured in the config - com.sk89q.worldedit.Vector middle = com.sk89q.worldedit.Vector.getMidpoint(worldguardRegion.getMaximumPoint(), worldguardRegion.getMinimumPoint()); + Vector regionMin = AreaShop.getInstance().getWorldGuardHandler().getMinimumPoint(worldguardRegion); + Vector regionMax = AreaShop.getInstance().getWorldGuardHandler().getMaximumPoint(worldguardRegion); + Vector middle = regionMin.clone().midpoint(regionMax); String configSetting = getRegion().getStringSetting("general.teleportLocationY"); if("bottom".equalsIgnoreCase(configSetting)) { - middle = middle.setY(worldguardRegion.getMinimumPoint().getBlockY()); + middle = middle.setY(regionMin.getBlockY()); } else if("top".equalsIgnoreCase(configSetting)) { - middle = middle.setY(worldguardRegion.getMaximumPoint().getBlockY()); + middle = middle.setY(regionMax.getBlockY()); } else if("middle".equalsIgnoreCase(configSetting)) { middle = middle.setY(middle.getBlockY()); } else { diff --git a/AreaShop/src/main/java/me/wiefferink/areashop/regions/GeneralRegion.java b/AreaShop/src/main/java/me/wiefferink/areashop/regions/GeneralRegion.java index 46de96b..562f1b2 100644 --- a/AreaShop/src/main/java/me/wiefferink/areashop/regions/GeneralRegion.java +++ b/AreaShop/src/main/java/me/wiefferink/areashop/regions/GeneralRegion.java @@ -1,7 +1,5 @@ package me.wiefferink.areashop.regions; -import com.sk89q.worldedit.BlockVector; -import com.sk89q.worldedit.BlockVector2D; import com.sk89q.worldguard.protection.regions.ProtectedPolygonalRegion; import com.sk89q.worldguard.protection.regions.ProtectedRegion; import me.wiefferink.areashop.AreaShop; @@ -27,6 +25,7 @@ import org.bukkit.command.CommandSender; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.entity.Player; +import org.bukkit.util.Vector; import java.io.File; import java.io.IOException; @@ -514,6 +513,22 @@ public abstract class GeneralRegion implements GeneralRegionInterface, Comparabl return plugin.getRegionManager(getWorld()).getRegion(getName()); } + /** + * Get the minimum corner of the region. + * @return Vector + */ + public Vector getMinimumPoint() { + return plugin.getWorldGuardHandler().getMinimumPoint(getRegion()); + } + + /** + * Get the maximum corner of the region. + * @return Vector + */ + public Vector getMaximumPoint() { + return plugin.getWorldGuardHandler().getMaximumPoint(getRegion()); + } + /** * Get the width of the region (x-axis). * @return The width of the region (x-axis) @@ -522,7 +537,7 @@ public abstract class GeneralRegion implements GeneralRegionInterface, Comparabl if(getRegion() == null) { return 0; } - return getRegion().getMaximumPoint().getBlockX() - getRegion().getMinimumPoint().getBlockX() + 1; + return getMaximumPoint().getBlockX() - getMinimumPoint().getBlockX() + 1; } /** @@ -533,7 +548,7 @@ public abstract class GeneralRegion implements GeneralRegionInterface, Comparabl if(getRegion() == null) { return 0; } - return getRegion().getMaximumPoint().getBlockZ() - getRegion().getMinimumPoint().getBlockZ() + 1; + return getMaximumPoint().getBlockZ() - getMinimumPoint().getBlockZ() + 1; } /** @@ -544,7 +559,7 @@ public abstract class GeneralRegion implements GeneralRegionInterface, Comparabl if(getRegion() == null) { return 0; } - return getRegion().getMaximumPoint().getBlockY() - getRegion().getMinimumPoint().getBlockY() + 1; + return getMaximumPoint().getBlockY() - getMinimumPoint().getBlockY() + 1; } /** @@ -1495,8 +1510,8 @@ public abstract class GeneralRegion implements GeneralRegionInterface, Comparabl // Use own calculation for polygon regions, as WorldGuard does not implement it and returns 0 ProtectedRegion region = getRegion(); if(region instanceof ProtectedPolygonalRegion) { - BlockVector min = region.getMinimumPoint(); - BlockVector max = region.getMaximumPoint(); + Vector min = getMinimumPoint(); + Vector max = getMaximumPoint(); // Exact, but slow algorithm if(getWidth() * getDepth() < 100) { @@ -1512,7 +1527,7 @@ public abstract class GeneralRegion implements GeneralRegionInterface, Comparabl } // Estimate, but quick algorithm else { - List points = region.getPoints(); + List points = plugin.getWorldGuardHandler().getRegionPoints(region); int numPoints = points.size(); if(numPoints < 3) { return 0; diff --git a/AreaShop/src/main/java/me/wiefferink/areashop/tools/Utils.java b/AreaShop/src/main/java/me/wiefferink/areashop/tools/Utils.java index c07b69f..dfb5cf4 100644 --- a/AreaShop/src/main/java/me/wiefferink/areashop/tools/Utils.java +++ b/AreaShop/src/main/java/me/wiefferink/areashop/tools/Utils.java @@ -1,6 +1,5 @@ package me.wiefferink.areashop.tools; -import com.sk89q.worldedit.BlockVector; import com.sk89q.worldguard.protection.managers.RegionManager; import com.sk89q.worldguard.protection.regions.ProtectedRegion; import me.wiefferink.areashop.AreaShop; @@ -21,6 +20,7 @@ import org.bukkit.configuration.Configuration; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.entity.Player; +import org.bukkit.util.Vector; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; @@ -351,8 +351,8 @@ public class Utils { Location selectionMin = selection.getMinimumLocation(); Location selectionMax = selection.getMaximumLocation(); for(ProtectedRegion region : regionManager.getRegions().values()) { - BlockVector regionMin = region.getMinimumPoint(); - BlockVector regionMax = region.getMaximumPoint(); + Vector regionMin = AreaShop.getInstance().getWorldGuardHandler().getMinimumPoint(region); + Vector regionMax = AreaShop.getInstance().getWorldGuardHandler().getMaximumPoint(region); if( ( // x part, resolves to true if the selection and region overlap anywhere on the x-axis (regionMin.getBlockX() <= selectionMax.getBlockX() && regionMin.getBlockX() >= selectionMin.getBlockX()) diff --git a/Interfaces/.gitignore b/areashop-interface/.gitignore similarity index 100% rename from Interfaces/.gitignore rename to areashop-interface/.gitignore diff --git a/Interfaces/pom.xml b/areashop-interface/pom.xml similarity index 97% rename from Interfaces/pom.xml rename to areashop-interface/pom.xml index d770e0f..05ee4c5 100644 --- a/Interfaces/pom.xml +++ b/areashop-interface/pom.xml @@ -4,7 +4,7 @@ areashop-interface jar AreaShop Interface - AreaShopInterface + latest me.wiefferink diff --git a/Interfaces/src/main/java/me/wiefferink/areashop/interfaces/AreaShopInterface.java b/areashop-interface/src/main/java/me/wiefferink/areashop/interfaces/AreaShopInterface.java similarity index 100% rename from Interfaces/src/main/java/me/wiefferink/areashop/interfaces/AreaShopInterface.java rename to areashop-interface/src/main/java/me/wiefferink/areashop/interfaces/AreaShopInterface.java diff --git a/Interfaces/src/main/java/me/wiefferink/areashop/interfaces/GeneralRegionInterface.java b/areashop-interface/src/main/java/me/wiefferink/areashop/interfaces/GeneralRegionInterface.java similarity index 100% rename from Interfaces/src/main/java/me/wiefferink/areashop/interfaces/GeneralRegionInterface.java rename to areashop-interface/src/main/java/me/wiefferink/areashop/interfaces/GeneralRegionInterface.java diff --git a/Interfaces/src/main/java/me/wiefferink/areashop/interfaces/RegionAccessSet.java b/areashop-interface/src/main/java/me/wiefferink/areashop/interfaces/RegionAccessSet.java similarity index 100% rename from Interfaces/src/main/java/me/wiefferink/areashop/interfaces/RegionAccessSet.java rename to areashop-interface/src/main/java/me/wiefferink/areashop/interfaces/RegionAccessSet.java diff --git a/Interfaces/src/main/java/me/wiefferink/areashop/interfaces/WorldEditInterface.java b/areashop-interface/src/main/java/me/wiefferink/areashop/interfaces/WorldEditInterface.java similarity index 100% rename from Interfaces/src/main/java/me/wiefferink/areashop/interfaces/WorldEditInterface.java rename to areashop-interface/src/main/java/me/wiefferink/areashop/interfaces/WorldEditInterface.java diff --git a/Interfaces/src/main/java/me/wiefferink/areashop/interfaces/WorldEditSelection.java b/areashop-interface/src/main/java/me/wiefferink/areashop/interfaces/WorldEditSelection.java similarity index 100% rename from Interfaces/src/main/java/me/wiefferink/areashop/interfaces/WorldEditSelection.java rename to areashop-interface/src/main/java/me/wiefferink/areashop/interfaces/WorldEditSelection.java diff --git a/Interfaces/src/main/java/me/wiefferink/areashop/interfaces/WorldGuardInterface.java b/areashop-interface/src/main/java/me/wiefferink/areashop/interfaces/WorldGuardInterface.java similarity index 80% rename from Interfaces/src/main/java/me/wiefferink/areashop/interfaces/WorldGuardInterface.java rename to areashop-interface/src/main/java/me/wiefferink/areashop/interfaces/WorldGuardInterface.java index 954cfcf..cde6972 100644 --- a/Interfaces/src/main/java/me/wiefferink/areashop/interfaces/WorldGuardInterface.java +++ b/areashop-interface/src/main/java/me/wiefferink/areashop/interfaces/WorldGuardInterface.java @@ -5,10 +5,13 @@ import com.sk89q.worldguard.protection.flags.InvalidFlagFormat; import com.sk89q.worldguard.protection.flags.RegionGroup; import com.sk89q.worldguard.protection.flags.RegionGroupFlag; import com.sk89q.worldguard.protection.managers.RegionManager; +import com.sk89q.worldguard.protection.regions.ProtectedCuboidRegion; import com.sk89q.worldguard.protection.regions.ProtectedRegion; import org.bukkit.Location; import org.bukkit.World; +import org.bukkit.util.Vector; +import java.util.List; import java.util.Set; import java.util.UUID; @@ -104,4 +107,34 @@ public abstract class WorldGuardInterface { * @throws InvalidFlagFormat When the input for the flag is incorrect */ public abstract RegionGroup parseFlagGroupInput(RegionGroupFlag flag, String input) throws InvalidFlagFormat; + + /** + * Get the minimum point of a region. + * @param region The region to get it for + * @return Minimum point represented as vector + */ + public abstract Vector getMinimumPoint(ProtectedRegion region); + + /** + * Get the maximum point of a region. + * @param region The region to get it for + * @return Maximum point represented as vector + */ + public abstract Vector getMaximumPoint(ProtectedRegion region); + + /** + * Get the edges of a region (meant for polygon regions). + * @param region The region to get it for + * @return Points around the edge as vector array + */ + public abstract List getRegionPoints(ProtectedRegion region); + + /** + * Create a CuboidRegion. + * @param name Name to use in WorldEdit + * @param min Minimum point + * @param max Maximum point + * @return CuboidRegion + */ + public abstract ProtectedCuboidRegion createCuboidRegion(String name, Vector min, Vector max); } diff --git a/WorldEdit 5/.gitignore b/areashop-worldedit-5/.gitignore similarity index 100% rename from WorldEdit 5/.gitignore rename to areashop-worldedit-5/.gitignore diff --git a/WorldEdit 5/pom.xml b/areashop-worldedit-5/pom.xml similarity index 92% rename from WorldEdit 5/pom.xml rename to areashop-worldedit-5/pom.xml index 72af210..e923dd8 100644 --- a/WorldEdit 5/pom.xml +++ b/areashop-worldedit-5/pom.xml @@ -1,48 +1,48 @@ - - 4.0.0 - areashop-worldedit-5 - jar - AreaShop WorldEdit 5 - WorldEdit-5 - - - me.wiefferink - areashop-parent - parent - - - - - org.bukkit - craftbukkit - system - any - ${project.basedir}/../dependencies/craftbukkit-1.7.9-R0.2-SNAPSHOT.jar - jar - true - - - - com.sk89q - worldedit - system - any - ${project.basedir}/../dependencies/worldedit-5.7-SNAPSHOT.jar - - - com.sk89q - worldguard - system - any - ${project.basedir}/../dependencies/worldguard-5.9.1-SNAPSHOT.jar - - - - me.wiefferink - areashop-interface - AreaShopInterface - jar - - - + + 4.0.0 + areashop-worldedit-5 + jar + AreaShop WorldEdit 5 + latest + + + me.wiefferink + areashop-parent + parent + + + + + org.bukkit + craftbukkit + system + any + ${project.basedir}/../dependencies/craftbukkit-1.7.9-R0.2-SNAPSHOT.jar + jar + true + + + + com.sk89q + worldedit + system + any + ${project.basedir}/../dependencies/worldedit-5.7-SNAPSHOT.jar + + + com.sk89q + worldguard + system + any + ${project.basedir}/../dependencies/worldguard-5.9.1-SNAPSHOT.jar + + + + me.wiefferink + areashop-interface + latest + jar + + + diff --git a/WorldEdit 5/src/main/java/me/wiefferink/areashop/handlers/WorldEditHandler5.java b/areashop-worldedit-5/src/main/java/me/wiefferink/areashop/handlers/WorldEditHandler5.java similarity index 100% rename from WorldEdit 5/src/main/java/me/wiefferink/areashop/handlers/WorldEditHandler5.java rename to areashop-worldedit-5/src/main/java/me/wiefferink/areashop/handlers/WorldEditHandler5.java diff --git a/WorldEdit 6/.gitignore b/areashop-worldedit-6/.gitignore similarity index 100% rename from WorldEdit 6/.gitignore rename to areashop-worldedit-6/.gitignore diff --git a/WorldEdit 6/pom.xml b/areashop-worldedit-6/pom.xml similarity index 92% rename from WorldEdit 6/pom.xml rename to areashop-worldedit-6/pom.xml index 5c0c61e..08f3d35 100644 --- a/WorldEdit 6/pom.xml +++ b/areashop-worldedit-6/pom.xml @@ -1,48 +1,48 @@ - - 4.0.0 - areashop-worldedit-6 - jar - AreaShop WorldEdit 6 - WorldEdit-6 - - - me.wiefferink - areashop-parent - parent - - - - - org.bukkit - craftbukkit - system - any - ${project.basedir}/../dependencies/craftbukkit-1.7.9-R0.2-SNAPSHOT.jar - jar - true - - - - com.sk89q - worldedit - system - any - ${project.basedir}/../dependencies/worldedit-6.0.0-SNAPSHOT.jar - - - com.sk89q - worldguard - system - any - ${project.basedir}/../dependencies/worldguard-6.0.0-SNAPSHOT.jar - - - - me.wiefferink - areashop-interface - AreaShopInterface - jar - - - + + 4.0.0 + areashop-worldedit-6 + jar + AreaShop WorldEdit 6 + latest + + + me.wiefferink + areashop-parent + parent + + + + + org.bukkit + craftbukkit + system + any + ${project.basedir}/../dependencies/craftbukkit-1.7.9-R0.2-SNAPSHOT.jar + jar + true + + + + com.sk89q + worldedit + system + any + ${project.basedir}/../dependencies/worldedit-6.0.0-SNAPSHOT.jar + + + com.sk89q + worldguard + system + any + ${project.basedir}/../dependencies/worldguard-6.0.0-SNAPSHOT.jar + + + + me.wiefferink + areashop-interface + latest + jar + + + diff --git a/WorldEdit 6/src/main/java/me/wiefferink/areashop/handlers/WorldEditHandler6.java b/areashop-worldedit-6/src/main/java/me/wiefferink/areashop/handlers/WorldEditHandler6.java similarity index 100% rename from WorldEdit 6/src/main/java/me/wiefferink/areashop/handlers/WorldEditHandler6.java rename to areashop-worldedit-6/src/main/java/me/wiefferink/areashop/handlers/WorldEditHandler6.java diff --git a/WorldEdit 7/.gitignore b/areashop-worldedit-7_beta_1/.gitignore similarity index 100% rename from WorldEdit 7/.gitignore rename to areashop-worldedit-7_beta_1/.gitignore diff --git a/WorldEdit 7/pom.xml b/areashop-worldedit-7_beta_1/pom.xml similarity index 87% rename from WorldEdit 7/pom.xml rename to areashop-worldedit-7_beta_1/pom.xml index 7ba49d2..b98a0af 100644 --- a/WorldEdit 7/pom.xml +++ b/areashop-worldedit-7_beta_1/pom.xml @@ -1,10 +1,10 @@ 4.0.0 - areashop-worldedit-7 + areashop-worldedit-7_beta_1 jar - AreaShop WorldEdit 7 - WorldEdit-7 + AreaShop WorldEdit 7_beta_1 + latest me.wiefferink @@ -33,13 +33,13 @@ worldguard system any - ${project.basedir}/../dependencies/worldguard-legacy-7.0.0-beta01.jar + ${project.basedir}/../dependencies/worldguard-legacy-7.0.0-beta-01.jar me.wiefferink areashop-interface - AreaShopInterface + latest jar diff --git a/WorldEdit 7/src/main/java/me/wiefferink/areashop/handlers/WorldEditHandler7.java b/areashop-worldedit-7_beta_1/src/main/java/me/wiefferink/areashop/handlers/WorldEditHandler7_beta_1.java similarity index 98% rename from WorldEdit 7/src/main/java/me/wiefferink/areashop/handlers/WorldEditHandler7.java rename to areashop-worldedit-7_beta_1/src/main/java/me/wiefferink/areashop/handlers/WorldEditHandler7_beta_1.java index 118b366..f922ce3 100644 --- a/WorldEdit 7/src/main/java/me/wiefferink/areashop/handlers/WorldEditHandler7.java +++ b/areashop-worldedit-7_beta_1/src/main/java/me/wiefferink/areashop/handlers/WorldEditHandler7_beta_1.java @@ -40,9 +40,9 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Arrays; -public class WorldEditHandler7 extends WorldEditInterface { +public class WorldEditHandler7_beta_1 extends WorldEditInterface { - public WorldEditHandler7(AreaShopInterface pluginInterface) { + public WorldEditHandler7_beta_1(AreaShopInterface pluginInterface) { super(pluginInterface); } diff --git a/WorldGuard 5/.gitignore b/areashop-worldedit-7_beta_4/.gitignore similarity index 100% rename from WorldGuard 5/.gitignore rename to areashop-worldedit-7_beta_4/.gitignore diff --git a/areashop-worldedit-7_beta_4/pom.xml b/areashop-worldedit-7_beta_4/pom.xml new file mode 100644 index 0000000..d511dd4 --- /dev/null +++ b/areashop-worldedit-7_beta_4/pom.xml @@ -0,0 +1,46 @@ + + 4.0.0 + areashop-worldedit-7_beta_4 + jar + AreaShop WorldEdit 7_beta_4 + latest + + + me.wiefferink + areashop-parent + parent + + + + + org.bukkit + craftbukkit + 1.13-R0.1-SNAPSHOT + jar + true + + + + com.sk89q + worldedit + system + any + ${project.basedir}/../dependencies/worldedit-bukkit-7.0.0-beta-04.jar + + + com.sk89q + worldguard + system + any + ${project.basedir}/../dependencies/worldguard-legacy-7.0.0-beta-02.jar + + + + me.wiefferink + areashop-interface + latest + jar + + + diff --git a/areashop-worldedit-7_beta_4/src/main/java/me/wiefferink/areashop/handlers/WorldEditHandler7_beta_4.java b/areashop-worldedit-7_beta_4/src/main/java/me/wiefferink/areashop/handlers/WorldEditHandler7_beta_4.java new file mode 100644 index 0000000..a94f090 --- /dev/null +++ b/areashop-worldedit-7_beta_4/src/main/java/me/wiefferink/areashop/handlers/WorldEditHandler7_beta_4.java @@ -0,0 +1,244 @@ +package me.wiefferink.areashop.handlers; + +import com.sk89q.worldedit.EditSession; +import com.sk89q.worldedit.IncompleteRegionException; +import com.sk89q.worldedit.LocalSession; +import com.sk89q.worldedit.MaxChangedBlocksException; +import com.sk89q.worldedit.bukkit.BukkitAdapter; +import com.sk89q.worldedit.extent.clipboard.BlockArrayClipboard; +import com.sk89q.worldedit.extent.clipboard.Clipboard; +import com.sk89q.worldedit.extent.clipboard.io.ClipboardFormat; +import com.sk89q.worldedit.extent.clipboard.io.ClipboardFormats; +import com.sk89q.worldedit.extent.clipboard.io.ClipboardReader; +import com.sk89q.worldedit.extent.clipboard.io.ClipboardWriter; +import com.sk89q.worldedit.extent.transform.BlockTransformExtent; +import com.sk89q.worldedit.function.mask.Mask; +import com.sk89q.worldedit.function.mask.Mask2D; +import com.sk89q.worldedit.function.operation.ForwardExtentCopy; +import com.sk89q.worldedit.function.operation.Operations; +import com.sk89q.worldedit.math.BlockVector3; +import com.sk89q.worldedit.regions.CuboidRegion; +import com.sk89q.worldedit.regions.Region; +import com.sk89q.worldedit.session.ClipboardHolder; +import com.sk89q.worldedit.util.io.Closer; +import com.sk89q.worldguard.protection.regions.ProtectedRegion; +import com.sk89q.worldguard.protection.regions.RegionType; +import me.wiefferink.areashop.interfaces.AreaShopInterface; +import me.wiefferink.areashop.interfaces.GeneralRegionInterface; +import me.wiefferink.areashop.interfaces.WorldEditInterface; +import me.wiefferink.areashop.interfaces.WorldEditSelection; +import org.apache.commons.lang.exception.ExceptionUtils; +import org.bukkit.entity.Player; + +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.Arrays; + +public class WorldEditHandler7_beta_4 extends WorldEditInterface { + + public WorldEditHandler7_beta_4(AreaShopInterface pluginInterface) { + super(pluginInterface); + } + + @Override + public WorldEditSelection getPlayerSelection(Player player) { + try { + Region region = pluginInterface.getWorldEdit().getSession(player).getSelection(BukkitAdapter.adapt(player.getWorld())); + return new WorldEditSelection( + player.getWorld(), + BukkitAdapter.adapt(player.getWorld(), region.getMinimumPoint()), + BukkitAdapter.adapt(player.getWorld(), region.getMaximumPoint()) + ); + } catch (IncompleteRegionException e) { + return null; + } + } + + @Override + public boolean restoreRegionBlocks(File rawFile, GeneralRegionInterface regionInterface) { + File file = null; + ClipboardFormat format = null; + for (ClipboardFormat formatOption : ClipboardFormats.getAll()) { + for (String extension : formatOption.getFileExtensions()) { + if (new File(rawFile.getAbsolutePath() + "." + extension).exists()) { + file = new File(rawFile.getAbsolutePath() + "." + extension); + format = formatOption; + } + } + } + if(file == null) { + pluginInterface.getLogger().info("Did not restore region " + regionInterface.getName() + ", schematic file does not exist: " + rawFile.getAbsolutePath()); + return false; + } + pluginInterface.debugI("Trying to restore region", regionInterface.getName(), "from file", file.getAbsolutePath(), "with format", format.getName()); + + com.sk89q.worldedit.world.World world = null; + if(regionInterface.getName() != null) { + world = BukkitAdapter.adapt(regionInterface.getWorld()); + } + if(world == null) { + pluginInterface.getLogger().info("Did not restore region " + regionInterface.getName() + ", world not found: " + regionInterface.getWorldName()); + return false; + } + EditSession editSession = pluginInterface.getWorldEdit().getWorldEdit().getEditSessionFactory().getEditSession(world, pluginInterface.getConfig().getInt("maximumBlocks")); + editSession.enableQueue(); + ProtectedRegion region = regionInterface.getRegion(); + // Get the origin and size of the region + BlockVector3 origin = BlockVector3.at(region.getMinimumPoint().getBlockX(), region.getMinimumPoint().getBlockY(), region.getMinimumPoint().getBlockZ()); + + // Read the schematic and paste it into the world + try(Closer closer = Closer.create()) { + FileInputStream fis = closer.register(new FileInputStream(file)); + BufferedInputStream bis = closer.register(new BufferedInputStream(fis)); + ClipboardReader reader = format.getReader(bis); + + //WorldData worldData = world.getWorldData(); + LocalSession session = new LocalSession(pluginInterface.getWorldEdit().getLocalConfiguration()); + Clipboard clipboard = reader.read(); + if(clipboard.getDimensions().getY() != regionInterface.getHeight() + || clipboard.getDimensions().getX() != regionInterface.getWidth() + || clipboard.getDimensions().getZ() != regionInterface.getDepth()) { + pluginInterface.getLogger().warning("Size of the region " + regionInterface.getName() + " is not the same as the schematic to restore!"); + pluginInterface.debugI("schematic|region, x:" + clipboard.getDimensions().getX() + "|" + regionInterface.getWidth() + ", y:" + clipboard.getDimensions().getY() + "|" + regionInterface.getHeight() + ", z:" + clipboard.getDimensions().getZ() + "|" + regionInterface.getDepth()); + } + clipboard.setOrigin(clipboard.getMinimumPoint()); + ClipboardHolder clipboardHolder = new ClipboardHolder(clipboard); + session.setBlockChangeLimit(pluginInterface.getConfig().getInt("maximumBlocks")); + session.setClipboard(clipboardHolder); + + // Build operation + BlockTransformExtent extent = new BlockTransformExtent(clipboardHolder.getClipboard(), clipboardHolder.getTransform()); + ForwardExtentCopy copy = new ForwardExtentCopy(extent, clipboard.getRegion(), clipboard.getOrigin(), editSession, origin); + copy.setCopyingEntities(false); + copy.setTransform(clipboardHolder.getTransform()); + // Mask to region (for polygon and other weird shaped regions) + // TODO make this more efficient (especially for polygon regions) + if(region.getType() != RegionType.CUBOID) { + copy.setSourceMask(new Mask() { + @Override + public boolean test(BlockVector3 vector) { + return region.contains(vector); + } + + @Override + public Mask2D toMask2D() { + return null; + } + }); + } + Operations.completeLegacy(copy); + } catch(MaxChangedBlocksException e) { + pluginInterface.getLogger().warning("exceeded the block limit while restoring schematic of " + regionInterface.getName() + ", limit in exception: " + e.getBlockLimit() + ", limit passed by AreaShop: " + pluginInterface.getConfig().getInt("maximumBlocks")); + return false; + } catch(IOException e) { + pluginInterface.getLogger().warning("An error occured while restoring schematic of " + regionInterface.getName() + ", enable debug to see the complete stacktrace"); + pluginInterface.debugI(ExceptionUtils.getStackTrace(e)); + return false; + } catch (Exception e) { + pluginInterface.getLogger().warning("crashed during restore of " + regionInterface.getName()); + pluginInterface.debugI(ExceptionUtils.getStackTrace(e)); + return false; + } + + // flushQueue is for worldedit-bukkit-7.0.0-beta-01, later versions have renamed it to flushSession + boolean done = false; + for (String methodName : Arrays.asList("flushSession", "flushQueue")) { + try { + Method method = editSession.getClass().getMethod(methodName); + method.invoke(editSession); + done = true; + } catch (SecurityException | NoSuchMethodException | IllegalAccessException | InvocationTargetException ignored) { + // Try the next methodName + } + } + + if(!done) { + pluginInterface.getLogger().warning("Could not restore schematic of " + regionInterface.getName() + ", flushSession() failed"); + } + + return true; + } + + @Override + public boolean saveRegionBlocks(File file, GeneralRegionInterface regionInterface) { + ClipboardFormat format = ClipboardFormats.findByAlias("sponge"); + if(format == null) { + // Sponge format does not exist, try to select another one + for(ClipboardFormat otherFormat : ClipboardFormats.getAll()) { + format = otherFormat; + } + if(format == null) { + pluginInterface.getLogger().warning("Cannot find a format to save a schematic in, no available formats!"); + return false; + } + } + + file = new File(file.getAbsolutePath() + "." + format.getPrimaryFileExtension()); + pluginInterface.debugI("Trying to save region", regionInterface.getName(), " to file", file.getAbsolutePath(), "with format", format.getName()); + com.sk89q.worldedit.world.World world = null; + if(regionInterface.getWorld() != null) { + world = BukkitAdapter.adapt(regionInterface.getWorld()); + } + if(world == null) { + pluginInterface.getLogger().warning("Did not save region " + regionInterface.getName() + ", world not found: " + regionInterface.getWorldName()); + return false; + } + EditSession editSession = pluginInterface.getWorldEdit().getWorldEdit().getEditSessionFactory().getEditSession(world, pluginInterface.getConfig().getInt("maximumBlocks")); + + // Create a clipboard + CuboidRegion selection = new CuboidRegion(world, regionInterface.getRegion().getMinimumPoint(), regionInterface.getRegion().getMaximumPoint()); + BlockArrayClipboard clipboard = new BlockArrayClipboard(selection); + clipboard.setOrigin(regionInterface.getRegion().getMinimumPoint()); + ForwardExtentCopy copy = new ForwardExtentCopy(editSession, new CuboidRegion(world, regionInterface.getRegion().getMinimumPoint(), regionInterface.getRegion().getMaximumPoint()), clipboard, regionInterface.getRegion().getMinimumPoint()); + try { + Operations.completeLegacy(copy); + } catch(MaxChangedBlocksException e) { + pluginInterface.getLogger().warning("Exceeded the block limit while saving schematic of " + regionInterface.getName() + ", limit in exception: " + e.getBlockLimit() + ", limit passed by AreaShop: " + pluginInterface.getConfig().getInt("maximumBlocks")); + return false; + } + + try(Closer closer = Closer.create()) { + FileOutputStream fos = closer.register(new FileOutputStream(file)); + BufferedOutputStream bos = closer.register(new BufferedOutputStream(fos)); + ClipboardWriter writer = closer.register(format.getWriter(bos)); + writer.write(clipboard); + } catch(IOException e) { + pluginInterface.getLogger().warning("An error occured while saving schematic of " + regionInterface.getName() + ", enable debug to see the complete stacktrace"); + pluginInterface.debugI(ExceptionUtils.getStackTrace(e)); + return false; + } catch (Exception e) { + pluginInterface.getLogger().warning("crashed during save of " + regionInterface.getName()); + pluginInterface.debugI(ExceptionUtils.getStackTrace(e)); + return false; + } + return true; + } +} + + + + + + + + + + + + + + + + + + + + + + diff --git a/WorldGuard 6/.gitignore b/areashop-worldguard-5/.gitignore similarity index 100% rename from WorldGuard 6/.gitignore rename to areashop-worldguard-5/.gitignore diff --git a/WorldGuard 5/pom.xml b/areashop-worldguard-5/pom.xml similarity index 91% rename from WorldGuard 5/pom.xml rename to areashop-worldguard-5/pom.xml index 759e324..1c68467 100644 --- a/WorldGuard 5/pom.xml +++ b/areashop-worldguard-5/pom.xml @@ -1,41 +1,41 @@ - - 4.0.0 - areashop-worldguard-5 - jar - AreaShop WorldGuard 5 - WorldGuard-5 - - - me.wiefferink - areashop-parent - parent - - - - - org.bukkit - bukkit - system - any - ${project.basedir}/../dependencies/bukkit-1.7.9-R0.2.jar - jar - true - - - - com.sk89q - worldguard - system - any - ${project.basedir}/../dependencies/worldguard-5.9.1-SNAPSHOT.jar - - - - me.wiefferink - areashop-interface - AreaShopInterface - jar - - - + + 4.0.0 + areashop-worldguard-5 + jar + AreaShop WorldGuard 5 + latest + + + me.wiefferink + areashop-parent + parent + + + + + org.bukkit + bukkit + system + any + ${project.basedir}/../dependencies/bukkit-1.7.9-R0.2.jar + jar + true + + + + com.sk89q + worldguard + system + any + ${project.basedir}/../dependencies/worldguard-5.9.1-SNAPSHOT.jar + + + + me.wiefferink + areashop-interface + latest + jar + + + diff --git a/WorldGuard 5/src/main/java/me/wiefferink/areashop/handlers/WorldGuardHandler5.java b/areashop-worldguard-5/src/main/java/me/wiefferink/areashop/handlers/WorldGuardHandler5.java similarity index 78% rename from WorldGuard 5/src/main/java/me/wiefferink/areashop/handlers/WorldGuardHandler5.java rename to areashop-worldguard-5/src/main/java/me/wiefferink/areashop/handlers/WorldGuardHandler5.java index c093faf..0fe0354 100644 --- a/WorldGuard 5/src/main/java/me/wiefferink/areashop/handlers/WorldGuardHandler5.java +++ b/areashop-worldguard-5/src/main/java/me/wiefferink/areashop/handlers/WorldGuardHandler5.java @@ -1,5 +1,7 @@ package me.wiefferink.areashop.handlers; +import com.sk89q.worldedit.BlockVector; +import com.sk89q.worldedit.BlockVector2D; import com.sk89q.worldedit.Vector; import com.sk89q.worldguard.bukkit.WorldGuardPlugin; import com.sk89q.worldguard.domains.DefaultDomain; @@ -9,6 +11,7 @@ import com.sk89q.worldguard.protection.flags.InvalidFlagFormat; import com.sk89q.worldguard.protection.flags.RegionGroup; import com.sk89q.worldguard.protection.flags.RegionGroupFlag; import com.sk89q.worldguard.protection.managers.RegionManager; +import com.sk89q.worldguard.protection.regions.ProtectedCuboidRegion; import com.sk89q.worldguard.protection.regions.ProtectedRegion; import me.wiefferink.areashop.interfaces.AreaShopInterface; import me.wiefferink.areashop.interfaces.RegionAccessSet; @@ -18,7 +21,9 @@ import org.bukkit.Location; import org.bukkit.OfflinePlayer; import org.bukkit.World; +import java.util.ArrayList; import java.util.HashSet; +import java.util.List; import java.util.Set; import java.util.UUID; @@ -138,4 +143,30 @@ public class WorldGuardHandler5 extends WorldGuardInterface { public RegionGroup parseFlagGroupInput(RegionGroupFlag flag, String input) throws InvalidFlagFormat { return flag.parseInput(WorldGuardPlugin.inst(), null, input); } + + @Override + public org.bukkit.util.Vector getMinimumPoint(ProtectedRegion region) { + BlockVector min = region.getMinimumPoint(); + return new org.bukkit.util.Vector(min.getX(), min.getY(), min.getZ()); + } + + @Override + public org.bukkit.util.Vector getMaximumPoint(ProtectedRegion region) { + BlockVector min = region.getMaximumPoint(); + return new org.bukkit.util.Vector(min.getX(), min.getY(), min.getZ()); + } + + @Override + public List getRegionPoints(ProtectedRegion region) { + List result = new ArrayList<>(); + for (BlockVector2D point : region.getPoints()) { + result.add(new org.bukkit.util.Vector(point.getX(), 0,point.getZ())); + } + return result; + } + + @Override + public ProtectedCuboidRegion createCuboidRegion(String name, org.bukkit.util.Vector corner1, org.bukkit.util.Vector corner2) { + return new ProtectedCuboidRegion(name, new BlockVector(corner1.getBlockX(), corner1.getBlockY(), corner1.getBlockZ()), new BlockVector(corner2.getBlockX(), corner2.getBlockY(), corner2.getBlockZ())); + } } diff --git a/WorldGuard 6_1_3/.gitignore b/areashop-worldguard-6/.gitignore similarity index 100% rename from WorldGuard 6_1_3/.gitignore rename to areashop-worldguard-6/.gitignore diff --git a/WorldGuard 6/pom.xml b/areashop-worldguard-6/pom.xml similarity index 91% rename from WorldGuard 6/pom.xml rename to areashop-worldguard-6/pom.xml index b4b171e..39671ea 100644 --- a/WorldGuard 6/pom.xml +++ b/areashop-worldguard-6/pom.xml @@ -1,41 +1,41 @@ - - 4.0.0 - areashop-worldguard-6 - jar - AreaShop WorldGuard 6 - WorldGuard-6 - - - me.wiefferink - areashop-parent - parent - - - - - org.bukkit - bukkit - system - any - ${project.basedir}/../dependencies/bukkit-1.7.9-R0.2.jar - jar - true - - - - com.sk89q - worldguard - system - any - ${project.basedir}/../dependencies/worldguard-6.0.0-SNAPSHOT.jar - - - - me.wiefferink - areashop-interface - AreaShopInterface - jar - - - + + 4.0.0 + areashop-worldguard-6 + jar + AreaShop WorldGuard 6 + latest + + + me.wiefferink + areashop-parent + parent + + + + + org.bukkit + bukkit + system + any + ${project.basedir}/../dependencies/bukkit-1.7.9-R0.2.jar + jar + true + + + + com.sk89q + worldguard + system + any + ${project.basedir}/../dependencies/worldguard-6.0.0-SNAPSHOT.jar + + + + me.wiefferink + areashop-interface + latest + jar + + + diff --git a/WorldGuard 6/src/main/java/me/wiefferink/areashop/handlers/WorldGuardHandler6.java b/areashop-worldguard-6/src/main/java/me/wiefferink/areashop/handlers/WorldGuardHandler6.java similarity index 76% rename from WorldGuard 6/src/main/java/me/wiefferink/areashop/handlers/WorldGuardHandler6.java rename to areashop-worldguard-6/src/main/java/me/wiefferink/areashop/handlers/WorldGuardHandler6.java index 31409f4..5e0b28e 100644 --- a/WorldGuard 6/src/main/java/me/wiefferink/areashop/handlers/WorldGuardHandler6.java +++ b/areashop-worldguard-6/src/main/java/me/wiefferink/areashop/handlers/WorldGuardHandler6.java @@ -1,5 +1,7 @@ package me.wiefferink.areashop.handlers; +import com.sk89q.worldedit.BlockVector; +import com.sk89q.worldedit.BlockVector2D; import com.sk89q.worldedit.Vector; import com.sk89q.worldguard.bukkit.WorldGuardPlugin; import com.sk89q.worldguard.domains.DefaultDomain; @@ -9,6 +11,7 @@ import com.sk89q.worldguard.protection.flags.InvalidFlagFormat; import com.sk89q.worldguard.protection.flags.RegionGroup; import com.sk89q.worldguard.protection.flags.RegionGroupFlag; import com.sk89q.worldguard.protection.managers.RegionManager; +import com.sk89q.worldguard.protection.regions.ProtectedCuboidRegion; import com.sk89q.worldguard.protection.regions.ProtectedRegion; import me.wiefferink.areashop.interfaces.AreaShopInterface; import me.wiefferink.areashop.interfaces.RegionAccessSet; @@ -16,7 +19,9 @@ import me.wiefferink.areashop.interfaces.WorldGuardInterface; import org.bukkit.Location; import org.bukkit.World; +import java.util.ArrayList; import java.util.HashSet; +import java.util.List; import java.util.Set; import java.util.UUID; @@ -124,4 +129,30 @@ public class WorldGuardHandler6 extends WorldGuardInterface { public RegionGroup parseFlagGroupInput(RegionGroupFlag flag, String input) throws InvalidFlagFormat { return flag.parseInput(WorldGuardPlugin.inst(), null, input); } + + @Override + public org.bukkit.util.Vector getMinimumPoint(ProtectedRegion region) { + BlockVector min = region.getMinimumPoint(); + return new org.bukkit.util.Vector(min.getX(), min.getY(), min.getZ()); + } + + @Override + public org.bukkit.util.Vector getMaximumPoint(ProtectedRegion region) { + BlockVector min = region.getMaximumPoint(); + return new org.bukkit.util.Vector(min.getX(), min.getY(), min.getZ()); + } + + @Override + public List getRegionPoints(ProtectedRegion region) { + List result = new ArrayList<>(); + for (BlockVector2D point : region.getPoints()) { + result.add(new org.bukkit.util.Vector(point.getX(), 0,point.getZ())); + } + return result; + } + + @Override + public ProtectedCuboidRegion createCuboidRegion(String name, org.bukkit.util.Vector corner1, org.bukkit.util.Vector corner2) { + return new ProtectedCuboidRegion(name, new BlockVector(corner1.getBlockX(), corner1.getBlockY(), corner1.getBlockZ()), new BlockVector(corner2.getBlockX(), corner2.getBlockY(), corner2.getBlockZ())); + } } diff --git a/WorldGuard 7/.gitignore b/areashop-worldguard-6_1_3/.gitignore similarity index 100% rename from WorldGuard 7/.gitignore rename to areashop-worldguard-6_1_3/.gitignore diff --git a/WorldGuard 6_1_3/pom.xml b/areashop-worldguard-6_1_3/pom.xml similarity index 92% rename from WorldGuard 6_1_3/pom.xml rename to areashop-worldguard-6_1_3/pom.xml index d3609ca..0f27995 100644 --- a/WorldGuard 6_1_3/pom.xml +++ b/areashop-worldguard-6_1_3/pom.xml @@ -4,7 +4,7 @@ areashop-worldguard-6_1_3 jar AreaShop WorldGuard 6_1_3 - WorldGuard-6_1_3 + latest me.wiefferink @@ -34,7 +34,7 @@ me.wiefferink areashop-worldguard-6 - WorldGuard-6 + latest jar provided @@ -42,7 +42,7 @@ me.wiefferink areashop-interface - AreaShopInterface + latest jar diff --git a/WorldGuard 6_1_3/src/main/java/me/wiefferink/areashop/handlers/WorldGuardHandler6_1_3.java b/areashop-worldguard-6_1_3/src/main/java/me/wiefferink/areashop/handlers/WorldGuardHandler6_1_3.java similarity index 100% rename from WorldGuard 6_1_3/src/main/java/me/wiefferink/areashop/handlers/WorldGuardHandler6_1_3.java rename to areashop-worldguard-6_1_3/src/main/java/me/wiefferink/areashop/handlers/WorldGuardHandler6_1_3.java diff --git a/areashop-worldguard-7_beta_1/.gitignore b/areashop-worldguard-7_beta_1/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/areashop-worldguard-7_beta_1/.gitignore @@ -0,0 +1 @@ +/target diff --git a/areashop-worldguard-7_beta_1/pom.xml b/areashop-worldguard-7_beta_1/pom.xml new file mode 100644 index 0000000..51dd3c4 --- /dev/null +++ b/areashop-worldguard-7_beta_1/pom.xml @@ -0,0 +1,61 @@ + + 4.0.0 + areashop-worldguard-7_beta_1 + jar + AreaShop WorldGuard 7_beta_1 + latest + + + me.wiefferink + areashop-parent + parent + + + + + org.bukkit + craftbukkit + 1.13-R0.1-SNAPSHOT + jar + true + + + + com.sk89q + worldedit + system + any + ${project.basedir}/../dependencies/worldedit-bukkit-7.0.0-beta-01.jar + + + + com.sk89q + worldguard + system + any + ${project.basedir}/../dependencies/worldguard-legacy-7.0.0-beta-01.jar + + + me.wiefferink + areashop-worldguard-6 + latest + jar + provided + + + me.wiefferink + areashop-worldguard-6_1_3 + latest + jar + provided + + + + me.wiefferink + areashop-interface + latest + jar + + + diff --git a/areashop-worldguard-7_beta_1/src/main/java/me/wiefferink/areashop/handlers/WorldGuardHandler7_beta_1.java b/areashop-worldguard-7_beta_1/src/main/java/me/wiefferink/areashop/handlers/WorldGuardHandler7_beta_1.java new file mode 100644 index 0000000..7edd4bf --- /dev/null +++ b/areashop-worldguard-7_beta_1/src/main/java/me/wiefferink/areashop/handlers/WorldGuardHandler7_beta_1.java @@ -0,0 +1,40 @@ +package me.wiefferink.areashop.handlers; + +import com.sk89q.worldedit.bukkit.BukkitAdapter; +import com.sk89q.worldguard.WorldGuard; +import com.sk89q.worldguard.protection.flags.Flag; +import com.sk89q.worldguard.protection.flags.FlagContext; +import com.sk89q.worldguard.protection.flags.Flags; +import com.sk89q.worldguard.protection.flags.InvalidFlagFormat; +import com.sk89q.worldguard.protection.flags.RegionGroup; +import com.sk89q.worldguard.protection.flags.RegionGroupFlag; +import com.sk89q.worldguard.protection.managers.RegionManager; +import me.wiefferink.areashop.interfaces.AreaShopInterface; +import org.bukkit.World; + +public class WorldGuardHandler7_beta_1 extends WorldGuardHandler6_1_3 { + + public WorldGuardHandler7_beta_1(AreaShopInterface pluginInterface) { + super(pluginInterface); + } + + @Override + public RegionManager getRegionManager(World world) { + return WorldGuard.getInstance().getPlatform().getRegionContainer().get(BukkitAdapter.adapt(world)); + } + + @Override + public Flag fuzzyMatchFlag(String flagName) { + return Flags.fuzzyMatchFlag(WorldGuard.getInstance().getFlagRegistry(), flagName); + } + + @Override + public V parseFlagInput(Flag flag, String input) throws InvalidFlagFormat { + return flag.parseInput(FlagContext.create().setInput(input).build()); + } + + @Override + public RegionGroup parseFlagGroupInput(RegionGroupFlag flag, String input) throws InvalidFlagFormat { + return flag.parseInput(FlagContext.create().setInput(input).build()); + } +} diff --git a/areashop-worldguard-7_beta_2/.gitignore b/areashop-worldguard-7_beta_2/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/areashop-worldguard-7_beta_2/.gitignore @@ -0,0 +1 @@ +/target diff --git a/areashop-worldguard-7_beta_2/pom.xml b/areashop-worldguard-7_beta_2/pom.xml new file mode 100644 index 0000000..9bcf4a4 --- /dev/null +++ b/areashop-worldguard-7_beta_2/pom.xml @@ -0,0 +1,61 @@ + + 4.0.0 + areashop-worldguard-7_beta_2 + jar + AreaShop WorldGuard 7_beta_2 + latest + + + me.wiefferink + areashop-parent + parent + + + + + org.bukkit + craftbukkit + 1.13-R0.1-SNAPSHOT + jar + true + + + + com.sk89q + worldedit + system + any + ${project.basedir}/../dependencies/worldedit-bukkit-7.0.0-beta-04.jar + + + + com.sk89q + worldguard + system + any + ${project.basedir}/../dependencies/worldguard-legacy-7.0.0-beta-02.jar + + + me.wiefferink + areashop-worldguard-6 + latest + jar + provided + + + me.wiefferink + areashop-worldguard-6_1_3 + latest + jar + provided + + + + me.wiefferink + areashop-interface + latest + jar + + + diff --git a/areashop-worldguard-7_beta_2/src/main/java/me/wiefferink/areashop/handlers/WorldGuardHandler7_beta_2.java b/areashop-worldguard-7_beta_2/src/main/java/me/wiefferink/areashop/handlers/WorldGuardHandler7_beta_2.java new file mode 100644 index 0000000..d739e7b --- /dev/null +++ b/areashop-worldguard-7_beta_2/src/main/java/me/wiefferink/areashop/handlers/WorldGuardHandler7_beta_2.java @@ -0,0 +1,74 @@ +package me.wiefferink.areashop.handlers; + +import com.sk89q.worldedit.bukkit.BukkitAdapter; +import com.sk89q.worldedit.math.BlockVector2; +import com.sk89q.worldedit.math.BlockVector3; +import com.sk89q.worldguard.WorldGuard; +import com.sk89q.worldguard.protection.flags.Flag; +import com.sk89q.worldguard.protection.flags.FlagContext; +import com.sk89q.worldguard.protection.flags.Flags; +import com.sk89q.worldguard.protection.flags.InvalidFlagFormat; +import com.sk89q.worldguard.protection.flags.RegionGroup; +import com.sk89q.worldguard.protection.flags.RegionGroupFlag; +import com.sk89q.worldguard.protection.managers.RegionManager; +import com.sk89q.worldguard.protection.regions.ProtectedCuboidRegion; +import com.sk89q.worldguard.protection.regions.ProtectedRegion; +import me.wiefferink.areashop.interfaces.AreaShopInterface; +import org.bukkit.World; +import org.bukkit.util.Vector; + +import java.util.ArrayList; +import java.util.List; + +public class WorldGuardHandler7_beta_2 extends WorldGuardHandler6_1_3 { + + public WorldGuardHandler7_beta_2(AreaShopInterface pluginInterface) { + super(pluginInterface); + } + + @Override + public RegionManager getRegionManager(World world) { + return WorldGuard.getInstance().getPlatform().getRegionContainer().get(BukkitAdapter.adapt(world)); + } + + @Override + public Flag fuzzyMatchFlag(String flagName) { + return Flags.fuzzyMatchFlag(WorldGuard.getInstance().getFlagRegistry(), flagName); + } + + @Override + public V parseFlagInput(Flag flag, String input) throws InvalidFlagFormat { + return flag.parseInput(FlagContext.create().setInput(input).build()); + } + + @Override + public RegionGroup parseFlagGroupInput(RegionGroupFlag flag, String input) throws InvalidFlagFormat { + return flag.parseInput(FlagContext.create().setInput(input).build()); + } + + @Override + public Vector getMinimumPoint(ProtectedRegion region) { + BlockVector3 min = region.getMinimumPoint(); + return new Vector(min.getX(), min.getY(), min.getZ()); + } + + @Override + public Vector getMaximumPoint(ProtectedRegion region) { + BlockVector3 min = region.getMaximumPoint(); + return new Vector(min.getX(), min.getY(), min.getZ()); + } + + @Override + public List getRegionPoints(ProtectedRegion region) { + List result = new ArrayList<>(); + for (BlockVector2 point : region.getPoints()) { + result.add(new Vector(point.getX(), 0,point.getZ())); + } + return result; + } + + @Override + public ProtectedCuboidRegion createCuboidRegion(String name, Vector corner1, Vector corner2) { + return new ProtectedCuboidRegion(name, BlockVector3.at(corner1.getBlockX(), corner1.getBlockY(), corner1.getBlockZ()), BlockVector3.at(corner2.getBlockX(), corner2.getBlockY(), corner2.getBlockZ())); + } +} diff --git a/dependencies/worldedit-bukkit-7.0.0-beta-04.jar b/dependencies/worldedit-bukkit-7.0.0-beta-04.jar new file mode 100644 index 0000000..d718515 Binary files /dev/null and b/dependencies/worldedit-bukkit-7.0.0-beta-04.jar differ diff --git a/dependencies/worldguard-legacy-7.0.0-beta01.jar b/dependencies/worldguard-legacy-7.0.0-beta-01.jar similarity index 100% rename from dependencies/worldguard-legacy-7.0.0-beta01.jar rename to dependencies/worldguard-legacy-7.0.0-beta-01.jar diff --git a/dependencies/worldguard-legacy-7.0.0-beta-02.jar b/dependencies/worldguard-legacy-7.0.0-beta-02.jar new file mode 100644 index 0000000..729457b Binary files /dev/null and b/dependencies/worldguard-legacy-7.0.0-beta-02.jar differ diff --git a/pom.xml b/pom.xml index c78d431..43732b1 100644 --- a/pom.xml +++ b/pom.xml @@ -49,14 +49,16 @@ - WorldGuard 5 - WorldGuard 6 - WorldGuard 6_1_3 - WorldGuard 7 - Interfaces - WorldEdit 5 - WorldEdit 6 - WorldEdit 7 + areashop-interface + areashop-worldguard-5 + areashop-worldguard-6 + areashop-worldguard-6_1_3 + areashop-worldguard-7_beta_1 + areashop-worldguard-7_beta_2 + areashop-worldedit-5 + areashop-worldedit-6 + areashop-worldedit-7_beta_1 + areashop-worldedit-7_beta_4 AreaShop