WG Manager now lives in WG Utils class, fixing the runtime errors for WG

hooks in mcMMO during start up
This commit is contained in:
nossr50 2019-09-28 16:50:55 -07:00
parent c0bfdd34b7
commit 8e1f002808
6 changed files with 36 additions and 52 deletions

View File

@ -77,7 +77,6 @@ public class mcMMO extends JavaPlugin {
private NotificationManager notificationManager;
private CommandRegistrationManager commandRegistrationManager;
// private NBTManager nbtManager;
private WorldGuardManager worldGuardManager;
private PartyManager partyManager;
private LocaleManager localeManager;
private ChatManager chatManager;
@ -284,9 +283,6 @@ public class mcMMO extends JavaPlugin {
//Init Item Tools
itemTools = new ItemTools(this);
//Init World Guard Utils (Not sure about the order of this one, might need to be loaded earlier)
worldGuardUtils = new WorldGuardUtils(this);
//Init MOTD Utils
messageOfTheDayUtils = new MessageOfTheDayUtils(this);
@ -306,10 +302,14 @@ public class mcMMO extends JavaPlugin {
@Override
public void onLoad()
{
worldGuardManager = new WorldGuardManager();
if(getServer().getPluginManager().getPlugin("WorldGuard") != null) {
worldGuardManager.registerFlags();
worldGuardUtils = new WorldGuardUtils(); //Init WGU
if(worldGuardUtils.isWorldGuardLoaded()) {
//Register flags
System.out.println("[mcMMO - Registering World Guard Flags...]");
worldGuardUtils.getWorldGuardManager().registerFlags();
}
}
}
@ -755,7 +755,7 @@ public class mcMMO extends JavaPlugin {
}
public WorldGuardManager getWorldGuardManager() {
return worldGuardManager;
return worldGuardUtils.getWorldGuardManager();
}
public PartyManager getPartyManager() {

View File

@ -21,8 +21,8 @@ import com.gmail.nossr50.events.hardcore.McMMOPlayerVampirismEvent;
import com.gmail.nossr50.events.party.McMMOPartyLevelUpEvent;
import com.gmail.nossr50.events.party.McMMOPartyTeleportEvent;
import com.gmail.nossr50.events.party.McMMOPartyXpGainEvent;
import com.gmail.nossr50.events.skills.McMMOPlayerNotificationEvent;
import com.gmail.nossr50.events.players.McMMOPlayerProfileLoadEvent;
import com.gmail.nossr50.events.skills.McMMOPlayerNotificationEvent;
import com.gmail.nossr50.events.skills.abilities.McMMOPlayerAbilityActivateEvent;
import com.gmail.nossr50.events.skills.abilities.McMMOPlayerAbilityDeactivateEvent;
import com.gmail.nossr50.events.skills.fishing.McMMOPlayerFishingTreasureEvent;

View File

@ -8,7 +8,6 @@ import com.gmail.nossr50.events.scoreboard.McMMOScoreboardMakeboardEvent;
import com.gmail.nossr50.events.scoreboard.ScoreboardEventReason;
import com.gmail.nossr50.mcMMO;
import com.google.common.collect.ImmutableList;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.scoreboard.DisplaySlot;

View File

@ -1,6 +1,5 @@
package com.gmail.nossr50.worldguard;
import com.gmail.nossr50.mcMMO;
import com.sk89q.worldedit.bukkit.BukkitAdapter;
import com.sk89q.worldedit.bukkit.BukkitPlayer;
import com.sk89q.worldguard.WorldGuard;
@ -9,12 +8,8 @@ import com.sk89q.worldguard.protection.flags.registry.FlagConflictException;
import com.sk89q.worldguard.protection.flags.registry.FlagRegistry;
import com.sk89q.worldguard.protection.regions.RegionQuery;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import static org.bukkit.Bukkit.getServer;
public class WorldGuardManager {
private WorldGuardPlugin worldGuardPluginRef;
public boolean hasMainFlag(Player player)
{
@ -63,18 +58,6 @@ public class WorldGuardManager {
return query.testState(loc, WorldGuardPlugin.inst().wrapPlayer(player), WorldGuardFlags.MCMMO_HARDCORE_WG_FLAG);
}
private WorldGuardPlugin getWorldGuard() {
Plugin plugin = getServer().getPluginManager().getPlugin("WorldGuard");
// WorldGuard may not be loaded
if (!(plugin instanceof WorldGuardPlugin)) {
return null; // Maybe you want throw an exception instead
}
worldGuardPluginRef = (WorldGuardPlugin) plugin;
return worldGuardPluginRef;
}
public void registerFlags()
{
try {

View File

@ -1,9 +1,6 @@
package com.gmail.nossr50.worldguard;
import com.gmail.nossr50.mcMMO;
import com.sk89q.worldguard.WorldGuard;
import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
import com.sk89q.worldguard.protection.flags.registry.SimpleFlagRegistry;
import org.bukkit.plugin.Plugin;
import java.util.ArrayList;
@ -15,10 +12,9 @@ public class WorldGuardUtils {
private boolean isLoaded = false;
private boolean detectedIncompatibleWG = false;
private static final ArrayList<String> WGClassList;
private final mcMMO pluginRef;
private WorldGuardManager worldGuardManager;
public WorldGuardUtils(mcMMO pluginRef) {
this.pluginRef = pluginRef;
public WorldGuardUtils() {
}
static {
@ -72,7 +68,7 @@ public class WorldGuardUtils {
if(plugin == null) {
//WG is not present
detectedIncompatibleWG = true;
pluginRef.getLogger().info("WorldGuard was not detected.");
System.out.println("[mcMMO WorldGuardUtils Debug] WorldGuard was not detected.");
} else {
//Check that its actually of class WorldGuardPlugin
if(plugin instanceof WorldGuardPlugin)
@ -81,6 +77,9 @@ public class WorldGuardUtils {
{
worldGuardPluginRef = (WorldGuardPlugin) plugin;
isLoaded = true;
//Init WG Manager
worldGuardManager = new WorldGuardManager();
}
} else {
//Plugin is not of the expected type
@ -88,7 +87,6 @@ public class WorldGuardUtils {
}
}
return worldGuardPluginRef;
}
@ -100,7 +98,7 @@ public class WorldGuardUtils {
*/
private boolean isCompatibleVersion(Plugin plugin) {
//Check that the version of WG is at least version 7.xx
boolean allClassesFound = true;
// boolean allClassesFound = true;
if (!plugin.getDescription().getVersion().startsWith("7")) {
markWGIncompatible();
@ -111,8 +109,8 @@ public class WorldGuardUtils {
Class<?> checkForClass = Class.forName(classString);
detectedIncompatibleWG = false; //In case this was set to true previously
} catch (ClassNotFoundException | NoClassDefFoundError e) {
allClassesFound = false;
pluginRef.getLogger().severe("Missing WorldGuard class - "+classString);
// allClassesFound = false;
System.out.println("[mcMMO WorldGuardUtils Debug] Missing WorldGuard class - "+classString);
markWGIncompatible();
}
}
@ -120,17 +118,17 @@ public class WorldGuardUtils {
/*
* If WG appears to have all of its classes we can then check to see if its been initialized properly
*/
try {
if(allClassesFound) {
if(!((SimpleFlagRegistry) WorldGuard.getInstance().getFlagRegistry()).isInitialized()) {
markWGIncompatible();
pluginRef.getLogger().severe("WG did not initialize properly, this can cause errors with mcMMO so mcMMO is disabling certain features.");
}
}
} catch (Exception e) {
markWGIncompatible();
e.printStackTrace();
}
// try {
// if(allClassesFound) {
// if(!((SimpleFlagRegistry) WorldGuard.getInstance().getFlagRegistry()).isInitialized()) {
// markWGIncompatible();
// System.out.println("[mcMMO WorldGuardUtils Debug] WG did not initialize properly, this can cause errors with mcMMO so mcMMO is disabling certain features.");
// }
// }
// } catch (Exception e) {
// markWGIncompatible();
// e.printStackTrace();
// }
}
return !detectedIncompatibleWG;
@ -140,10 +138,14 @@ public class WorldGuardUtils {
* Mark WG as being incompatible to avoid unnecessary operations
*/
private void markWGIncompatible() {
pluginRef.getLogger().severe("You are using a version of WG that is not compatible with mcMMO, " +
System.out.println("[mcMMO WorldGuardUtils Debug] You are using a version of WG that is not compatible with mcMMO, " +
"WG features for mcMMO will be disabled. mcMMO requires you to be using a new version of WG7 " +
"in order for it to use WG features. Not all versions of WG7 are compatible.");
pluginRef.getLogger().severe("mcMMO will continue to function normally, but if you wish to use WG support you must use a compatible version.");
System.out.println("[mcMMO WorldGuardUtils Debug] mcMMO will continue to function normally, but if you wish to use WG support you must use a compatible version.");
detectedIncompatibleWG = true;
}
public WorldGuardManager getWorldGuardManager() {
return worldGuardManager;
}
}

View File

@ -14,7 +14,7 @@ author: nossr50
authors: [GJ, NuclearW, bm01, Glitchfinder, TfT_02, t00thpick1, Riking, electronicboy, kashike]
website: https://www.mcmmo.org
main: com.gmail.nossr50.mcMMO
softdepend: [WorldGuard, CombatTag, HealthBar]
softdepend: [WorldGuard, WorldEdit, CombatTag, HealthBar]
load: POSTWORLD
api-version: 1.13