From 5903d2769b8dc1de4e8535925eff8828938143ff Mon Sep 17 00:00:00 2001 From: isokissa3 Date: Sat, 14 Apr 2018 00:30:58 +0300 Subject: [PATCH] Moved soft dependencies to own classes and fixed AsyncWorldEdit incompatibility --- .../WorldGuardExtraFlagsPlugin.java | 78 ++++++++++++------- .../essentials/EssentialsUtils.java | 24 ++++++ .../worldguardextraflags/fawe/FAWEUtils.java | 13 +++- .../listeners/PlayerListener.java | 5 +- .../listeners/WorldEditListener.java | 3 +- .../mb/MythicMobsUtils.java | 16 ++++ .../we/WorldEditFlagHandler.java | 16 ++-- .../wg/handlers/GodmodeFlagHandler.java | 5 +- src/main/resources/plugin.yml | 2 +- 9 files changed, 117 insertions(+), 45 deletions(-) create mode 100644 src/main/java/net/goldtreeservers/worldguardextraflags/essentials/EssentialsUtils.java create mode 100644 src/main/java/net/goldtreeservers/worldguardextraflags/mb/MythicMobsUtils.java diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/WorldGuardExtraFlagsPlugin.java b/src/main/java/net/goldtreeservers/worldguardextraflags/WorldGuardExtraFlagsPlugin.java index 9de1a62..e9b934b 100644 --- a/src/main/java/net/goldtreeservers/worldguardextraflags/WorldGuardExtraFlagsPlugin.java +++ b/src/main/java/net/goldtreeservers/worldguardextraflags/WorldGuardExtraFlagsPlugin.java @@ -5,21 +5,20 @@ import org.bukkit.event.entity.EntityToggleGlideEvent; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.java.JavaPlugin; -import com.earth2me.essentials.Essentials; import com.sk89q.worldedit.bukkit.WorldEditPlugin; import com.sk89q.worldguard.bukkit.WorldGuardPlugin; import lombok.Getter; -import net.elseland.xikage.MythicMobs.MythicMobs; +import net.goldtreeservers.worldguardextraflags.essentials.EssentialsUtils; import net.goldtreeservers.worldguardextraflags.fawe.FAWEUtils; import net.goldtreeservers.worldguardextraflags.flags.Flags; import net.goldtreeservers.worldguardextraflags.listeners.BlockListener; import net.goldtreeservers.worldguardextraflags.listeners.EntityListener; import net.goldtreeservers.worldguardextraflags.listeners.EntityListenerOnePointNine; -import net.goldtreeservers.worldguardextraflags.listeners.EssentialsListener; 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; @@ -41,9 +40,9 @@ public class WorldGuardExtraFlagsPlugin extends JavaPlugin @Getter private static WorldGuardPlugin worldGuardPlugin; @Getter private static WorldEditPlugin worldEditPlugin; - @Getter private static Essentials essentialsPlugin; - @Getter private static MythicMobs mythicMobsPlugin; - + + @Getter private static boolean essentialsPluginEnabled; + @Getter private static boolean mythicMobsPluginEnabled; @Getter private static boolean fastAsyncWorldEditPluginEnabled; public WorldGuardExtraFlagsPlugin() @@ -88,19 +87,50 @@ public class WorldGuardExtraFlagsPlugin extends JavaPlugin WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(Flags.JOIN_LOCATION); //Soft dependencies, due to some compatibility issues or add flags related to a plugin - Plugin essentialsPlugin = this.getServer().getPluginManager().getPlugin("Essentials"); - if (essentialsPlugin != null) + try { - WorldGuardExtraFlagsPlugin.essentialsPlugin = (Essentials)essentialsPlugin; + Plugin essentialsPlugin = WorldGuardExtraFlagsPlugin.getPlugin().getServer().getPluginManager().getPlugin("Essentials"); + if (essentialsPlugin != null) + { + EssentialsUtils.onLoad(essentialsPlugin); + + WorldGuardExtraFlagsPlugin.essentialsPluginEnabled = true; + } + } + catch(Throwable ex) + { + } - Plugin mythicMobsPlugin = this.getServer().getPluginManager().getPlugin("MythicMobs"); - if (mythicMobsPlugin != null) + try { - WorldGuardExtraFlagsPlugin.mythicMobsPlugin = (MythicMobs)mythicMobsPlugin; + Plugin mythicMobsPlugin = this.getServer().getPluginManager().getPlugin("MythicMobs"); + if (mythicMobsPlugin != null) + { + MythicMobsUtils.onLoad(mythicMobsPlugin); + + WorldGuardExtraFlagsPlugin.mythicMobsPluginEnabled = true; + } + } + catch(Throwable ex) + { + + } + + try + { + Plugin fastAsyncWorldEditPlugin = this.getServer().getPluginManager().getPlugin("FastAsyncWorldEdit"); + if (fastAsyncWorldEditPlugin != null) + { + FAWEUtils.onLoad(fastAsyncWorldEditPlugin); + + WorldGuardExtraFlagsPlugin.fastAsyncWorldEditPluginEnabled = true; + } + } + catch(Throwable ex) + { + } - - WorldGuardExtraFlagsPlugin.fastAsyncWorldEditPluginEnabled = this.getServer().getPluginManager().isPluginEnabled("FastAsyncWorldEdit"); } @Override @@ -137,18 +167,18 @@ public class WorldGuardExtraFlagsPlugin extends JavaPlugin } - if (WorldGuardExtraFlagsPlugin.fastAsyncWorldEditPluginEnabled) + if (WorldGuardExtraFlagsPlugin.isFastAsyncWorldEditPluginEnabled()) { - FAWEUtils.registerFAWE(); + FAWEUtils.onEnable(); } else { - WorldGuardExtraFlagsPlugin.worldEditPlugin.getWorldEdit().getEventBus().register(new WorldEditListener()); + WorldGuardExtraFlagsPlugin.getWorldEditPlugin().getWorldEdit().getEventBus().register(new WorldEditListener()); } - if (WorldGuardExtraFlagsPlugin.isEssentialsEnable()) + if (WorldGuardExtraFlagsPlugin.isEssentialsPluginEnabled()) { - this.getServer().getPluginManager().registerEvents(new EssentialsListener(), this); + EssentialsUtils.onEnable(); } for(World world : this.getServer().getWorlds()) @@ -156,14 +186,4 @@ public class WorldGuardExtraFlagsPlugin extends JavaPlugin WorldUtils.doUnloadChunkFlagCheck(world); } } - - public static boolean isEssentialsEnable() - { - return WorldGuardExtraFlagsPlugin.essentialsPlugin != null; - } - - public static boolean isMythicMobsPluginEnabled() - { - return WorldGuardExtraFlagsPlugin.essentialsPlugin != null; - } } diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/essentials/EssentialsUtils.java b/src/main/java/net/goldtreeservers/worldguardextraflags/essentials/EssentialsUtils.java new file mode 100644 index 0000000..bec5382 --- /dev/null +++ b/src/main/java/net/goldtreeservers/worldguardextraflags/essentials/EssentialsUtils.java @@ -0,0 +1,24 @@ +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/FAWEUtils.java b/src/main/java/net/goldtreeservers/worldguardextraflags/fawe/FAWEUtils.java index 9379ce1..7706839 100644 --- a/src/main/java/net/goldtreeservers/worldguardextraflags/fawe/FAWEUtils.java +++ b/src/main/java/net/goldtreeservers/worldguardextraflags/fawe/FAWEUtils.java @@ -1,10 +1,21 @@ package net.goldtreeservers.worldguardextraflags.fawe; +import org.bukkit.plugin.Plugin; + import com.boydti.fawe.FaweAPI; +import lombok.Getter; + public class FAWEUtils { - public static void registerFAWE() + @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/listeners/PlayerListener.java b/src/main/java/net/goldtreeservers/worldguardextraflags/listeners/PlayerListener.java index 9d30b78..21a0e56 100644 --- a/src/main/java/net/goldtreeservers/worldguardextraflags/listeners/PlayerListener.java +++ b/src/main/java/net/goldtreeservers/worldguardextraflags/listeners/PlayerListener.java @@ -26,6 +26,7 @@ import com.sk89q.worldguard.protection.ApplicableRegionSet; import com.sk89q.worldguard.protection.flags.StateFlag.State; import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin; +import net.goldtreeservers.worldguardextraflags.essentials.EssentialsUtils; import net.goldtreeservers.worldguardextraflags.flags.Flags; import net.goldtreeservers.worldguardextraflags.wg.WorldGuardUtils; import net.goldtreeservers.worldguardextraflags.wg.handlers.FlyFlagHandler; @@ -188,9 +189,9 @@ public class PlayerListener implements Listener { Player player = event.getPlayer(); - if (WorldGuardExtraFlagsPlugin.isEssentialsEnable()) //Essentials how dare u do this to me!?! + if (WorldGuardExtraFlagsPlugin.isEssentialsPluginEnabled()) //Essentials how dare u do this to me!?! { - if (player.getGameMode() != GameMode.CREATIVE && !WorldGuardExtraFlagsPlugin.getEssentialsPlugin().getUser(player).isAuthorized("essentials.fly")) + 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(); diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/listeners/WorldEditListener.java b/src/main/java/net/goldtreeservers/worldguardextraflags/listeners/WorldEditListener.java index c687b69..8ae4c91 100644 --- a/src/main/java/net/goldtreeservers/worldguardextraflags/listeners/WorldEditListener.java +++ b/src/main/java/net/goldtreeservers/worldguardextraflags/listeners/WorldEditListener.java @@ -1,6 +1,5 @@ package net.goldtreeservers.worldguardextraflags.listeners; -import com.sk89q.worldedit.bukkit.BukkitWorld; import com.sk89q.worldedit.entity.Player; import com.sk89q.worldedit.event.extent.EditSessionEvent; import com.sk89q.worldedit.extension.platform.Actor; @@ -17,7 +16,7 @@ public class WorldEditListener Actor actor = event.getActor(); if (actor != null && actor.isPlayer()) { - event.setExtent(new WorldEditFlagHandler((BukkitWorld)event.getWorld(), event.getExtent(), (Player)actor)); + event.setExtent(new WorldEditFlagHandler(event.getWorld(), event.getExtent(), (Player)actor)); } } } diff --git a/src/main/java/net/goldtreeservers/worldguardextraflags/mb/MythicMobsUtils.java b/src/main/java/net/goldtreeservers/worldguardextraflags/mb/MythicMobsUtils.java new file mode 100644 index 0000000..76ecc0a --- /dev/null +++ b/src/main/java/net/goldtreeservers/worldguardextraflags/mb/MythicMobsUtils.java @@ -0,0 +1,16 @@ +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/we/WorldEditFlagHandler.java b/src/main/java/net/goldtreeservers/worldguardextraflags/we/WorldEditFlagHandler.java index 976357a..0f20887 100644 --- a/src/main/java/net/goldtreeservers/worldguardextraflags/we/WorldEditFlagHandler.java +++ b/src/main/java/net/goldtreeservers/worldguardextraflags/we/WorldEditFlagHandler.java @@ -4,10 +4,10 @@ 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.bukkit.BukkitWorld; 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.worldguard.protection.ApplicableRegionSet; import com.sk89q.worldguard.protection.flags.StateFlag.State; @@ -17,24 +17,24 @@ import net.goldtreeservers.worldguardextraflags.wg.WorldGuardUtils; public class WorldEditFlagHandler extends AbstractDelegateExtent { - private final BukkitWorld world; - private final Player player; + private final org.bukkit.World world; + private final org.bukkit.entity.Player player; - public WorldEditFlagHandler(BukkitWorld world, Extent extent, Player player) + public WorldEditFlagHandler(World world, Extent extent, Player player) { super(extent); - this.world = world; - this.player = player; + this.world = WorldGuardExtraFlagsPlugin.getPlugin().getServer().getWorld(world.getName()); + this.player = WorldGuardExtraFlagsPlugin.getPlugin().getServer().getPlayer(player.getUniqueId()); } //TODO: Prebuild list @Override public boolean setBlock(Vector location, BaseBlock block) throws WorldEditException { - ApplicableRegionSet regions = WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getRegionContainer().createQuery().getApplicableRegions(BukkitUtil.toLocation(this.world.getWorld(), location)); + ApplicableRegionSet regions = WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getRegionContainer().createQuery().getApplicableRegions(BukkitUtil.toLocation(this.world, location)); - State state = WorldGuardUtils.queryState(WorldGuardExtraFlagsPlugin.getPlugin().getServer().getPlayer(this.player.getUniqueId()), this.world.getWorld(), regions.getRegions(), Flags.WORLDEDIT); + State state = WorldGuardUtils.queryState(this.player, this.world, regions.getRegions(), Flags.WORLDEDIT); if (state != State.DENY) { return super.setBlock(location, block); 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 d1dbac1..1578e03 100644 --- a/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/GodmodeFlagHandler.java +++ b/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/GodmodeFlagHandler.java @@ -17,6 +17,7 @@ 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.flags.Flags; import net.goldtreeservers.worldguardextraflags.wg.WorldGuardUtils; @@ -67,9 +68,9 @@ public class GodmodeFlagHandler extends Handler this.isGodmodeEnabled = null; } - if (WorldGuardExtraFlagsPlugin.isEssentialsEnable()) + if (WorldGuardExtraFlagsPlugin.isEssentialsPluginEnabled()) { - User user = WorldGuardExtraFlagsPlugin.getEssentialsPlugin().getUser(player); + User user = EssentialsUtils.getPlugin().getUser(player); if (this.isGodmodeEnabled != null) { diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index f06d75e..4ef2767 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,5 +1,5 @@ name: WorldGuardExtraFlags -version: 3.0.0 +version: 3.0.1 description: Adds more flags to WorldGuard to help manage your server easily! author: isokissa3 website: https://goldtreevers.net