diff --git a/pom.xml b/pom.xml
index 26f20f0..2a1d77f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,6 +4,8 @@
net.goldtreeservers
worldguardextraflags
WorldGuardExtraFlags
+ 4.0.0
+
WorldGuardExtraFlagsPlugin
@@ -18,6 +20,7 @@
+
spigot-repo
@@ -35,43 +38,46 @@
empcraft
http://ci.athion.net/job/FastAsyncWorldEdit/ws/mvn/
+
+
+ elMakers
+ http://maven.elmakers.com/repository/
+
-
-
- org.spigotmc
- spigot-api
- 1.12-R0.1-SNAPSHOT
- provided
-
-
-
- com.sk89q.worldguard
- worldguard-legacy
- 6.1.3-SNAPSHOT
- provided
-
-
- net.elseland.xikage
- MythicMobs
- 2.4.5
-
-
- com.boydti
- fawe-api
- 17.07.12-6b6f285-750-13.7.8
-
-
- net.ess3
- Essentials
- 2.13-SNAPSHOT
-
org.projectlombok
lombok
1.16.18
provided
+
+ org.spigotmc
+ spigot-api
+ 1.13-R0.1-SNAPSHOT
+ provided
+
+
+ com.sk89q.worldedit
+ worldedit
+ 7.0-SNAPSHOT
+ provided
+
+
+ com.sk89q.worldguard
+ worldguard-legacy
+ 7.0-SNAPSHOT
+ provided
+
+
+ com.boydti
+ fawe-api
+ 18.07.27-3ed2e57-1163-20.5.2
+
+
+ net.ess3
+ Essentials
+ 2.13-SNAPSHOT
+
- 3.0.4
\ No newline at end of file
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/WorldGuardExtraFlagsPlugin.java b/src/main/java/net/goldtreeservers/worldguardextraflags/WorldGuardExtraFlagsPlugin.java
index e9b934b..3fc2965 100644
--- a/src/main/java/net/goldtreeservers/worldguardextraflags/WorldGuardExtraFlagsPlugin.java
+++ b/src/main/java/net/goldtreeservers/worldguardextraflags/WorldGuardExtraFlagsPlugin.java
@@ -7,10 +7,11 @@ import org.bukkit.plugin.java.JavaPlugin;
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
+import com.sk89q.worldguard.protection.flags.registry.FlagRegistry;
import lombok.Getter;
-import net.goldtreeservers.worldguardextraflags.essentials.EssentialsUtils;
-import net.goldtreeservers.worldguardextraflags.fawe.FAWEUtils;
+import net.goldtreeservers.worldguardextraflags.essentials.EssentialsHelper;
+import net.goldtreeservers.worldguardextraflags.fawe.FAWEHelper;
import net.goldtreeservers.worldguardextraflags.flags.Flags;
import net.goldtreeservers.worldguardextraflags.listeners.BlockListener;
import net.goldtreeservers.worldguardextraflags.listeners.EntityListener;
@@ -18,7 +19,6 @@ import net.goldtreeservers.worldguardextraflags.listeners.EntityListenerOnePoint
import net.goldtreeservers.worldguardextraflags.listeners.PlayerListener;
import net.goldtreeservers.worldguardextraflags.listeners.WorldEditListener;
import net.goldtreeservers.worldguardextraflags.listeners.WorldListener;
-import net.goldtreeservers.worldguardextraflags.mb.MythicMobsUtils;
import net.goldtreeservers.worldguardextraflags.utils.WorldUtils;
import net.goldtreeservers.worldguardextraflags.wg.handlers.BlockedEffectsFlagHandler;
import net.goldtreeservers.worldguardextraflags.wg.handlers.CommandOnEntryFlagHandler;
@@ -33,17 +33,20 @@ import net.goldtreeservers.worldguardextraflags.wg.handlers.PlaySoundsFlagHandle
import net.goldtreeservers.worldguardextraflags.wg.handlers.TeleportOnEntryFlagHandler;
import net.goldtreeservers.worldguardextraflags.wg.handlers.TeleportOnExitFlagHandler;
import net.goldtreeservers.worldguardextraflags.wg.handlers.WalkSpeedFlagHandler;
+import net.goldtreeservers.worldguardextraflags.wg.legacy.WorldGuardCommunicator;
+import net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers.SessionManagerWrapper;
public class WorldGuardExtraFlagsPlugin extends JavaPlugin
{
@Getter private static WorldGuardExtraFlagsPlugin plugin;
- @Getter private static WorldGuardPlugin worldGuardPlugin;
- @Getter private static WorldEditPlugin worldEditPlugin;
+ @Getter private WorldGuardPlugin worldGuardPlugin;
+ @Getter private WorldEditPlugin worldEditPlugin;
+
+ @Getter private WorldGuardCommunicator worldGuardCommunicator;
- @Getter private static boolean essentialsPluginEnabled;
- @Getter private static boolean mythicMobsPluginEnabled;
- @Getter private static boolean fastAsyncWorldEditPluginEnabled;
+ @Getter private EssentialsHelper essentialsHelper;
+ @Getter private FAWEHelper faweHelper;
public WorldGuardExtraFlagsPlugin()
{
@@ -53,38 +56,56 @@ public class WorldGuardExtraFlagsPlugin extends JavaPlugin
@Override
public void onLoad()
{
- WorldGuardExtraFlagsPlugin.worldEditPlugin = (WorldEditPlugin)this.getServer().getPluginManager().getPlugin("WorldEdit");
+ this.worldEditPlugin = (WorldEditPlugin)this.getServer().getPluginManager().getPlugin("WorldEdit");
+ this.worldGuardPlugin = (WorldGuardPlugin)this.getServer().getPluginManager().getPlugin("WorldGuard");
- WorldGuardExtraFlagsPlugin.worldGuardPlugin = (WorldGuardPlugin)this.getServer().getPluginManager().getPlugin("WorldGuard");
- WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(Flags.TELEPORT_ON_ENTRY);
- WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(Flags.TELEPORT_ON_EXIT);
- WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(Flags.COMMAND_ON_ENTRY);
- WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(Flags.COMMAND_ON_EXIT);
- WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(Flags.CONSOLE_COMMAND_ON_ENTRY);
- WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(Flags.CONSOLE_COMMAND_ON_EXIT);
- WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(Flags.WALK_SPEED);
- WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(Flags.KEEP_INVENTORY);
- WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(Flags.KEEP_EXP);
- WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(Flags.CHAT_PREFIX);
- WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(Flags.CHAT_SUFFIX);
- WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(Flags.BLOCKED_EFFECTS);
- WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(Flags.GODMODE);
- WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(Flags.RESPAWN_LOCATION);
- WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(Flags.WORLDEDIT);
- WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(Flags.GIVE_EFFECTS);
- WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(Flags.FLY);
- WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(Flags.PLAY_SOUNDS);
- WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(Flags.MYTHICMOB_EGGS);
- WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(Flags.FROSTWALKER);
- WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(Flags.NETHER_PORTALS);
- WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(Flags.ALLOW_BLOCK_PLACE);
- WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(Flags.DENY_BLOCK_PLACE);
- WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(Flags.ALLOW_BLOCK_BREAK);
- WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(Flags.DENY_BLOCK_BREAK);
- WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(Flags.GLIDE);
- WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(Flags.CHUNK_UNLOAD);
- WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(Flags.ITEM_DURABILITY);
- WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(Flags.JOIN_LOCATION);
+ this.worldGuardCommunicator = WorldGuardCommunicator.create();
+ if (this.worldGuardCommunicator == null)
+ {
+ throw new RuntimeException("Unsupported WorldGuard version: " + this.worldGuardPlugin.getDescription().getVersion());
+ }
+
+ try
+ {
+ this.worldGuardCommunicator.onLoad();
+ }
+ catch (Exception e)
+ {
+ this.getServer().getPluginManager().disablePlugin(this);
+
+ throw new RuntimeException("Failed to load WorldGuard communicator", e);
+ }
+
+ FlagRegistry flagRegistry = this.worldGuardCommunicator.getFlagRegistry();
+ flagRegistry.register(Flags.TELEPORT_ON_ENTRY);
+ flagRegistry.register(Flags.TELEPORT_ON_EXIT);
+ flagRegistry.register(Flags.COMMAND_ON_ENTRY);
+ flagRegistry.register(Flags.COMMAND_ON_EXIT);
+ flagRegistry.register(Flags.CONSOLE_COMMAND_ON_ENTRY);
+ flagRegistry.register(Flags.CONSOLE_COMMAND_ON_EXIT);
+ flagRegistry.register(Flags.WALK_SPEED);
+ flagRegistry.register(Flags.KEEP_INVENTORY);
+ flagRegistry.register(Flags.KEEP_EXP);
+ flagRegistry.register(Flags.CHAT_PREFIX);
+ flagRegistry.register(Flags.CHAT_SUFFIX);
+ flagRegistry.register(Flags.BLOCKED_EFFECTS);
+ flagRegistry.register(Flags.GODMODE);
+ flagRegistry.register(Flags.RESPAWN_LOCATION);
+ flagRegistry.register(Flags.WORLDEDIT);
+ flagRegistry.register(Flags.GIVE_EFFECTS);
+ flagRegistry.register(Flags.FLY);
+ flagRegistry.register(Flags.PLAY_SOUNDS);
+ flagRegistry.register(Flags.MYTHICMOB_EGGS);
+ flagRegistry.register(Flags.FROSTWALKER);
+ flagRegistry.register(Flags.NETHER_PORTALS);
+ flagRegistry.register(Flags.ALLOW_BLOCK_PLACE);
+ flagRegistry.register(Flags.DENY_BLOCK_PLACE);
+ flagRegistry.register(Flags.ALLOW_BLOCK_BREAK);
+ flagRegistry.register(Flags.DENY_BLOCK_BREAK);
+ flagRegistry.register(Flags.GLIDE);
+ flagRegistry.register(Flags.CHUNK_UNLOAD);
+ flagRegistry.register(Flags.ITEM_DURABILITY);
+ flagRegistry.register(Flags.JOIN_LOCATION);
//Soft dependencies, due to some compatibility issues or add flags related to a plugin
try
@@ -92,27 +113,10 @@ public class WorldGuardExtraFlagsPlugin extends JavaPlugin
Plugin essentialsPlugin = WorldGuardExtraFlagsPlugin.getPlugin().getServer().getPluginManager().getPlugin("Essentials");
if (essentialsPlugin != null)
{
- EssentialsUtils.onLoad(essentialsPlugin);
-
- WorldGuardExtraFlagsPlugin.essentialsPluginEnabled = true;
+ this.essentialsHelper = new EssentialsHelper(this, essentialsPlugin);
}
}
- catch(Throwable ex)
- {
-
- }
-
- try
- {
- Plugin mythicMobsPlugin = this.getServer().getPluginManager().getPlugin("MythicMobs");
- if (mythicMobsPlugin != null)
- {
- MythicMobsUtils.onLoad(mythicMobsPlugin);
-
- WorldGuardExtraFlagsPlugin.mythicMobsPluginEnabled = true;
- }
- }
- catch(Throwable ex)
+ catch(Throwable ignore)
{
}
@@ -122,12 +126,10 @@ public class WorldGuardExtraFlagsPlugin extends JavaPlugin
Plugin fastAsyncWorldEditPlugin = this.getServer().getPluginManager().getPlugin("FastAsyncWorldEdit");
if (fastAsyncWorldEditPlugin != null)
{
- FAWEUtils.onLoad(fastAsyncWorldEditPlugin);
-
- WorldGuardExtraFlagsPlugin.fastAsyncWorldEditPluginEnabled = true;
+ this.faweHelper = new FAWEHelper(this, fastAsyncWorldEditPlugin);
}
}
- catch(Throwable ex)
+ catch(Throwable ignore)
{
}
@@ -136,30 +138,49 @@ public class WorldGuardExtraFlagsPlugin extends JavaPlugin
@Override
public void onEnable()
{
- WorldGuardExtraFlagsPlugin.worldGuardPlugin.getSessionManager().registerHandler(TeleportOnEntryFlagHandler.FACTORY, null);
- WorldGuardExtraFlagsPlugin.worldGuardPlugin.getSessionManager().registerHandler(TeleportOnExitFlagHandler.FACTORY, null);
- WorldGuardExtraFlagsPlugin.worldGuardPlugin.getSessionManager().registerHandler(CommandOnEntryFlagHandler.FACTORY, null);
- WorldGuardExtraFlagsPlugin.worldGuardPlugin.getSessionManager().registerHandler(CommandOnExitFlagHandler.FACTORY, null);
- WorldGuardExtraFlagsPlugin.worldGuardPlugin.getSessionManager().registerHandler(ConsoleCommandOnEntryFlagHandler.FACTORY, null);
- WorldGuardExtraFlagsPlugin.worldGuardPlugin.getSessionManager().registerHandler(ConsoleCommandOnExitFlagHandler.FACTORY, null);
- WorldGuardExtraFlagsPlugin.worldGuardPlugin.getSessionManager().registerHandler(WalkSpeedFlagHandler.FACTORY, null);
- WorldGuardExtraFlagsPlugin.worldGuardPlugin.getSessionManager().registerHandler(BlockedEffectsFlagHandler.FACTORY, null);
- WorldGuardExtraFlagsPlugin.worldGuardPlugin.getSessionManager().registerHandler(GodmodeFlagHandler.FACTORY, null);
- WorldGuardExtraFlagsPlugin.worldGuardPlugin.getSessionManager().registerHandler(GiveEffectsFlagHandler.FACTORY, null);
- WorldGuardExtraFlagsPlugin.worldGuardPlugin.getSessionManager().registerHandler(FlyFlagHandler.FACTORY, null);
- WorldGuardExtraFlagsPlugin.worldGuardPlugin.getSessionManager().registerHandler(PlaySoundsFlagHandler.FACTORY, null);
- WorldGuardExtraFlagsPlugin.worldGuardPlugin.getSessionManager().registerHandler(GlideFlagHandler.FACTORY, null);
+ if (this.worldGuardCommunicator == null)
+ {
+ this.getServer().getPluginManager().disablePlugin(this);
+
+ return;
+ }
- this.getServer().getPluginManager().registerEvents(new PlayerListener(), this);
- this.getServer().getPluginManager().registerEvents(new BlockListener(), this);
- this.getServer().getPluginManager().registerEvents(new EntityListener(), this);
- this.getServer().getPluginManager().registerEvents(new WorldListener(), this);
+ try
+ {
+ this.worldGuardCommunicator.onEnable();
+ }
+ catch (Exception e)
+ {
+ this.getServer().getPluginManager().disablePlugin(this);
+
+ throw new RuntimeException("Failed to enable WorldGuard communicator", e);
+ }
+
+ SessionManagerWrapper sessionManager = this.worldGuardCommunicator.getSessionManager();
+ sessionManager.registerHandler(TeleportOnEntryFlagHandler.FACTORY);
+ sessionManager.registerHandler(TeleportOnExitFlagHandler.FACTORY);
+ sessionManager.registerHandler(CommandOnEntryFlagHandler.FACTORY);
+ sessionManager.registerHandler(CommandOnExitFlagHandler.FACTORY);
+ sessionManager.registerHandler(ConsoleCommandOnEntryFlagHandler.FACTORY);
+ sessionManager.registerHandler(ConsoleCommandOnExitFlagHandler.FACTORY);
+ sessionManager.registerHandler(WalkSpeedFlagHandler.FACTORY);
+ sessionManager.registerHandler(BlockedEffectsFlagHandler.FACTORY);
+ sessionManager.registerHandler(GodmodeFlagHandler.FACTORY);
+ sessionManager.registerHandler(GiveEffectsFlagHandler.FACTORY);
+ sessionManager.registerHandler(FlyFlagHandler.FACTORY);
+ sessionManager.registerHandler(PlaySoundsFlagHandler.FACTORY);
+ sessionManager.registerHandler(GlideFlagHandler.FACTORY);
+
+ this.getServer().getPluginManager().registerEvents(new PlayerListener(this), this);
+ this.getServer().getPluginManager().registerEvents(new BlockListener(this), this);
+ this.getServer().getPluginManager().registerEvents(new EntityListener(this), this);
+ this.getServer().getPluginManager().registerEvents(new WorldListener(this), this);
try
{
if (EntityToggleGlideEvent.class != null) //LOL, Just making it look nice xD
{
- this.getServer().getPluginManager().registerEvents(new EntityListenerOnePointNine(), this);
+ this.getServer().getPluginManager().registerEvents(new EntityListenerOnePointNine(this), this);
}
}
catch(NoClassDefFoundError ignored)
@@ -167,18 +188,18 @@ public class WorldGuardExtraFlagsPlugin extends JavaPlugin
}
- if (WorldGuardExtraFlagsPlugin.isFastAsyncWorldEditPluginEnabled())
+ if (this.faweHelper != null)
{
- FAWEUtils.onEnable();
+ this.faweHelper.onEnable();
}
else
{
- WorldGuardExtraFlagsPlugin.getWorldEditPlugin().getWorldEdit().getEventBus().register(new WorldEditListener());
+ this.worldEditPlugin.getWorldEdit().getEventBus().register(new WorldEditListener());
}
- if (WorldGuardExtraFlagsPlugin.isEssentialsPluginEnabled())
+ if (this.essentialsHelper != null)
{
- EssentialsUtils.onEnable();
+ this.essentialsHelper.onEnable();
}
for(World world : this.getServer().getWorlds())
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/essentials/EssentialsHelper.java b/src/main/java/net/goldtreeservers/worldguardextraflags/essentials/EssentialsHelper.java
new file mode 100644
index 0000000..1961305
--- /dev/null
+++ b/src/main/java/net/goldtreeservers/worldguardextraflags/essentials/EssentialsHelper.java
@@ -0,0 +1,27 @@
+package net.goldtreeservers.worldguardextraflags.essentials;
+
+import org.bukkit.plugin.Plugin;
+
+import com.earth2me.essentials.Essentials;
+
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
+import net.goldtreeservers.worldguardextraflags.listeners.EssentialsListener;
+
+@RequiredArgsConstructor
+public class EssentialsHelper
+{
+ @Getter private final WorldGuardExtraFlagsPlugin plugin;
+ @Getter private final Essentials essentialsPlugin;
+
+ public EssentialsHelper(WorldGuardExtraFlagsPlugin plugin, Plugin essentialsPlugin)
+ {
+ this(plugin, (Essentials)essentialsPlugin);
+ }
+
+ public void onEnable()
+ {
+ this.plugin.getServer().getPluginManager().registerEvents(new EssentialsListener(this.plugin, this.essentialsPlugin), this.plugin);
+ }
+}
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/essentials/EssentialsUtils.java b/src/main/java/net/goldtreeservers/worldguardextraflags/essentials/EssentialsUtils.java
deleted file mode 100644
index bec5382..0000000
--- a/src/main/java/net/goldtreeservers/worldguardextraflags/essentials/EssentialsUtils.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package net.goldtreeservers.worldguardextraflags.essentials;
-
-import org.bukkit.plugin.Plugin;
-
-import com.earth2me.essentials.Essentials;
-
-import lombok.Getter;
-import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
-import net.goldtreeservers.worldguardextraflags.listeners.EssentialsListener;
-
-public class EssentialsUtils
-{
- @Getter private static Essentials plugin;
-
- public static void onLoad(Plugin essentialsPlugin)
- {
- EssentialsUtils.plugin = (Essentials)essentialsPlugin;
- }
-
- public static void onEnable()
- {
- WorldGuardExtraFlagsPlugin.getPlugin().getServer().getPluginManager().registerEvents(new EssentialsListener(), WorldGuardExtraFlagsPlugin.getPlugin());
- }
-}
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/fawe/FAWEHelper.java b/src/main/java/net/goldtreeservers/worldguardextraflags/fawe/FAWEHelper.java
new file mode 100644
index 0000000..b3c9166
--- /dev/null
+++ b/src/main/java/net/goldtreeservers/worldguardextraflags/fawe/FAWEHelper.java
@@ -0,0 +1,21 @@
+package net.goldtreeservers.worldguardextraflags.fawe;
+
+import org.bukkit.plugin.Plugin;
+
+import com.boydti.fawe.FaweAPI;
+
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
+
+@RequiredArgsConstructor
+public class FAWEHelper
+{
+ @Getter private final WorldGuardExtraFlagsPlugin plugin;
+ @Getter private final Plugin fawePlugin;
+
+ public void onEnable()
+ {
+ FaweAPI.addMaskManager(new FaweWorldEditFlagMaskManager(this.plugin));
+ }
+}
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/fawe/FAWEUtils.java b/src/main/java/net/goldtreeservers/worldguardextraflags/fawe/FAWEUtils.java
deleted file mode 100644
index 7706839..0000000
--- a/src/main/java/net/goldtreeservers/worldguardextraflags/fawe/FAWEUtils.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package net.goldtreeservers.worldguardextraflags.fawe;
-
-import org.bukkit.plugin.Plugin;
-
-import com.boydti.fawe.FaweAPI;
-
-import lombok.Getter;
-
-public class FAWEUtils
-{
- @Getter private static Plugin plugin;
-
- public static void onLoad(Plugin plugin)
- {
- FAWEUtils.plugin = plugin;
- }
-
- public static void onEnable()
- {
- FaweAPI.addMaskManager(new FaweWorldEditFlagMaskManager());
- }
-}
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/fawe/FaweWorldEditFlagMaskManager.java b/src/main/java/net/goldtreeservers/worldguardextraflags/fawe/FaweWorldEditFlagMaskManager.java
index dd0ff8a..ed87c91 100644
--- a/src/main/java/net/goldtreeservers/worldguardextraflags/fawe/FaweWorldEditFlagMaskManager.java
+++ b/src/main/java/net/goldtreeservers/worldguardextraflags/fawe/FaweWorldEditFlagMaskManager.java
@@ -6,27 +6,30 @@ import org.bukkit.entity.Player;
import com.boydti.fawe.object.FawePlayer;
import com.boydti.fawe.regions.FaweMask;
import com.boydti.fawe.regions.FaweMaskManager;
-import com.sk89q.worldedit.BlockVector;
import com.sk89q.worldguard.LocalPlayer;
import com.sk89q.worldguard.protection.ApplicableRegionSet;
import com.sk89q.worldguard.protection.flags.StateFlag.State;
-import com.sk89q.worldguard.protection.managers.RegionManager;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
import net.goldtreeservers.worldguardextraflags.flags.Flags;
+import net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers.RegionManagerWrapper;
public class FaweWorldEditFlagMaskManager extends FaweMaskManager
{
- public FaweWorldEditFlagMaskManager()
+ private final WorldGuardExtraFlagsPlugin plugin;
+
+ public FaweWorldEditFlagMaskManager(WorldGuardExtraFlagsPlugin plugin)
{
- super("WorldGuardExtraFlags");
+ super(plugin.getName());
+
+ this.plugin = plugin;
}
public ProtectedRegion getRegion(Player player, Location loc)
{
- final com.sk89q.worldguard.LocalPlayer localplayer = WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().wrapPlayer(player);
- RegionManager manager = WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getRegionManager(player.getWorld());
+ final com.sk89q.worldguard.LocalPlayer localplayer = this.plugin.getWorldGuardCommunicator().wrapPlayer(player);
+ RegionManagerWrapper manager = this.plugin.getWorldGuardCommunicator().getRegionContainer().get(player.getWorld());
final ProtectedRegion global = manager.getRegion("__global__");
if (global != null && !isDenied(localplayer, global))
{
@@ -52,7 +55,9 @@ public class FaweWorldEditFlagMaskManager extends FaweMaskManager
@Override
public FaweMask getMask(FawePlayer fawePlayer)
{
- final Player player = fawePlayer.parent;
+ return null; //Problems here due to FaweMask using LocalWorld
+
+ /*final Player player = fawePlayer.parent;
final Location location = player.getLocation();
final ProtectedRegion myregion = this.getRegion(player, location);
@@ -83,6 +88,6 @@ public class FaweWorldEditFlagMaskManager extends FaweMaskManager
else
{
return null;
- }
+ }*/
}
}
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/listeners/BlockListener.java b/src/main/java/net/goldtreeservers/worldguardextraflags/listeners/BlockListener.java
index 58520ba..2596363 100644
--- a/src/main/java/net/goldtreeservers/worldguardextraflags/listeners/BlockListener.java
+++ b/src/main/java/net/goldtreeservers/worldguardextraflags/listeners/BlockListener.java
@@ -18,13 +18,18 @@ import com.sk89q.worldguard.bukkit.event.block.PlaceBlockEvent;
import com.sk89q.worldguard.protection.ApplicableRegionSet;
import com.sk89q.worldguard.protection.flags.StateFlag.State;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
import net.goldtreeservers.worldguardextraflags.flags.Flags;
import net.goldtreeservers.worldguardextraflags.utils.SupportedFeatures;
import net.goldtreeservers.worldguardextraflags.wg.WorldGuardUtils;
+@RequiredArgsConstructor
public class BlockListener implements Listener
{
+ @Getter private final WorldGuardExtraFlagsPlugin plugin;
+
@EventHandler(ignoreCancelled = true)
public void onEntityBlockFormEvent(EntityBlockFormEvent event)
{
@@ -33,7 +38,7 @@ public class BlockListener implements Listener
BlockState newState = event.getNewState();
if (newState.getType() == Material.FROSTED_ICE)
{
- ApplicableRegionSet regions = WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getRegionContainer().createQuery().getApplicableRegions(newState.getLocation());
+ ApplicableRegionSet regions = this.plugin.getWorldGuardCommunicator().getRegionContainer().createQuery().getApplicableRegions(newState.getLocation());
Entity entity = event.getEntity();
if (entity instanceof Player)
@@ -68,7 +73,7 @@ public class BlockListener implements Listener
for(Block block : event.getBlocks())
{
- ApplicableRegionSet regions = WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getRegionContainer().createQuery().getApplicableRegions(block.getLocation());
+ ApplicableRegionSet regions = this.plugin.getWorldGuardCommunicator().getRegionContainer().createQuery().getApplicableRegions(block.getLocation());
Set state = WorldGuardUtils.queryValue(player, player.getWorld(), regions.getRegions(), Flags.ALLOW_BLOCK_PLACE);
if (state != null && state.contains(block.getType()))
@@ -106,7 +111,7 @@ public class BlockListener implements Listener
for(Block block : event.getBlocks())
{
- ApplicableRegionSet regions = WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getRegionContainer().createQuery().getApplicableRegions(block.getLocation());
+ ApplicableRegionSet regions = this.plugin.getWorldGuardCommunicator().getRegionContainer().createQuery().getApplicableRegions(block.getLocation());
Set state = WorldGuardUtils.queryValue(player, player.getWorld(), regions.getRegions(), Flags.ALLOW_BLOCK_BREAK);
if (state != null && state.contains(block.getType()))
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/listeners/EntityListener.java b/src/main/java/net/goldtreeservers/worldguardextraflags/listeners/EntityListener.java
index 832ba11..6e832dc 100644
--- a/src/main/java/net/goldtreeservers/worldguardextraflags/listeners/EntityListener.java
+++ b/src/main/java/net/goldtreeservers/worldguardextraflags/listeners/EntityListener.java
@@ -8,11 +8,16 @@ import org.bukkit.event.world.PortalCreateEvent;
import com.sk89q.worldguard.protection.ApplicableRegionSet;
import com.sk89q.worldguard.protection.flags.StateFlag.State;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
import net.goldtreeservers.worldguardextraflags.flags.Flags;
+@RequiredArgsConstructor
public class EntityListener implements Listener
{
+ @Getter private final WorldGuardExtraFlagsPlugin plugin;
+
@EventHandler(ignoreCancelled = true)
public void onPortalCreateEvent(PortalCreateEvent event)
{
@@ -20,7 +25,7 @@ public class EntityListener implements Listener
{
//Unable to get the player who created it....
- ApplicableRegionSet regions = WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getRegionContainer().createQuery().getApplicableRegions(block.getLocation());
+ ApplicableRegionSet regions = this.plugin.getWorldGuardCommunicator().getRegionContainer().createQuery().getApplicableRegions(block.getLocation());
if (regions.queryValue(null, Flags.NETHER_PORTALS) == State.DENY)
{
event.setCancelled(true);
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/listeners/EntityListenerOnePointNine.java b/src/main/java/net/goldtreeservers/worldguardextraflags/listeners/EntityListenerOnePointNine.java
index aba609f..97aefe7 100644
--- a/src/main/java/net/goldtreeservers/worldguardextraflags/listeners/EntityListenerOnePointNine.java
+++ b/src/main/java/net/goldtreeservers/worldguardextraflags/listeners/EntityListenerOnePointNine.java
@@ -3,20 +3,24 @@ package net.goldtreeservers.worldguardextraflags.listeners;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
-import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityToggleGlideEvent;
import com.sk89q.worldguard.protection.ApplicableRegionSet;
import com.sk89q.worldguard.protection.flags.StateFlag.State;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
import net.goldtreeservers.worldguardextraflags.flags.Flags;
import net.goldtreeservers.worldguardextraflags.wg.WorldGuardUtils;
+@RequiredArgsConstructor
public class EntityListenerOnePointNine implements Listener
{
- @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
+ @Getter private final WorldGuardExtraFlagsPlugin plugin;
+
+ @EventHandler(ignoreCancelled = true)
public void onEntityToggleGlideEvent(EntityToggleGlideEvent event)
{
Entity entity = event.getEntity();
@@ -24,9 +28,9 @@ public class EntityListenerOnePointNine implements Listener
{
Player player = (Player)entity;
- ApplicableRegionSet regions = WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getRegionContainer().createQuery().getApplicableRegions(player.getLocation());
+ ApplicableRegionSet regions = this.plugin.getWorldGuardCommunicator().getRegionContainer().createQuery().getApplicableRegions(player.getLocation());
- State state = regions.queryValue(WorldGuardUtils.wrapPlayer(player), Flags.GLIDE);
+ State state = WorldGuardUtils.queryState(player, player.getWorld(), regions.getRegions(), Flags.GLIDE);
if (state != null)
{
event.setCancelled(true);
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/listeners/EssentialsListener.java b/src/main/java/net/goldtreeservers/worldguardextraflags/listeners/EssentialsListener.java
index c39b54f..8d8308d 100644
--- a/src/main/java/net/goldtreeservers/worldguardextraflags/listeners/EssentialsListener.java
+++ b/src/main/java/net/goldtreeservers/worldguardextraflags/listeners/EssentialsListener.java
@@ -1,37 +1,63 @@
package net.goldtreeservers.worldguardextraflags.listeners;
+import org.bukkit.GameMode;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
+import org.bukkit.event.player.PlayerChangedWorldEvent;
+import com.earth2me.essentials.Essentials;
import com.sk89q.worldguard.protection.ApplicableRegionSet;
import com.sk89q.worldguard.protection.flags.StateFlag.State;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
import net.ess3.api.IUser;
import net.ess3.api.events.GodStatusChangeEvent;
import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
import net.goldtreeservers.worldguardextraflags.flags.Flags;
import net.goldtreeservers.worldguardextraflags.wg.WorldGuardUtils;
+import net.goldtreeservers.worldguardextraflags.wg.handlers.FlyFlagHandler;
import net.goldtreeservers.worldguardextraflags.wg.handlers.GodmodeFlagHandler;
+@RequiredArgsConstructor
public class EssentialsListener implements Listener
{
+ @Getter private final WorldGuardExtraFlagsPlugin plugin;
+ @Getter private final Essentials essentialsPlugin;
+
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onGodStatusChangeEvent(GodStatusChangeEvent event)
{
IUser user = event.getAffected();
Player player = user.getBase();
- ApplicableRegionSet regions = WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getRegionContainer().createQuery().getApplicableRegions(player.getLocation());
+ ApplicableRegionSet regions = this.plugin.getWorldGuardCommunicator().getRegionContainer().createQuery().getApplicableRegions(player.getLocation());
State state = WorldGuardUtils.queryState(player, player.getWorld(), regions.getRegions(), Flags.GODMODE);
if (state != null)
{
- if (WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getSessionManager().get(player).getHandler(GodmodeFlagHandler.class).getIsGodmodeEnabled() != null)
+ if (this.plugin.getWorldGuardCommunicator().getSessionManager().get(player).getHandler(GodmodeFlagHandler.class).getIsGodmodeEnabled() != null)
{
event.setCancelled(true);
}
}
}
+
+ @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
+ public void onPlayerChangedWorldEvent(PlayerChangedWorldEvent event)
+ {
+ Player player = event.getPlayer();
+
+ if (player.getGameMode() != GameMode.CREATIVE && !this.essentialsPlugin.getUser(player).isAuthorized("essentials.fly"))
+ {
+ //Essentials now turns off flight, fuck him
+ Boolean value = this.plugin.getWorldGuardCommunicator().getSessionManager().get(player).getHandler(FlyFlagHandler.class).getCurrentValue();
+ if (value != null)
+ {
+ player.setAllowFlight(value);
+ }
+ }
+ }
}
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/listeners/PlayerListener.java b/src/main/java/net/goldtreeservers/worldguardextraflags/listeners/PlayerListener.java
index 5a6625e..df93c93 100644
--- a/src/main/java/net/goldtreeservers/worldguardextraflags/listeners/PlayerListener.java
+++ b/src/main/java/net/goldtreeservers/worldguardextraflags/listeners/PlayerListener.java
@@ -1,6 +1,5 @@
package net.goldtreeservers.worldguardextraflags.listeners;
-import org.bukkit.GameMode;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
@@ -8,7 +7,6 @@ import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.player.AsyncPlayerChatEvent;
-import org.bukkit.event.player.PlayerChangedWorldEvent;
import org.bukkit.event.player.PlayerGameModeChangeEvent;
import org.bukkit.event.player.PlayerItemConsumeEvent;
import org.bukkit.event.player.PlayerItemDamageEvent;
@@ -21,26 +19,29 @@ import org.bukkit.potion.Potion;
import org.bukkit.scheduler.BukkitRunnable;
import org.spigotmc.event.player.PlayerSpawnLocationEvent;
-import com.sk89q.worldedit.Location;
-import com.sk89q.worldedit.bukkit.BukkitUtil;
import com.sk89q.worldguard.protection.ApplicableRegionSet;
import com.sk89q.worldguard.protection.flags.StateFlag.State;
import com.sk89q.worldguard.session.Session;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
-import net.goldtreeservers.worldguardextraflags.essentials.EssentialsUtils;
import net.goldtreeservers.worldguardextraflags.flags.Flags;
+import net.goldtreeservers.worldguardextraflags.we.WorldEditUtils;
import net.goldtreeservers.worldguardextraflags.wg.WorldGuardUtils;
import net.goldtreeservers.worldguardextraflags.wg.handlers.FlyFlagHandler;
import net.goldtreeservers.worldguardextraflags.wg.handlers.GiveEffectsFlagHandler;
-@SuppressWarnings("deprecation")
+@RequiredArgsConstructor
public class PlayerListener implements Listener
{
+ @Getter private final WorldGuardExtraFlagsPlugin plugin;
+
@EventHandler(priority = EventPriority.MONITOR)
public void onPlayerTeleportEvent(PlayerTeleportEvent event)
{
Player player = event.getPlayer();
+
player.removeMetadata(WorldGuardUtils.PREVENT_TELEPORT_LOOP_META, WorldGuardExtraFlagsPlugin.getPlugin());
}
@@ -49,7 +50,7 @@ public class PlayerListener implements Listener
{
Player player = event.getEntity();
- ApplicableRegionSet regions = WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getRegionContainer().createQuery().getApplicableRegions(player.getLocation());
+ ApplicableRegionSet regions = this.plugin.getWorldGuardCommunicator().getRegionContainer().createQuery().getApplicableRegions(player.getLocation());
Boolean keepInventory = WorldGuardUtils.queryValue(player, player.getWorld(), regions.getRegions(), Flags.KEEP_INVENTORY);
if (Boolean.TRUE.equals(keepInventory))
@@ -71,7 +72,7 @@ public class PlayerListener implements Listener
{
Player player = event.getPlayer();
- ApplicableRegionSet regions = WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getRegionContainer().createQuery().getApplicableRegions(player.getLocation());
+ ApplicableRegionSet regions = this.plugin.getWorldGuardCommunicator().getRegionContainer().createQuery().getApplicableRegions(player.getLocation());
String prefix = WorldGuardUtils.queryValue(player, player.getWorld(), regions.getRegions(), Flags.CHAT_PREFIX);
String suffix = WorldGuardUtils.queryValue(player, player.getWorld(), regions.getRegions(), Flags.CHAT_SUFFIX);
@@ -92,12 +93,12 @@ public class PlayerListener implements Listener
{
Player player = event.getPlayer();
- ApplicableRegionSet regions = WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getRegionContainer().createQuery().getApplicableRegions(player.getLocation());
+ ApplicableRegionSet regions = this.plugin.getWorldGuardCommunicator().getRegionContainer().createQuery().getApplicableRegions(player.getLocation());
- Location respawnLocation = WorldGuardUtils.queryValue(player, player.getWorld(), regions.getRegions(), Flags.RESPAWN_LOCATION);
+ Object respawnLocation = WorldGuardUtils.queryValueUnchecked(player, player.getWorld(), regions.getRegions(), Flags.RESPAWN_LOCATION);
if (respawnLocation != null)
{
- event.setRespawnLocation(BukkitUtil.toLocation(respawnLocation));
+ event.setRespawnLocation(WorldEditUtils.toLocation(respawnLocation));
}
}
@@ -109,14 +110,14 @@ public class PlayerListener implements Listener
ItemMeta itemMeta = event.getItem().getItemMeta();
if (itemMeta instanceof PotionMeta)
{
- WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getSessionManager().get(player).getHandler(GiveEffectsFlagHandler.class).drinkPotion(player, Potion.fromItemStack(event.getItem()).getEffects());
+ this.plugin.getWorldGuardCommunicator().getSessionManager().get(player).getHandler(GiveEffectsFlagHandler.class).drinkPotion(player, Potion.fromItemStack(event.getItem()).getEffects());
}
else
{
Material material = event.getItem().getType();
if (material == Material.MILK_BUCKET)
{
- WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getSessionManager().get(player).getHandler(GiveEffectsFlagHandler.class).drinkMilk(player);
+ this.plugin.getWorldGuardCommunicator().getSessionManager().get(player).getHandler(GiveEffectsFlagHandler.class).drinkMilk(player);
}
}
}
@@ -126,7 +127,7 @@ public class PlayerListener implements Listener
{
Player player = event.getPlayer();
- Session wgSession = WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getSessionManager().getIfPresent(player);
+ Session wgSession = this.plugin.getWorldGuardCommunicator().getSessionManager().getIfPresent(player);
if (wgSession != null)
{
Boolean value = wgSession.getHandler(FlyFlagHandler.class).getCurrentValue();
@@ -157,80 +158,19 @@ public class PlayerListener implements Listener
private void checkFlyStatus(Player player)
{
- Boolean value = WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getSessionManager().get(player).getHandler(FlyFlagHandler.class).getCurrentValue();
+ Boolean value = this.plugin.getWorldGuardCommunicator().getSessionManager().get(player).getHandler(FlyFlagHandler.class).getCurrentValue();
if (value != null)
{
player.setAllowFlight(value);
}
}
- //Re-enable if needed and the plugin checks for cancelled events
- /*@EventHandler(priority = EventPriority.LOWEST)
- public void onPlayerInteractEvent(PlayerInteractEvent event)
- {
- if (WorldGuardExtraFlagsPlugin.isMythicMobsPluginEnabled())
- {
- Player player = event.getPlayer();
-
- if (!WorldGuardUtils.hasBypass(player))
- {
- Action action = event.getAction();
- if (action == Action.RIGHT_CLICK_AIR || action == Action.RIGHT_CLICK_BLOCK)
- {
- if (event.hasItem())
- {
- ItemStack item = event.getItem();
- if (item.getType() == Material.MONSTER_EGG)
- {
- if (item.getItemMeta().hasLore())
- {
- List lore = item.getItemMeta().getLore();
- if (lore.get(0).equals(ChatColor.DARK_GRAY + "" + ChatColor.ITALIC + "A Mythical Egg that can"))
- {
- MythicMob mm = EggManager.getMythicMobFromEgg(lore.get(2));
- if (mm != null)
- {
- ApplicableRegionSet regions = WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getRegionContainer().createQuery().getApplicableRegions(action == Action.RIGHT_CLICK_BLOCK ? event.getClickedBlock().getLocation() : player.getLocation());
- if (regions.queryValue(WorldGuardUtils.wrapPlayer(player), Flags.MYTHICMOB_EGGS) == State.DENY)
- {
- event.setCancelled(true);
- event.setUseItemInHand(Result.DENY);
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }*/
-
- @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
- public void onPlayerChangedWorldEvent(PlayerChangedWorldEvent event)
- {
- Player player = event.getPlayer();
-
- if (WorldGuardExtraFlagsPlugin.isEssentialsPluginEnabled()) //Essentials how dare u do this to me!?!
- {
- if (player.getGameMode() != GameMode.CREATIVE && !EssentialsUtils.getPlugin().getUser(player).isAuthorized("essentials.fly"))
- {
- //Essentials now turns off flight, fuck him
- Boolean value = WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getSessionManager().get(player).getHandler(FlyFlagHandler.class).getCurrentValue();
- if (value != null)
- {
- player.setAllowFlight(value);
- }
- }
- }
- }
-
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPlayerItemDamageEvent(PlayerItemDamageEvent event)
{
Player player = event.getPlayer();
- ApplicableRegionSet regions = WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getRegionContainer().createQuery().getApplicableRegions(player.getLocation());
+ ApplicableRegionSet regions = this.plugin.getWorldGuardCommunicator().getRegionContainer().createQuery().getApplicableRegions(player.getLocation());
if (WorldGuardUtils.queryState(player, player.getWorld(), regions.getRegions(), Flags.ITEM_DURABILITY) == State.DENY)
{
event.setCancelled(true);
@@ -242,12 +182,12 @@ public class PlayerListener implements Listener
{
Player player = event.getPlayer();
- ApplicableRegionSet regions = WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getRegionContainer().createQuery().getApplicableRegions(player.getLocation());
+ ApplicableRegionSet regions = this.plugin.getWorldGuardCommunicator().getRegionContainer().createQuery().getApplicableRegions(player.getLocation());
- Location location = WorldGuardUtils.queryValue(player, player.getWorld(), regions.getRegions(), Flags.JOIN_LOCATION);
+ Object location = WorldGuardUtils.queryValueUnchecked(player, player.getWorld(), regions.getRegions(), Flags.JOIN_LOCATION);
if (location != null)
{
- event.setSpawnLocation(BukkitUtil.toLocation(location));
+ event.setSpawnLocation(WorldEditUtils.toLocation(location));
}
}
@@ -256,7 +196,7 @@ public class PlayerListener implements Listener
{
Player player = event.getPlayer();
- Boolean value = WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getSessionManager().get(player).getHandler(FlyFlagHandler.class).getCurrentValue();
+ Boolean value = this.plugin.getWorldGuardCommunicator().getSessionManager().get(player).getHandler(FlyFlagHandler.class).getCurrentValue();
if (value != null)
{
player.setAllowFlight(value);
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/listeners/WorldListener.java b/src/main/java/net/goldtreeservers/worldguardextraflags/listeners/WorldListener.java
index d0c4fb5..dc73cff 100644
--- a/src/main/java/net/goldtreeservers/worldguardextraflags/listeners/WorldListener.java
+++ b/src/main/java/net/goldtreeservers/worldguardextraflags/listeners/WorldListener.java
@@ -13,12 +13,17 @@ import com.sk89q.worldguard.protection.flags.StateFlag.State;
import com.sk89q.worldguard.protection.regions.ProtectedCuboidRegion;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
import net.goldtreeservers.worldguardextraflags.flags.Flags;
import net.goldtreeservers.worldguardextraflags.utils.WorldUtils;
+@RequiredArgsConstructor
public class WorldListener implements Listener
{
+ @Getter private final WorldGuardExtraFlagsPlugin plugin;
+
@EventHandler(priority = EventPriority.MONITOR)
public void onWorldLoadEvent(WorldLoadEvent event)
{
@@ -30,7 +35,8 @@ public class WorldListener implements Listener
{
World world = event.getWorld();
Chunk chunk = event.getChunk();
- for (ProtectedRegion region : WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getRegionManager(world).getApplicableRegions(new ProtectedCuboidRegion("UnloadChunkFlagTester", new BlockVector(chunk.getX() * 16, 0, chunk.getZ() * 16), new BlockVector(chunk.getX() * 16 + 15, 256, chunk.getZ() * 16 + 15))))
+
+ for (ProtectedRegion region : this.plugin.getWorldGuardCommunicator().getRegionContainer().get(world).getApplicableRegions(new ProtectedCuboidRegion("UnloadChunkFlagTester", new BlockVector(chunk.getX() * 16, 0, chunk.getZ() * 16), new BlockVector(chunk.getX() * 16 + 15, 256, chunk.getZ() * 16 + 15))))
{
if (region.getFlag(Flags.CHUNK_UNLOAD) == State.DENY)
{
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/mb/MythicMobsUtils.java b/src/main/java/net/goldtreeservers/worldguardextraflags/mb/MythicMobsUtils.java
deleted file mode 100644
index 76ecc0a..0000000
--- a/src/main/java/net/goldtreeservers/worldguardextraflags/mb/MythicMobsUtils.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package net.goldtreeservers.worldguardextraflags.mb;
-
-import org.bukkit.plugin.Plugin;
-
-import lombok.Getter;
-import net.elseland.xikage.MythicMobs.MythicMobs;
-
-public class MythicMobsUtils
-{
- @Getter private static MythicMobs mythicMobsPlugin;
-
- public static void onLoad(Plugin mythicMobsPlugin)
- {
- MythicMobsUtils.mythicMobsPlugin = (MythicMobs)mythicMobsPlugin;
- }
-}
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/utils/WorldUtils.java b/src/main/java/net/goldtreeservers/worldguardextraflags/utils/WorldUtils.java
index c71774e..839473a 100644
--- a/src/main/java/net/goldtreeservers/worldguardextraflags/utils/WorldUtils.java
+++ b/src/main/java/net/goldtreeservers/worldguardextraflags/utils/WorldUtils.java
@@ -1,9 +1,8 @@
package net.goldtreeservers.worldguardextraflags.utils;
-import org.bukkit.Location;
import org.bukkit.World;
-import com.sk89q.worldedit.bukkit.BukkitUtil;
+import com.sk89q.worldedit.BlockVector;
import com.sk89q.worldguard.protection.flags.StateFlag.State;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
@@ -14,18 +13,18 @@ public class WorldUtils
{
public static void doUnloadChunkFlagCheck(World world)
{
- for (ProtectedRegion region : WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getRegionManager(world).getRegions().values())
+ for (ProtectedRegion region : WorldGuardExtraFlagsPlugin.getPlugin().getWorldGuardCommunicator().getRegionContainer().get(world).getRegions().values())
{
if (region.getFlag(Flags.CHUNK_UNLOAD) == State.DENY)
{
WorldGuardExtraFlagsPlugin.getPlugin().getLogger().info("Loading chunks for region " + region.getId() + " located in " + world.getName() + " due to chunk-unload flag being deny");
- Location min = BukkitUtil.toLocation(world, region.getMinimumPoint());
- Location max = BukkitUtil.toLocation(world, region.getMaximumPoint());
+ BlockVector min = region.getMinimumPoint();
+ BlockVector max = region.getMaximumPoint();
- for(int x = min.getChunk().getX(); x <= max.getChunk().getX(); x++)
+ for(int x = min.getBlockX() << 16; x <= max.getBlockX() << 16; x++)
{
- for(int z = min.getChunk().getZ(); z <= max.getChunk().getZ(); z++)
+ for(int z = max.getBlockZ() << 16; z <= max.getBlockZ() << 16; z++)
{
world.getChunkAt(x, z).load(true);
}
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/we/AbstractWorldEditFlagHandler.java b/src/main/java/net/goldtreeservers/worldguardextraflags/we/AbstractWorldEditFlagHandler.java
new file mode 100644
index 0000000..70a1ba0
--- /dev/null
+++ b/src/main/java/net/goldtreeservers/worldguardextraflags/we/AbstractWorldEditFlagHandler.java
@@ -0,0 +1,40 @@
+package net.goldtreeservers.worldguardextraflags.we;
+
+import com.sk89q.worldedit.Vector;
+import com.sk89q.worldedit.WorldEditException;
+import com.sk89q.worldedit.entity.Player;
+import com.sk89q.worldedit.extent.AbstractDelegateExtent;
+import com.sk89q.worldedit.extent.Extent;
+import com.sk89q.worldedit.world.World;
+import com.sk89q.worldedit.world.block.BlockState;
+import com.sk89q.worldedit.world.block.BlockStateHolder;
+
+import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
+
+public abstract class AbstractWorldEditFlagHandler extends AbstractDelegateExtent
+{
+ protected final org.bukkit.World world;
+ protected final org.bukkit.entity.Player player;
+
+ protected AbstractWorldEditFlagHandler(World world, Extent extent, Player player)
+ {
+ super(extent);
+
+ this.world = WorldGuardExtraFlagsPlugin.getPlugin().getServer().getWorld(world.getName());
+ this.player = WorldGuardExtraFlagsPlugin.getPlugin().getServer().getPlayer(player.getUniqueId());
+ }
+
+ public abstract boolean setBlock(Vector location, BlockState block) throws WorldEditException;
+
+ //TODO: Prebuild list
+ @Override
+ public boolean setBlock(Vector location, @SuppressWarnings("rawtypes") BlockStateHolder block) throws WorldEditException
+ {
+ if (this.setBlock(location, block.toImmutableState()))
+ {
+ return super.setBlock(location, block);
+ }
+
+ return false;
+ }
+}
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/we/WorldEditFlagHandler.java b/src/main/java/net/goldtreeservers/worldguardextraflags/we/WorldEditFlagHandler.java
index 0f20887..a7cf7b6 100644
--- a/src/main/java/net/goldtreeservers/worldguardextraflags/we/WorldEditFlagHandler.java
+++ b/src/main/java/net/goldtreeservers/worldguardextraflags/we/WorldEditFlagHandler.java
@@ -2,12 +2,10 @@ package net.goldtreeservers.worldguardextraflags.we;
import com.sk89q.worldedit.Vector;
import com.sk89q.worldedit.WorldEditException;
-import com.sk89q.worldedit.blocks.BaseBlock;
-import com.sk89q.worldedit.bukkit.BukkitUtil;
import com.sk89q.worldedit.entity.Player;
-import com.sk89q.worldedit.extent.AbstractDelegateExtent;
import com.sk89q.worldedit.extent.Extent;
import com.sk89q.worldedit.world.World;
+import com.sk89q.worldedit.world.block.BlockState;
import com.sk89q.worldguard.protection.ApplicableRegionSet;
import com.sk89q.worldguard.protection.flags.StateFlag.State;
@@ -15,29 +13,22 @@ import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
import net.goldtreeservers.worldguardextraflags.flags.Flags;
import net.goldtreeservers.worldguardextraflags.wg.WorldGuardUtils;
-public class WorldEditFlagHandler extends AbstractDelegateExtent
+public class WorldEditFlagHandler extends AbstractWorldEditFlagHandler
{
- private final org.bukkit.World world;
- private final org.bukkit.entity.Player player;
-
public WorldEditFlagHandler(World world, Extent extent, Player player)
{
- super(extent);
-
- this.world = WorldGuardExtraFlagsPlugin.getPlugin().getServer().getWorld(world.getName());
- this.player = WorldGuardExtraFlagsPlugin.getPlugin().getServer().getPlayer(player.getUniqueId());
+ super(world, extent, player);
}
-
- //TODO: Prebuild list
- @Override
- public boolean setBlock(Vector location, BaseBlock block) throws WorldEditException
+
+ @Override
+ public boolean setBlock(Vector location, BlockState block) throws WorldEditException
{
- ApplicableRegionSet regions = WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getRegionContainer().createQuery().getApplicableRegions(BukkitUtil.toLocation(this.world, location));
+ ApplicableRegionSet regions = WorldGuardExtraFlagsPlugin.getPlugin().getWorldGuardCommunicator().getRegionContainer().get(this.world).getApplicableRegions(location);
State state = WorldGuardUtils.queryState(this.player, this.world, regions.getRegions(), Flags.WORLDEDIT);
if (state != State.DENY)
{
- return super.setBlock(location, block);
+ return true;
}
return false;
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/we/WorldEditUtils.java b/src/main/java/net/goldtreeservers/worldguardextraflags/we/WorldEditUtils.java
new file mode 100644
index 0000000..eb917b4
--- /dev/null
+++ b/src/main/java/net/goldtreeservers/worldguardextraflags/we/WorldEditUtils.java
@@ -0,0 +1,45 @@
+package net.goldtreeservers.worldguardextraflags.we;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+import com.sk89q.worldedit.bukkit.BukkitAdapter;
+import com.sk89q.worldedit.util.Location;
+
+public class WorldEditUtils
+{
+ private static Method legacyToLocationMethod;
+
+ static
+ {
+ try
+ {
+ Class> bukkitUtilClass = Class.forName("com.sk89q.worldedit.bukkit.BukkitUtil");
+ Class> legacyLocationClass = Class.forName("com.sk89q.worldedit.Location");
+
+ WorldEditUtils.legacyToLocationMethod = bukkitUtilClass.getMethod("toLocation", legacyLocationClass);
+ }
+ catch (Throwable ignore)
+ {
+ }
+ }
+
+ public static org.bukkit.Location toLocation(Object location)
+ {
+ if (WorldEditUtils.legacyToLocationMethod != null)
+ {
+ try
+ {
+ return (org.bukkit.Location)WorldEditUtils.legacyToLocationMethod.invoke(null, location);
+ }
+ catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e)
+ {
+ throw new RuntimeException("Unsupported WorldEdit version");
+ }
+ }
+ else
+ {
+ return BukkitAdapter.adapt((Location)location);
+ }
+ }
+}
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/wg/WorldGuardUtils.java b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/WorldGuardUtils.java
index 5e3ac1f..808f800 100644
--- a/src/main/java/net/goldtreeservers/worldguardextraflags/wg/WorldGuardUtils.java
+++ b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/WorldGuardUtils.java
@@ -22,9 +22,9 @@ public class WorldGuardUtils
{
public static final String PREVENT_TELEPORT_LOOP_META = "WGEFP: TLP";
- public static LocalPlayer wrapPlayer(Player player)
+ private static LocalPlayer wrapPlayer(Player player)
{
- return WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().wrapPlayer(player);
+ return WorldGuardExtraFlagsPlugin.getPlugin().getWorldGuardCommunicator().wrapPlayer(player);
}
public static boolean hasBypass(Player player, World world, ProtectedRegion region, Flag> flag)
@@ -48,6 +48,12 @@ public class WorldGuardUtils
return WorldGuardUtils.createFlagValueCalculator(player, world, regions, flag).queryValue(WorldGuardUtils.wrapPlayer(player), flag);
}
+ @SuppressWarnings({ "unchecked", "rawtypes" })
+ public static Object queryValueUnchecked(Player player, World world, Set regions, Flag flag)
+ {
+ return WorldGuardUtils.createFlagValueCalculator(player, world, regions, flag).queryValue(WorldGuardUtils.wrapPlayer(player), flag);
+ }
+
public static Collection queryAllValues(Player player, World world, Set regions, Flag flag)
{
return WorldGuardUtils.createFlagValueCalculator(player, world, regions, flag).queryAllValues(WorldGuardUtils.wrapPlayer(player), flag);
@@ -66,7 +72,7 @@ public class WorldGuardUtils
NormativeOrders.sort(checkForRegions);
- ProtectedRegion global = WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getRegionManager(world).getRegion(ProtectedRegion.GLOBAL_REGION);
+ ProtectedRegion global = WorldGuardExtraFlagsPlugin.getPlugin().getWorldGuardCommunicator().getRegionContainer().get(world).getRegion(ProtectedRegion.GLOBAL_REGION);
if (global != null) //Global region can be null
{
if (WorldGuardUtils.hasBypass(player, world, global, flag)) //Lets do like this for now to reduce dublicated code
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/BlockedEffectsFlagHandler.java b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/BlockedEffectsFlagHandler.java
index 2112a5c..ccbfc1d 100644
--- a/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/BlockedEffectsFlagHandler.java
+++ b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/BlockedEffectsFlagHandler.java
@@ -21,8 +21,9 @@ import net.goldtreeservers.worldguardextraflags.flags.Flags;
import net.goldtreeservers.worldguardextraflags.flags.data.PotionEffectDetails;
import net.goldtreeservers.worldguardextraflags.utils.SupportedFeatures;
import net.goldtreeservers.worldguardextraflags.wg.WorldGuardUtils;
+import net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers.HandlerWrapper;
-public class BlockedEffectsFlagHandler extends Handler
+public class BlockedEffectsFlagHandler extends HandlerWrapper
{
public static final Factory FACTORY = new Factory();
public static class Factory extends Handler.Factory
@@ -42,13 +43,13 @@ public class BlockedEffectsFlagHandler extends Handler
this.removedEffects = new HashMap<>();
}
-
+
@Override
public void initialize(Player player, Location current, ApplicableRegionSet set)
{
this.check(player, set);
}
-
+
@Override
public boolean onCrossBoundary(Player player, Location from, Location to, ApplicableRegionSet toSet, Set entered, Set exited, MoveType moveType)
{
@@ -56,7 +57,7 @@ public class BlockedEffectsFlagHandler extends Handler
return true;
}
-
+
@Override
public void tick(Player player, ApplicableRegionSet set)
{
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/CommandOnEntryFlagHandler.java b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/CommandOnEntryFlagHandler.java
index 6842e3e..660a7b4 100644
--- a/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/CommandOnEntryFlagHandler.java
+++ b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/CommandOnEntryFlagHandler.java
@@ -16,8 +16,9 @@ import com.sk89q.worldguard.session.handler.Handler;
import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
import net.goldtreeservers.worldguardextraflags.flags.Flags;
import net.goldtreeservers.worldguardextraflags.wg.WorldGuardUtils;
+import net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers.HandlerWrapper;
-public class CommandOnEntryFlagHandler extends Handler
+public class CommandOnEntryFlagHandler extends HandlerWrapper
{
public static final Factory FACTORY = new Factory();
public static class Factory extends Handler.Factory
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/CommandOnExitFlagHandler.java b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/CommandOnExitFlagHandler.java
index 81a3650..a96e3b8 100644
--- a/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/CommandOnExitFlagHandler.java
+++ b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/CommandOnExitFlagHandler.java
@@ -16,8 +16,9 @@ import com.sk89q.worldguard.session.handler.Handler;
import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
import net.goldtreeservers.worldguardextraflags.flags.Flags;
import net.goldtreeservers.worldguardextraflags.wg.WorldGuardUtils;
+import net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers.HandlerWrapper;
-public class CommandOnExitFlagHandler extends Handler
+public class CommandOnExitFlagHandler extends HandlerWrapper
{
public static final Factory FACTORY = new Factory();
public static class Factory extends Handler.Factory
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/ConsoleCommandOnEntryFlagHandler.java b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/ConsoleCommandOnEntryFlagHandler.java
index 0d8c98d..f741ae2 100644
--- a/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/ConsoleCommandOnEntryFlagHandler.java
+++ b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/ConsoleCommandOnEntryFlagHandler.java
@@ -16,8 +16,9 @@ import com.sk89q.worldguard.session.handler.Handler;
import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
import net.goldtreeservers.worldguardextraflags.flags.Flags;
import net.goldtreeservers.worldguardextraflags.wg.WorldGuardUtils;
+import net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers.HandlerWrapper;
-public class ConsoleCommandOnEntryFlagHandler extends Handler
+public class ConsoleCommandOnEntryFlagHandler extends HandlerWrapper
{
public static final Factory FACTORY = new Factory();
public static class Factory extends Handler.Factory
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/ConsoleCommandOnExitFlagHandler.java b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/ConsoleCommandOnExitFlagHandler.java
index ae287df..51de583 100644
--- a/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/ConsoleCommandOnExitFlagHandler.java
+++ b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/ConsoleCommandOnExitFlagHandler.java
@@ -16,8 +16,9 @@ import com.sk89q.worldguard.session.handler.Handler;
import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
import net.goldtreeservers.worldguardextraflags.flags.Flags;
import net.goldtreeservers.worldguardextraflags.wg.WorldGuardUtils;
+import net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers.HandlerWrapper;
-public class ConsoleCommandOnExitFlagHandler extends Handler
+public class ConsoleCommandOnExitFlagHandler extends HandlerWrapper
{
public static final Factory FACTORY = new Factory();
public static class Factory extends Handler.Factory
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/FlyFlagHandler.java b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/FlyFlagHandler.java
index 45aca9a..9f448f5 100644
--- a/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/FlyFlagHandler.java
+++ b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/FlyFlagHandler.java
@@ -15,8 +15,9 @@ import com.sk89q.worldguard.session.handler.Handler;
import lombok.Getter;
import net.goldtreeservers.worldguardextraflags.flags.Flags;
import net.goldtreeservers.worldguardextraflags.wg.WorldGuardUtils;
+import net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers.HandlerWrapper;
-public class FlyFlagHandler extends Handler
+public class FlyFlagHandler extends HandlerWrapper
{
public static final Factory FACTORY = new Factory();
public static class Factory extends Handler.Factory
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/GiveEffectsFlagHandler.java b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/GiveEffectsFlagHandler.java
index ceb8d36..fd710fb 100644
--- a/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/GiveEffectsFlagHandler.java
+++ b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/GiveEffectsFlagHandler.java
@@ -25,8 +25,9 @@ import net.goldtreeservers.worldguardextraflags.flags.Flags;
import net.goldtreeservers.worldguardextraflags.flags.data.PotionEffectDetails;
import net.goldtreeservers.worldguardextraflags.utils.SupportedFeatures;
import net.goldtreeservers.worldguardextraflags.wg.WorldGuardUtils;
+import net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers.HandlerWrapper;
-public class GiveEffectsFlagHandler extends Handler
+public class GiveEffectsFlagHandler extends HandlerWrapper
{
public static final Factory FACTORY = new Factory();
public static class Factory extends Handler.Factory
@@ -158,7 +159,7 @@ public class GiveEffectsFlagHandler extends Handler
{
this.removedEffects.clear();
- this.check(player, WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getRegionContainer().createQuery().getApplicableRegions(player.getLocation()));
+ this.check(player, WorldGuardExtraFlagsPlugin.getPlugin().getWorldGuardCommunicator().getRegionContainer().createQuery().getApplicableRegions(player.getLocation()));
}
public void drinkPotion(Player player, Collection effects)
@@ -168,6 +169,6 @@ public class GiveEffectsFlagHandler extends Handler
this.removedEffects.put(effect.getType(), new PotionEffectDetails(System.nanoTime() + (long)(effect.getDuration() / 20D * TimeUnit.SECONDS.toNanos(1L)), effect.getAmplifier(), effect.isAmbient(), effect.hasParticles(), SupportedFeatures.isMobEffectColorsSupported() ? effect.getColor() : null));
}
- this.check(player, WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getRegionContainer().createQuery().getApplicableRegions(player.getLocation()));
+ this.check(player, WorldGuardExtraFlagsPlugin.getPlugin().getWorldGuardCommunicator().getRegionContainer().createQuery().getApplicableRegions(player.getLocation()));
}
}
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/GlideFlagHandler.java b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/GlideFlagHandler.java
index 9f15360..da6f1ce 100644
--- a/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/GlideFlagHandler.java
+++ b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/GlideFlagHandler.java
@@ -14,8 +14,9 @@ import com.sk89q.worldguard.session.handler.Handler;
import net.goldtreeservers.worldguardextraflags.flags.Flags;
import net.goldtreeservers.worldguardextraflags.wg.WorldGuardUtils;
+import net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers.HandlerWrapper;
-public class GlideFlagHandler extends Handler
+public class GlideFlagHandler extends HandlerWrapper
{
public static final Factory FACTORY = new Factory();
public static class Factory extends Handler.Factory
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/GodmodeFlagHandler.java b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/GodmodeFlagHandler.java
index 1578e03..3d964de 100644
--- a/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/GodmodeFlagHandler.java
+++ b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/GodmodeFlagHandler.java
@@ -2,8 +2,6 @@ package net.goldtreeservers.worldguardextraflags.wg.handlers;
import java.util.Set;
-import javax.annotation.Nullable;
-
import org.bukkit.Location;
import org.bukkit.entity.Player;
@@ -17,11 +15,12 @@ import com.sk89q.worldguard.session.handler.Handler;
import lombok.Getter;
import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
-import net.goldtreeservers.worldguardextraflags.essentials.EssentialsUtils;
+import net.goldtreeservers.worldguardextraflags.essentials.EssentialsHelper;
import net.goldtreeservers.worldguardextraflags.flags.Flags;
import net.goldtreeservers.worldguardextraflags.wg.WorldGuardUtils;
+import net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers.HandlerWrapper;
-public class GodmodeFlagHandler extends Handler
+public class GodmodeFlagHandler extends HandlerWrapper
{
public static final Factory FACTORY = new Factory();
public static class Factory extends Handler.Factory
@@ -68,9 +67,10 @@ public class GodmodeFlagHandler extends Handler
this.isGodmodeEnabled = null;
}
- if (WorldGuardExtraFlagsPlugin.isEssentialsPluginEnabled())
+ EssentialsHelper helper = WorldGuardExtraFlagsPlugin.getPlugin().getEssentialsHelper();
+ if (helper != null)
{
- User user = EssentialsUtils.getPlugin().getUser(player);
+ User user = helper.getEssentialsPlugin().getUser(player);
if (this.isGodmodeEnabled != null)
{
@@ -96,7 +96,6 @@ public class GodmodeFlagHandler extends Handler
}
}
- @Nullable
@Override
public State getInvincibility(Player player)
{
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/PlaySoundsFlagHandler.java b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/PlaySoundsFlagHandler.java
index 4c419bb..c921d3a 100644
--- a/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/PlaySoundsFlagHandler.java
+++ b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/PlaySoundsFlagHandler.java
@@ -21,8 +21,9 @@ import net.goldtreeservers.worldguardextraflags.flags.Flags;
import net.goldtreeservers.worldguardextraflags.flags.data.SoundData;
import net.goldtreeservers.worldguardextraflags.utils.SupportedFeatures;
import net.goldtreeservers.worldguardextraflags.wg.WorldGuardUtils;
+import net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers.HandlerWrapper;
-public class PlaySoundsFlagHandler extends Handler
+public class PlaySoundsFlagHandler extends HandlerWrapper
{
public static final Factory FACTORY = new Factory();
public static class Factory extends Handler.Factory
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/TeleportOnEntryFlagHandler.java b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/TeleportOnEntryFlagHandler.java
index 73b5459..d336aea 100644
--- a/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/TeleportOnEntryFlagHandler.java
+++ b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/TeleportOnEntryFlagHandler.java
@@ -6,7 +6,6 @@ import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.metadata.FixedMetadataValue;
-import com.sk89q.worldedit.bukkit.BukkitUtil;
import com.sk89q.worldguard.protection.ApplicableRegionSet;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
import com.sk89q.worldguard.session.MoveType;
@@ -15,9 +14,11 @@ import com.sk89q.worldguard.session.handler.Handler;
import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
import net.goldtreeservers.worldguardextraflags.flags.Flags;
+import net.goldtreeservers.worldguardextraflags.we.WorldEditUtils;
import net.goldtreeservers.worldguardextraflags.wg.WorldGuardUtils;
+import net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers.HandlerWrapper;
-public class TeleportOnEntryFlagHandler extends Handler
+public class TeleportOnEntryFlagHandler extends HandlerWrapper
{
public static final Factory FACTORY = new Factory();
public static class Factory extends Handler.Factory
@@ -34,17 +35,16 @@ public class TeleportOnEntryFlagHandler extends Handler
super(session);
}
- @SuppressWarnings("deprecation")
@Override
public boolean onCrossBoundary(Player player, Location from, Location to, ApplicableRegionSet toSet, Set entered, Set exited, MoveType moveType)
{
if (!player.hasMetadata(WorldGuardUtils.PREVENT_TELEPORT_LOOP_META))
{
- com.sk89q.worldedit.Location location = WorldGuardUtils.queryValue(player, to.getWorld(), entered, Flags.TELEPORT_ON_ENTRY);
+ Object location = WorldGuardUtils.queryValueUnchecked(player, to.getWorld(), entered, Flags.TELEPORT_ON_ENTRY);
if (location != null)
{
player.setMetadata(WorldGuardUtils.PREVENT_TELEPORT_LOOP_META, new FixedMetadataValue(WorldGuardExtraFlagsPlugin.getPlugin(), true));
- player.teleport(BukkitUtil.toLocation(location));
+ player.teleport(WorldEditUtils.toLocation(location));
return false;
}
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/TeleportOnExitFlagHandler.java b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/TeleportOnExitFlagHandler.java
index 228d5d8..3a1204d 100644
--- a/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/TeleportOnExitFlagHandler.java
+++ b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/TeleportOnExitFlagHandler.java
@@ -6,7 +6,6 @@ import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.metadata.FixedMetadataValue;
-import com.sk89q.worldedit.bukkit.BukkitUtil;
import com.sk89q.worldguard.protection.ApplicableRegionSet;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
import com.sk89q.worldguard.session.MoveType;
@@ -15,9 +14,11 @@ import com.sk89q.worldguard.session.handler.Handler;
import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
import net.goldtreeservers.worldguardextraflags.flags.Flags;
+import net.goldtreeservers.worldguardextraflags.we.WorldEditUtils;
import net.goldtreeservers.worldguardextraflags.wg.WorldGuardUtils;
+import net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers.HandlerWrapper;
-public class TeleportOnExitFlagHandler extends Handler
+public class TeleportOnExitFlagHandler extends HandlerWrapper
{
public static final Factory FACTORY = new Factory();
public static class Factory extends Handler.Factory
@@ -34,17 +35,16 @@ public class TeleportOnExitFlagHandler extends Handler
super(session);
}
- @SuppressWarnings("deprecation")
@Override
public boolean onCrossBoundary(Player player, Location from, Location to, ApplicableRegionSet toSet, Set entered, Set exited, MoveType moveType)
{
if (!player.hasMetadata(WorldGuardUtils.PREVENT_TELEPORT_LOOP_META))
{
- com.sk89q.worldedit.Location location = WorldGuardUtils.queryValue(player, to.getWorld(), exited, Flags.TELEPORT_ON_EXIT);
+ Object location = WorldGuardUtils.queryValueUnchecked(player, to.getWorld(), exited, Flags.TELEPORT_ON_EXIT);
if (location != null)
{
player.setMetadata(WorldGuardUtils.PREVENT_TELEPORT_LOOP_META, new FixedMetadataValue(WorldGuardExtraFlagsPlugin.getPlugin(), true));
- player.teleport(BukkitUtil.toLocation(location));
+ player.teleport(WorldEditUtils.toLocation(location));
return false;
}
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/WalkSpeedFlagHandler.java b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/WalkSpeedFlagHandler.java
index 2c29088..363bd49 100644
--- a/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/WalkSpeedFlagHandler.java
+++ b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/WalkSpeedFlagHandler.java
@@ -13,8 +13,9 @@ import com.sk89q.worldguard.session.handler.Handler;
import net.goldtreeservers.worldguardextraflags.flags.Flags;
import net.goldtreeservers.worldguardextraflags.wg.WorldGuardUtils;
+import net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers.HandlerWrapper;
-public class WalkSpeedFlagHandler extends Handler
+public class WalkSpeedFlagHandler extends HandlerWrapper
{
public static final Factory FACTORY = new Factory();
public static class Factory extends Handler.Factory
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/WorldGuardCommunicator.java b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/WorldGuardCommunicator.java
new file mode 100644
index 0000000..8c15878
--- /dev/null
+++ b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/WorldGuardCommunicator.java
@@ -0,0 +1,53 @@
+package net.goldtreeservers.worldguardextraflags.wg.legacy;
+
+import org.bukkit.entity.Player;
+
+import com.sk89q.worldguard.LocalPlayer;
+import com.sk89q.worldguard.protection.flags.registry.FlagRegistry;
+
+import net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers.RegionContainerWrapper;
+import net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers.SessionManagerWrapper;
+import net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers.wg6.WorldGuardSixCommunicator;
+import net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers.wg7.WorldGuardSevenCommunicator;
+
+public interface WorldGuardCommunicator
+{
+ public void onLoad() throws Exception;
+ public void onEnable() throws Exception;
+
+ public FlagRegistry getFlagRegistry();
+ public SessionManagerWrapper getSessionManager();
+
+ public RegionContainerWrapper getRegionContainer();
+
+ public LocalPlayer wrapPlayer(Player player);
+
+ public static WorldGuardCommunicator create()
+ {
+ try
+ {
+ Class.forName("com.sk89q.worldguard.WorldGuard"); //Only exists in WG 7
+
+ return new WorldGuardSevenCommunicator();
+ }
+ catch (Throwable ignored)
+ {
+
+ }
+
+ try
+ {
+ Class> clazz = Class.forName("com.sk89q.worldguard.bukkit.WorldGuardPlugin");
+ if (clazz.getMethod("getFlagRegistry") != null)
+ {
+ return new WorldGuardSixCommunicator();
+ }
+ }
+ catch (Throwable ignored)
+ {
+ ignored.printStackTrace();
+ }
+
+ return null;
+ }
+}
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/wrappers/HandlerWrapper.java b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/wrappers/HandlerWrapper.java
new file mode 100644
index 0000000..4b5a635
--- /dev/null
+++ b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/wrappers/HandlerWrapper.java
@@ -0,0 +1,68 @@
+package net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers;
+
+import java.util.Set;
+
+import org.bukkit.Location;
+import org.bukkit.entity.Player;
+
+import com.sk89q.worldedit.bukkit.BukkitAdapter;
+import com.sk89q.worldguard.LocalPlayer;
+import com.sk89q.worldguard.bukkit.BukkitPlayer;
+import com.sk89q.worldguard.protection.ApplicableRegionSet;
+import com.sk89q.worldguard.protection.flags.StateFlag.State;
+import com.sk89q.worldguard.protection.regions.ProtectedRegion;
+import com.sk89q.worldguard.session.MoveType;
+import com.sk89q.worldguard.session.Session;
+import com.sk89q.worldguard.session.handler.Handler;
+
+public abstract class HandlerWrapper extends Handler
+{
+ protected HandlerWrapper(Session session)
+ {
+ super(session);
+ }
+
+ public void initialize(Player player, Location current, ApplicableRegionSet set)
+ {
+
+ }
+
+ public boolean onCrossBoundary(Player player, Location from, Location to, ApplicableRegionSet toSet, Set entered, Set exited, MoveType moveType)
+ {
+ return true;
+ }
+
+ public void tick(Player player, ApplicableRegionSet set)
+ {
+
+ }
+
+ public State getInvincibility(Player player)
+ {
+ return null;
+ }
+
+ @Override
+ public void initialize(LocalPlayer localPlayer, com.sk89q.worldedit.util.Location current, ApplicableRegionSet set)
+ {
+ this.initialize(((BukkitPlayer)localPlayer).getPlayer(), BukkitAdapter.adapt(current), set);
+ }
+
+ @Override
+ public boolean onCrossBoundary(LocalPlayer localPlayer, com.sk89q.worldedit.util.Location from, com.sk89q.worldedit.util.Location to, ApplicableRegionSet toSet, Set entered, Set exited, MoveType moveType)
+ {
+ return this.onCrossBoundary(((BukkitPlayer)localPlayer).getPlayer(), BukkitAdapter.adapt(from), BukkitAdapter.adapt(to), toSet, entered, exited, moveType);
+ }
+
+ @Override
+ public void tick(LocalPlayer localPlayer, ApplicableRegionSet set)
+ {
+ this.tick(((BukkitPlayer)localPlayer).getPlayer(), set);
+ }
+
+ @Override
+ public State getInvincibility(LocalPlayer localPlayer)
+ {
+ return this.getInvincibility(((BukkitPlayer)localPlayer).getPlayer());
+ }
+}
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/wrappers/RegionContainerWrapper.java b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/wrappers/RegionContainerWrapper.java
new file mode 100644
index 0000000..0774d30
--- /dev/null
+++ b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/wrappers/RegionContainerWrapper.java
@@ -0,0 +1,9 @@
+package net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers;
+
+import org.bukkit.World;
+
+public abstract class RegionContainerWrapper
+{
+ public abstract RegionQueryWrapper createQuery();
+ public abstract RegionManagerWrapper get(World world);
+}
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/wrappers/RegionManagerWrapper.java b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/wrappers/RegionManagerWrapper.java
new file mode 100644
index 0000000..0402e91
--- /dev/null
+++ b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/wrappers/RegionManagerWrapper.java
@@ -0,0 +1,45 @@
+package net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers;
+
+import java.util.Map;
+
+import org.bukkit.Location;
+
+import com.sk89q.worldedit.Vector;
+import com.sk89q.worldedit.bukkit.BukkitAdapter;
+import com.sk89q.worldguard.protection.ApplicableRegionSet;
+import com.sk89q.worldguard.protection.managers.RegionManager;
+import com.sk89q.worldguard.protection.regions.ProtectedCuboidRegion;
+import com.sk89q.worldguard.protection.regions.ProtectedRegion;
+
+import lombok.RequiredArgsConstructor;
+
+@RequiredArgsConstructor
+public abstract class RegionManagerWrapper
+{
+ protected final RegionManager regionManager;
+
+ public ProtectedRegion getRegion(String id)
+ {
+ return this.regionManager.getRegion(id);
+ }
+
+ public ApplicableRegionSet getApplicableRegions(Vector location)
+ {
+ return this.regionManager.getApplicableRegions(location);
+ }
+
+ public ApplicableRegionSet getApplicableRegions(Location location)
+ {
+ return this.getApplicableRegions(BukkitAdapter.asVector(location));
+ }
+
+ public ApplicableRegionSet getApplicableRegions(ProtectedCuboidRegion protectedCuboidRegion)
+ {
+ return this.regionManager.getApplicableRegions(protectedCuboidRegion);
+ }
+
+ public Map getRegions()
+ {
+ return this.regionManager.getRegions();
+ }
+}
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/wrappers/RegionQueryWrapper.java b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/wrappers/RegionQueryWrapper.java
new file mode 100644
index 0000000..14264a4
--- /dev/null
+++ b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/wrappers/RegionQueryWrapper.java
@@ -0,0 +1,10 @@
+package net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers;
+
+import org.bukkit.Location;
+
+import com.sk89q.worldguard.protection.ApplicableRegionSet;
+
+public abstract class RegionQueryWrapper
+{
+ public abstract ApplicableRegionSet getApplicableRegions(Location location);
+}
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/wrappers/SessionManagerWrapper.java b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/wrappers/SessionManagerWrapper.java
new file mode 100644
index 0000000..64783e0
--- /dev/null
+++ b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/wrappers/SessionManagerWrapper.java
@@ -0,0 +1,20 @@
+package net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers;
+
+import org.bukkit.entity.Player;
+
+import com.sk89q.worldguard.session.Session;
+import com.sk89q.worldguard.session.SessionManager;
+import com.sk89q.worldguard.session.handler.Handler;
+
+import lombok.RequiredArgsConstructor;
+
+@RequiredArgsConstructor
+public abstract class SessionManagerWrapper
+{
+ protected final SessionManager sessionManager;
+
+ public abstract Session get(Player player);
+ public abstract Session getIfPresent(Player player);
+
+ public abstract void registerHandler(Handler.Factory extends Handler> factory);
+}
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/wrappers/wg6/RegionContainerWrapperSix.java b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/wrappers/wg6/RegionContainerWrapperSix.java
new file mode 100644
index 0000000..92bb74c
--- /dev/null
+++ b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/wrappers/wg6/RegionContainerWrapperSix.java
@@ -0,0 +1,54 @@
+package net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers.wg6;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+import org.bukkit.World;
+
+import com.sk89q.worldguard.protection.managers.RegionManager;
+
+import net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers.RegionContainerWrapper;
+import net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers.RegionManagerWrapper;
+import net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers.RegionQueryWrapper;
+
+public class RegionContainerWrapperSix extends RegionContainerWrapper
+{
+ protected final Object regionContainer;
+
+ private Method createQueryMethod;
+ private Method getMethod;
+
+ public RegionContainerWrapperSix(Object regionContainer) throws NoSuchMethodException, SecurityException
+ {
+ this.regionContainer = regionContainer;
+
+ this.createQueryMethod = regionContainer.getClass().getMethod("createQuery");
+ this.getMethod = regionContainer.getClass().getMethod("get", World.class);
+ }
+
+ @Override
+ public RegionQueryWrapper createQuery()
+ {
+ try
+ {
+ return new RegionQueryWrapperSix(this.createQueryMethod.invoke(this.regionContainer));
+ }
+ catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e)
+ {
+ throw new RuntimeException(e);
+ }
+ }
+
+ @Override
+ public RegionManagerWrapper get(World world)
+ {
+ try
+ {
+ return new RegionManagerWrapperSix((RegionManager)this.getMethod.invoke(this.regionContainer, world));
+ }
+ catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e)
+ {
+ throw new RuntimeException(e);
+ }
+ }
+}
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/wrappers/wg6/RegionManagerWrapperSix.java b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/wrappers/wg6/RegionManagerWrapperSix.java
new file mode 100644
index 0000000..1c39340
--- /dev/null
+++ b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/wrappers/wg6/RegionManagerWrapperSix.java
@@ -0,0 +1,13 @@
+package net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers.wg6;
+
+import com.sk89q.worldguard.protection.managers.RegionManager;
+
+import net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers.RegionManagerWrapper;
+
+public class RegionManagerWrapperSix extends RegionManagerWrapper
+{
+ public RegionManagerWrapperSix(RegionManager regionManager)
+ {
+ super(regionManager);
+ }
+}
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/wrappers/wg6/RegionQueryWrapperSix.java b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/wrappers/wg6/RegionQueryWrapperSix.java
new file mode 100644
index 0000000..2570a29
--- /dev/null
+++ b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/wrappers/wg6/RegionQueryWrapperSix.java
@@ -0,0 +1,37 @@
+package net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers.wg6;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+import org.bukkit.Location;
+
+import com.sk89q.worldguard.protection.ApplicableRegionSet;
+
+import net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers.RegionQueryWrapper;
+
+public class RegionQueryWrapperSix extends RegionQueryWrapper
+{
+ protected final Object regionQuery;
+
+ private Method getApplicableRegionsMethod;
+
+ public RegionQueryWrapperSix(Object regionQuery) throws NoSuchMethodException, SecurityException
+ {
+ this.regionQuery = regionQuery;
+
+ this.getApplicableRegionsMethod = regionQuery.getClass().getMethod("getApplicableRegions", Location.class);
+ }
+
+ @Override
+ public ApplicableRegionSet getApplicableRegions(Location location)
+ {
+ try
+ {
+ return (ApplicableRegionSet)this.getApplicableRegionsMethod.invoke(this.regionQuery, location);
+ }
+ catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e)
+ {
+ throw new RuntimeException(e);
+ }
+ }
+}
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/wrappers/wg6/SessionManagerWrapperSix.java b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/wrappers/wg6/SessionManagerWrapperSix.java
new file mode 100644
index 0000000..cc8441e
--- /dev/null
+++ b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/wrappers/wg6/SessionManagerWrapperSix.java
@@ -0,0 +1,70 @@
+package net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers.wg6;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+import org.bukkit.entity.Player;
+
+import com.sk89q.worldguard.session.Session;
+import com.sk89q.worldguard.session.SessionManager;
+import com.sk89q.worldguard.session.handler.Handler;
+import com.sk89q.worldguard.session.handler.Handler.Factory;
+
+import net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers.SessionManagerWrapper;
+
+public class SessionManagerWrapperSix extends SessionManagerWrapper
+{
+ private Method getMethod;
+ private Method getIfPresentMethod;
+
+ private Method registerHandlerMethod;
+
+ public SessionManagerWrapperSix(SessionManager sessionManager) throws NoSuchMethodException, SecurityException
+ {
+ super(sessionManager);
+
+ this.getMethod = sessionManager.getClass().getMethod("get", Player.class);
+ this.getIfPresentMethod = sessionManager.getClass().getMethod("getIfPresent", Player.class);
+
+ this.registerHandlerMethod = sessionManager.getClass().getMethod("registerHandler", Factory.class, Factory.class);
+ }
+
+ @Override
+ public Session get(Player player)
+ {
+ try
+ {
+ return (Session)this.getMethod.invoke(this.sessionManager, player);
+ }
+ catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e)
+ {
+ throw new RuntimeException(e);
+ }
+ }
+
+ @Override
+ public Session getIfPresent(Player player)
+ {
+ try
+ {
+ return (Session)this.getIfPresentMethod.invoke(this.sessionManager, player);
+ }
+ catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e)
+ {
+ throw new RuntimeException(e);
+ }
+ }
+
+ @Override
+ public void registerHandler(Factory extends Handler> factory)
+ {
+ try
+ {
+ this.registerHandlerMethod.invoke(this.sessionManager, factory, null);
+ }
+ catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e)
+ {
+ throw new RuntimeException(e);
+ }
+ }
+}
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/wrappers/wg6/WorldGuardSixCommunicator.java b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/wrappers/wg6/WorldGuardSixCommunicator.java
new file mode 100644
index 0000000..d892b74
--- /dev/null
+++ b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/wrappers/wg6/WorldGuardSixCommunicator.java
@@ -0,0 +1,61 @@
+package net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers.wg6;
+
+import java.lang.reflect.Method;
+
+import org.bukkit.entity.Player;
+
+import com.sk89q.worldguard.LocalPlayer;
+import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
+import com.sk89q.worldguard.protection.flags.registry.FlagRegistry;
+import com.sk89q.worldguard.session.SessionManager;
+
+import net.goldtreeservers.worldguardextraflags.wg.legacy.WorldGuardCommunicator;
+import net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers.RegionContainerWrapper;
+import net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers.SessionManagerWrapper;
+
+public class WorldGuardSixCommunicator implements WorldGuardCommunicator
+{
+ private FlagRegistry flagRegistry;
+ private SessionManagerWrapper sessionManager;
+ private RegionContainerWrapper regionContainer;
+
+ public void onLoad() throws Exception
+ {
+ Method getFlagRegistryMethod = WorldGuardPlugin.class.getMethod("getFlagRegistry");
+
+ this.flagRegistry = (FlagRegistry)getFlagRegistryMethod.invoke(WorldGuardPlugin.inst());
+ }
+
+ public void onEnable() throws Exception
+ {
+ Method getSessionManagerMethod = WorldGuardPlugin.class.getMethod("getSessionManager");
+ Method getRegionContainerMethod = WorldGuardPlugin.class.getMethod("getRegionContainer");
+
+ this.sessionManager = new SessionManagerWrapperSix((SessionManager)getSessionManagerMethod.invoke(WorldGuardPlugin.inst()));
+ this.regionContainer = new RegionContainerWrapperSix(getRegionContainerMethod.invoke(WorldGuardPlugin.inst()));
+ }
+
+ @Override
+ public FlagRegistry getFlagRegistry()
+ {
+ return this.flagRegistry;
+ }
+
+ @Override
+ public SessionManagerWrapper getSessionManager()
+ {
+ return this.sessionManager;
+ }
+
+ @Override
+ public RegionContainerWrapper getRegionContainer()
+ {
+ return this.regionContainer;
+ }
+
+ @Override
+ public LocalPlayer wrapPlayer(Player player)
+ {
+ return WorldGuardPlugin.inst().wrapPlayer(player);
+ }
+}
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/wrappers/wg7/RegionContainerWrapperSeven.java b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/wrappers/wg7/RegionContainerWrapperSeven.java
new file mode 100644
index 0000000..f6b778f
--- /dev/null
+++ b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/wrappers/wg7/RegionContainerWrapperSeven.java
@@ -0,0 +1,29 @@
+package net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers.wg7;
+
+import org.bukkit.World;
+
+import com.sk89q.worldedit.bukkit.BukkitAdapter;
+import com.sk89q.worldguard.protection.regions.RegionContainer;
+
+import lombok.RequiredArgsConstructor;
+import net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers.RegionContainerWrapper;
+import net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers.RegionManagerWrapper;
+import net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers.RegionQueryWrapper;
+
+@RequiredArgsConstructor
+public class RegionContainerWrapperSeven extends RegionContainerWrapper
+{
+ protected final RegionContainer regionContainer;
+
+ @Override
+ public RegionQueryWrapper createQuery()
+ {
+ return new RegionQueryWrapperSeven(this.regionContainer.createQuery());
+ }
+
+ @Override
+ public RegionManagerWrapper get(World world)
+ {
+ return new RegionManagerWrapperSeven(this.regionContainer.get(BukkitAdapter.adapt(world)));
+ }
+}
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/wrappers/wg7/RegionManagerWrapperSeven.java b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/wrappers/wg7/RegionManagerWrapperSeven.java
new file mode 100644
index 0000000..6f38ff3
--- /dev/null
+++ b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/wrappers/wg7/RegionManagerWrapperSeven.java
@@ -0,0 +1,13 @@
+package net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers.wg7;
+
+import com.sk89q.worldguard.protection.managers.RegionManager;
+
+import net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers.RegionManagerWrapper;
+
+public class RegionManagerWrapperSeven extends RegionManagerWrapper
+{
+ public RegionManagerWrapperSeven(RegionManager regionManager)
+ {
+ super(regionManager);
+ }
+}
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/wrappers/wg7/RegionQueryWrapperSeven.java b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/wrappers/wg7/RegionQueryWrapperSeven.java
new file mode 100644
index 0000000..36d4907
--- /dev/null
+++ b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/wrappers/wg7/RegionQueryWrapperSeven.java
@@ -0,0 +1,22 @@
+package net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers.wg7;
+
+import org.bukkit.Location;
+
+import com.sk89q.worldedit.bukkit.BukkitAdapter;
+import com.sk89q.worldguard.protection.ApplicableRegionSet;
+import com.sk89q.worldguard.protection.regions.RegionQuery;
+
+import lombok.RequiredArgsConstructor;
+import net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers.RegionQueryWrapper;
+
+@RequiredArgsConstructor
+public class RegionQueryWrapperSeven extends RegionQueryWrapper
+{
+ protected final RegionQuery regionQuery;
+
+ @Override
+ public ApplicableRegionSet getApplicableRegions(Location location)
+ {
+ return this.regionQuery.getApplicableRegions(BukkitAdapter.adapt(location));
+ }
+}
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/wrappers/wg7/SessionManagerWrapperSeven.java b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/wrappers/wg7/SessionManagerWrapperSeven.java
new file mode 100644
index 0000000..c5f2148
--- /dev/null
+++ b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/wrappers/wg7/SessionManagerWrapperSeven.java
@@ -0,0 +1,37 @@
+package net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers.wg7;
+
+import org.bukkit.entity.Player;
+
+import com.sk89q.worldguard.session.Session;
+import com.sk89q.worldguard.session.SessionManager;
+import com.sk89q.worldguard.session.handler.Handler;
+import com.sk89q.worldguard.session.handler.Handler.Factory;
+
+import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
+import net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers.SessionManagerWrapper;
+
+public class SessionManagerWrapperSeven extends SessionManagerWrapper
+{
+ public SessionManagerWrapperSeven(SessionManager sessionManager)
+ {
+ super(sessionManager);
+ }
+
+ @Override
+ public Session get(Player player)
+ {
+ return this.sessionManager.get(WorldGuardExtraFlagsPlugin.getPlugin().getWorldGuardCommunicator().wrapPlayer(player));
+ }
+
+ @Override
+ public Session getIfPresent(Player player)
+ {
+ return this.sessionManager.getIfPresent(WorldGuardExtraFlagsPlugin.getPlugin().getWorldGuardCommunicator().wrapPlayer(player));
+ }
+
+ @Override
+ public void registerHandler(Factory extends Handler> factory)
+ {
+ this.sessionManager.registerHandler(factory, null);
+ }
+}
diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/wrappers/wg7/WorldGuardSevenCommunicator.java b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/wrappers/wg7/WorldGuardSevenCommunicator.java
new file mode 100644
index 0000000..45bb007
--- /dev/null
+++ b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/legacy/wrappers/wg7/WorldGuardSevenCommunicator.java
@@ -0,0 +1,57 @@
+package net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers.wg7;
+
+import org.bukkit.entity.Player;
+
+import com.sk89q.worldguard.LocalPlayer;
+import com.sk89q.worldguard.WorldGuard;
+import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
+import com.sk89q.worldguard.protection.flags.registry.FlagRegistry;
+
+import net.goldtreeservers.worldguardextraflags.wg.legacy.WorldGuardCommunicator;
+import net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers.RegionContainerWrapper;
+import net.goldtreeservers.worldguardextraflags.wg.legacy.wrappers.SessionManagerWrapper;
+
+public class WorldGuardSevenCommunicator implements WorldGuardCommunicator
+{
+ private SessionManagerWrapper sessionManager;
+ private RegionContainerWrapper regionContainer;
+
+ public WorldGuardSevenCommunicator()
+ {
+ }
+
+ @Override
+ public void onLoad() throws Exception
+ {
+ }
+
+ @Override
+ public void onEnable() throws Exception
+ {
+ this.sessionManager = new SessionManagerWrapperSeven(WorldGuard.getInstance().getPlatform().getSessionManager());
+ this.regionContainer = new RegionContainerWrapperSeven(WorldGuard.getInstance().getPlatform().getRegionContainer());
+ }
+
+ @Override
+ public FlagRegistry getFlagRegistry()
+ {
+ return WorldGuard.getInstance().getFlagRegistry();
+ }
+
+ @Override
+ public SessionManagerWrapper getSessionManager()
+ {
+ return this.sessionManager;
+ }
+
+ @Override
+ public RegionContainerWrapper getRegionContainer()
+ {
+ return this.regionContainer;
+ }
+ @Override
+ public LocalPlayer wrapPlayer(Player player)
+ {
+ return WorldGuardPlugin.inst().wrapPlayer(player);
+ }
+}