diff --git a/src/me/staartvin/utils/pluginlibrary/Library.java b/src/me/staartvin/utils/pluginlibrary/Library.java index f2cb8f5..c783876 100644 --- a/src/me/staartvin/utils/pluginlibrary/Library.java +++ b/src/me/staartvin/utils/pluginlibrary/Library.java @@ -1,6 +1,7 @@ package me.staartvin.utils.pluginlibrary; import me.staartvin.utils.pluginlibrary.hooks.*; +import org.bukkit.Bukkit; /** * This class holds all libraries PluginLibrary has. @@ -11,68 +12,70 @@ */ public enum Library { - AUTORANK("Autorank", new AutorankHook(), "Staartvin"), - MCMMO("mcMMO", new McMMOHook(), "t00thpick1"), - FACTIONS("Factions", new FactionsHook(), "Cayorion", "com.massivecraft.factions.Factions"), - ONTIME("OnTime", new OnTimeHook(), "Edge209"), - AFKTERMINATOR("afkTerminator", new AFKTerminatorHook(), "Edge209"), - ROYALCOMMANDS("RoyalCommands", new RoyalCommandsHook(), "WizardCM"), - ULTIMATECORE("UltimateCore", new UltimateCoreHook(), "Bammerbom"), - STATZ("Statz", new StatzHook(), "Staartvin"), - ACIDISLAND("AcidIsland", new AcidIslandHook(), "tastybento"), - ADVANCEDACHIEVEMENTS("AdvancedAchievements", new AdvancedAchievementsHook(), "DarkPyves"), - ASKYBLOCK("ASkyBlock", new ASkyBlockHook(), "tastybento"), - BATTLELEVELS("BattleLevels", new BattleLevelsHook(), "RobiRami"), - GRIEFPREVENTION("GriefPrevention", new GriefPreventionHook(), "RoboMWM"), - JOBS("Jobs", new JobsHook(), "Zrips"), - RPGME("RPGme", new RPGmeHook(), "Flamedek"), - USKYBLOCK("uSkyBlock", new uSkyBlockHook(), "R4zorax"), - VAULT("Vault", new VaultHook(), "Kainzo"), - WORLDGUARD("WorldGuard", new WorldGuardHook(), "sk89q"), - ESSENTIALSX("Essentials", "EssentialsX", new EssentialsXHook(), "drtshock"), - QUESTS("Quests", new QuestsHook(), "PikaMug", "me.blackvein.quests.Quests"), - STATS("Stats", new StatsHook(), "Lolmewn"), - QUESTS_ALTERNATIVE("Quests", new QuestsAlternative(), "LMBishop", "com.leonardobishop.quests.Quests"), - SAVAGE_FACTIONS("Factions", "SavageFactions", new SavageFactionsHook(), "ProSavage", "com.massivecraft.factions" + + AUTORANK("Autorank", AutorankHook.class, "Staartvin"), + MCMMO("mcMMO", McMMOHook.class, "t00thpick1"), + FACTIONS("Factions", FactionsHook.class, "Cayorion", "com.massivecraft.factions.Factions"), + ONTIME("OnTime", OnTimeHook.class, "Edge209"), + AFKTERMINATOR("afkTerminator", AFKTerminatorHook.class, "Edge209"), + ROYALCOMMANDS("RoyalCommands", RoyalCommandsHook.class, "WizardCM"), + ULTIMATECORE("UltimateCore", UltimateCoreHook.class, "Bammerbom"), + STATZ("Statz", StatzHook.class, "Staartvin"), + ACIDISLAND("AcidIsland", AcidIslandHook.class, "tastybento"), + ADVANCEDACHIEVEMENTS("AdvancedAchievements", AdvancedAchievementsHook.class, "DarkPyves"), + ASKYBLOCK("ASkyBlock", ASkyBlockHook.class, "tastybento"), + BATTLELEVELS("BattleLevels", BattleLevelsHook.class, "RobiRami"), + GRIEFPREVENTION("GriefPrevention", GriefPreventionHook.class, "RoboMWM"), + JOBS("Jobs", JobsHook.class, "Zrips"), + RPGME("RPGme", RPGmeHook.class, "Flamedek"), + USKYBLOCK("uSkyBlock", uSkyBlockHook.class, "R4zorax"), + VAULT("Vault", VaultHook.class, "Kainzo"), + WORLDGUARD("WorldGuard", WorldGuardHook.class, "sk89q"), + ESSENTIALSX("Essentials", "EssentialsX", EssentialsXHook.class, "drtshock"), + QUESTS("Quests", QuestsHook.class, "PikaMug", "me.blackvein.quests.Quests"), + STATS("Stats", StatsHook.class, "Lolmewn"), + QUESTS_ALTERNATIVE("Quests", QuestsAlternative.class, "LMBishop", "com.leonardobishop.quests.Quests"), + SAVAGE_FACTIONS("Factions", "SavageFactions", SavageFactionsHook.class, "ProSavage", "com.massivecraft.factions" + ".SavageFactions"), - PLAYERPOINTS("PlayerPoints", new PlayerPointsHook(), "Blackixx"), - NUVOTIFIER("Votifier", "NuVotifier", new NuVotifierHook(), "Ichbinjoe", "com.vexsoftware.votifier" + + PLAYERPOINTS("PlayerPoints", PlayerPointsHook.class, "Blackixx"), + NUVOTIFIER("Votifier", "NuVotifier", NuVotifierHook.class, "Ichbinjoe", "com.vexsoftware.votifier" + ".NuVotifierBukkit"), - CMI("CMI", new CMIHook(), "Zrips"), - UHCSTATS("UhcStats", new UHCStatsHook(), "Mezy"), - TOWNY_ADVANCED("Towny", new TownyAdvancedHook(), "Shade"), - MCRPG("McRPG", new McRPGHook(), "Eunoians"); + CMI("CMI", CMIHook.class, "Zrips"), + UHCSTATS("UhcStats", UHCStatsHook.class, "Mezy"), + TOWNY_ADVANCED("Towny", TownyAdvancedHook.class, "Shade"), + MCRPG("McRPG", McRPGHook.class, "Eunoians"); private final String internalPluginName; private final String authorName; - private final LibraryHook hook; + private final Class libraryClass; + private LibraryHook hook; private String humanPluginName; private String mainClass; - Library(String pluginName, String humanPluginName, LibraryHook hook, String authorName) { + Library(String pluginName, String humanPluginName, Class libraryClass, String authorName) { this.internalPluginName = pluginName; this.humanPluginName = humanPluginName; - this.hook = hook; + this.libraryClass = libraryClass; this.authorName = authorName; } - Library(String pluginName, LibraryHook hook, String authorName) { + Library(String pluginName, Class libraryClass, String authorName) { this.internalPluginName = pluginName; - this.hook = hook; + this.libraryClass = libraryClass; this.authorName = authorName; } - Library(String pluginName, LibraryHook hook, String authorName, String mainClass) { + Library(String pluginName, Class libraryClass, String authorName, String mainClass) { this.internalPluginName = pluginName; - this.hook = hook; + this.libraryClass = libraryClass; this.authorName = authorName; this.mainClass = mainClass; } - Library(String pluginName, String humanPluginName, LibraryHook hook, String authorName, String mainClass) { + Library(String pluginName, String humanPluginName, Class libraryClass, String authorName, + String mainClass) { this.internalPluginName = pluginName; this.humanPluginName = humanPluginName; - this.hook = hook; + this.libraryClass = libraryClass; this.authorName = authorName; this.mainClass = mainClass; } @@ -100,6 +103,16 @@ public String getInternalPluginName() { } public LibraryHook getHook() { + + // Check if hook is not initialized yet. + if (hook == null) { + try { + hook = libraryClass.newInstance(); + } catch (InstantiationException | IllegalAccessException e) { + e.printStackTrace(); + } + } + return hook; } @@ -132,4 +145,14 @@ public boolean hasMainClass() { public void setMainClass(String mainClass) { this.mainClass = mainClass; } + + /** + * Check if this plugin is installed on the server. + * + * @return true if the plugin is enabled, false otherwise. + */ + public boolean isPluginInstalled() { + return Bukkit.getPluginManager().isPluginEnabled(Library.MCRPG.getInternalPluginName()); + } + } diff --git a/src/me/staartvin/utils/pluginlibrary/PluginLibrary.java b/src/me/staartvin/utils/pluginlibrary/PluginLibrary.java index f89703a..cf4d668 100644 --- a/src/me/staartvin/utils/pluginlibrary/PluginLibrary.java +++ b/src/me/staartvin/utils/pluginlibrary/PluginLibrary.java @@ -122,10 +122,9 @@ public int loadLibraries() { int count = 0; for (me.staartvin.utils.pluginlibrary.Library l : me.staartvin.utils.pluginlibrary.Library.values()) { - LibraryHook libraryHook = l.getHook(); - - if (LibraryHook.isPluginAvailable(l) && libraryHook.isAvailable()) { + if (LibraryHook.isPluginAvailable(l)) { try { + LibraryHook libraryHook = l.getHook(); if (libraryHook.hook()) { loadedLibraries.add(l); count++; diff --git a/src/me/staartvin/utils/pluginlibrary/hooks/AFKTerminatorHook.java b/src/me/staartvin/utils/pluginlibrary/hooks/AFKTerminatorHook.java index 2fec7eb..bb1a274 100644 --- a/src/me/staartvin/utils/pluginlibrary/hooks/AFKTerminatorHook.java +++ b/src/me/staartvin/utils/pluginlibrary/hooks/AFKTerminatorHook.java @@ -18,19 +18,9 @@ */ public class AFKTerminatorHook extends LibraryHook implements AFKManager { - /* - * (non-Javadoc) - * - * @see me.staartvin.utils.pluginlibrary.hooks.LibraryHook#isAvailable() - */ - @Override - public boolean isAvailable() { - return this.getServer().getPluginManager().isPluginEnabled(Library.AFKTERMINATOR.getInternalPluginName()); - } - @Override public boolean isHooked() { - return isAvailable(); + return isPluginAvailable(Library.AFKTERMINATOR); } /* @@ -40,10 +30,10 @@ public boolean isHooked() { */ @Override public boolean hook() { - // All api calls are done static, so there is no need to get the plugin - // class. + // All api calls are done static, so there is no need to get the plugin + // class. // We only check if the plugin is available. - return isAvailable(); + return isPluginAvailable(Library.AFKTERMINATOR); } /** diff --git a/src/me/staartvin/utils/pluginlibrary/hooks/ASkyBlockHook.java b/src/me/staartvin/utils/pluginlibrary/hooks/ASkyBlockHook.java index 71534bf..1b0bf22 100644 --- a/src/me/staartvin/utils/pluginlibrary/hooks/ASkyBlockHook.java +++ b/src/me/staartvin/utils/pluginlibrary/hooks/ASkyBlockHook.java @@ -18,15 +18,6 @@ public class ASkyBlockHook extends LibraryHook { private ASkyBlock aSkyBlock; - /* - * (non-Javadoc) - * - * @see me.staartvin.utils.pluginlibrary.hooks.LibraryHook#isAvailable() - */ - @Override - public boolean isAvailable() { - return this.getServer().getPluginManager().isPluginEnabled(Library.ASKYBLOCK.getInternalPluginName()); - } @Override public boolean isHooked() { @@ -41,7 +32,7 @@ public boolean isHooked() { @Override public boolean hook() { - if (!isAvailable()) + if (!isPluginAvailable(Library.ASKYBLOCK)) return false; aSkyBlock = (ASkyBlock) this.getServer().getPluginManager() diff --git a/src/me/staartvin/utils/pluginlibrary/hooks/AcidIslandHook.java b/src/me/staartvin/utils/pluginlibrary/hooks/AcidIslandHook.java index 28e5407..1504c15 100644 --- a/src/me/staartvin/utils/pluginlibrary/hooks/AcidIslandHook.java +++ b/src/me/staartvin/utils/pluginlibrary/hooks/AcidIslandHook.java @@ -18,17 +18,6 @@ public class AcidIslandHook extends LibraryHook { private ASkyBlock acidIsland; - /* - * (non-Javadoc) - * - * @see me.staartvin.utils.pluginlibrary.hooks.LibraryHook#isAvailable() - */ - @Override - public boolean isAvailable() { - return this.getServer().getPluginManager().isPluginEnabled(Library.ACIDISLAND - .getInternalPluginName()); - } - @Override public boolean isHooked() { return acidIsland != null; @@ -42,7 +31,7 @@ public boolean isHooked() { @Override public boolean hook() { - if (!isAvailable()) + if (!isPluginAvailable(Library.ACIDISLAND)) return false; acidIsland = (ASkyBlock) this.getServer().getPluginManager() diff --git a/src/me/staartvin/utils/pluginlibrary/hooks/AdvancedAchievementsHook.java b/src/me/staartvin/utils/pluginlibrary/hooks/AdvancedAchievementsHook.java index 0a51b34..421ca40 100644 --- a/src/me/staartvin/utils/pluginlibrary/hooks/AdvancedAchievementsHook.java +++ b/src/me/staartvin/utils/pluginlibrary/hooks/AdvancedAchievementsHook.java @@ -17,17 +17,6 @@ public class AdvancedAchievementsHook extends LibraryHook { private AdvancedAchievements advancedAchievements; - /* - * (non-Javadoc) - * - * @see me.staartvin.utils.pluginlibrary.hooks.LibraryHook#isAvailable() - */ - @Override - public boolean isAvailable() { - return this.getServer().getPluginManager().isPluginEnabled(Library.ADVANCEDACHIEVEMENTS - .getInternalPluginName()); - } - @Override public boolean isHooked() { return advancedAchievements != null; @@ -41,7 +30,7 @@ public boolean isHooked() { @Override public boolean hook() { - if (!isAvailable()) + if (!isPluginAvailable(Library.ADVANCEDACHIEVEMENTS)) return false; advancedAchievements = (AdvancedAchievements) this.getServer().getPluginManager() diff --git a/src/me/staartvin/utils/pluginlibrary/hooks/AutorankHook.java b/src/me/staartvin/utils/pluginlibrary/hooks/AutorankHook.java index 8852d83..fcb9642 100644 --- a/src/me/staartvin/utils/pluginlibrary/hooks/AutorankHook.java +++ b/src/me/staartvin/utils/pluginlibrary/hooks/AutorankHook.java @@ -23,15 +23,6 @@ public class AutorankHook extends LibraryHook { private Autorank autorank; - /* - * (non-Javadoc) - * - * @see me.staartvin.utils.pluginlibrary.LibraryHook#isAvailable() - */ - @Override - public boolean isAvailable() { - return true; - } @Override public boolean isHooked() { @@ -45,7 +36,7 @@ public boolean isHooked() { */ @Override public boolean hook() { - if (!isAvailable()) + if (!isPluginAvailable(Library.AUTORANK)) return false; autorank = (Autorank) this.getServer().getPluginManager() diff --git a/src/me/staartvin/utils/pluginlibrary/hooks/BattleLevelsHook.java b/src/me/staartvin/utils/pluginlibrary/hooks/BattleLevelsHook.java index dfdb3fc..79bb6aa 100644 --- a/src/me/staartvin/utils/pluginlibrary/hooks/BattleLevelsHook.java +++ b/src/me/staartvin/utils/pluginlibrary/hooks/BattleLevelsHook.java @@ -15,19 +15,10 @@ */ public class BattleLevelsHook extends LibraryHook { - /* - * (non-Javadoc) - * - * @see me.staartvin.utils.pluginlibrary.hooks.LibraryHook#isAvailable() - */ - @Override - public boolean isAvailable() { - return this.getServer().getPluginManager().isPluginEnabled(Library.BATTLELEVELS.getInternalPluginName()); - } @Override public boolean isHooked() { - return isAvailable(); + return isPluginAvailable(Library.BATTLELEVELS); } /* @@ -37,7 +28,7 @@ public boolean isHooked() { */ @Override public boolean hook() { - return isAvailable(); + return isPluginAvailable(Library.BATTLELEVELS); } /** diff --git a/src/me/staartvin/utils/pluginlibrary/hooks/CMIHook.java b/src/me/staartvin/utils/pluginlibrary/hooks/CMIHook.java index 90a8c6a..bdd4751 100644 --- a/src/me/staartvin/utils/pluginlibrary/hooks/CMIHook.java +++ b/src/me/staartvin/utils/pluginlibrary/hooks/CMIHook.java @@ -16,19 +16,10 @@ */ public class CMIHook extends me.staartvin.utils.pluginlibrary.hooks.LibraryHook implements AFKManager { - /* - * (non-Javadoc) - * - * @see me.staartvin.plugins.pluginlibrary.hooks.LibraryHook#isAvailable() - */ - @Override - public boolean isAvailable() { - return this.getServer().getPluginManager().isPluginEnabled(Library.CMI.getInternalPluginName()); - } @Override public boolean isHooked() { - return isAvailable(); + return isPluginAvailable(Library.CMI); } /* @@ -38,10 +29,10 @@ public boolean isHooked() { */ @Override public boolean hook() { - // All api calls are done static, so there is no need to get the plugin - // class. + // All api calls are done static, so there is no need to get the plugin + // class. // We only check if the plugin is available. - return isAvailable(); + return isPluginAvailable(Library.CMI); } /** diff --git a/src/me/staartvin/utils/pluginlibrary/hooks/EssentialsXHook.java b/src/me/staartvin/utils/pluginlibrary/hooks/EssentialsXHook.java index 0f9e591..80a1a38 100644 --- a/src/me/staartvin/utils/pluginlibrary/hooks/EssentialsXHook.java +++ b/src/me/staartvin/utils/pluginlibrary/hooks/EssentialsXHook.java @@ -19,15 +19,6 @@ public class EssentialsXHook extends LibraryHook implements AFKManager { private Essentials essentials; - /* - * (non-Javadoc) - * - * @see me.staartvin.plugins.pluginlibrary.LibraryHook#isAvailable() - */ - @Override - public boolean isAvailable() { - return this.getServer().getPluginManager().isPluginEnabled(Library.ESSENTIALSX.getInternalPluginName()); - } @Override public boolean isHooked() { @@ -41,7 +32,7 @@ public boolean isHooked() { */ @Override public boolean hook() { - if (!isAvailable()) + if (!isPluginAvailable(Library.ESSENTIALSX)) return false; essentials = (Essentials) this.getServer().getPluginManager() diff --git a/src/me/staartvin/utils/pluginlibrary/hooks/FactionsHook.java b/src/me/staartvin/utils/pluginlibrary/hooks/FactionsHook.java index 327d030..34c49d5 100644 --- a/src/me/staartvin/utils/pluginlibrary/hooks/FactionsHook.java +++ b/src/me/staartvin/utils/pluginlibrary/hooks/FactionsHook.java @@ -27,16 +27,6 @@ public class FactionsHook extends LibraryHook { private Factions factions; - /* - * (non-Javadoc) - * - * @see me.staartvin.utils.pluginlibrary.LibraryHook#isAvailable() - */ - @Override - public boolean isAvailable() { - return this.getServer().getPluginManager().isPluginEnabled(Library.FACTIONS.getInternalPluginName()); - } - @Override public boolean isHooked() { return factions != null; @@ -49,8 +39,8 @@ public boolean isHooked() { */ @Override public boolean hook() { - if (!isAvailable()) - return false; + if (!isPluginAvailable(Library.FACTIONS)) + return false; Plugin plugin = this.getServer().getPluginManager() .getPlugin(Library.FACTIONS.getInternalPluginName()); diff --git a/src/me/staartvin/utils/pluginlibrary/hooks/GriefPreventionHook.java b/src/me/staartvin/utils/pluginlibrary/hooks/GriefPreventionHook.java index efc9d33..b4bbd12 100644 --- a/src/me/staartvin/utils/pluginlibrary/hooks/GriefPreventionHook.java +++ b/src/me/staartvin/utils/pluginlibrary/hooks/GriefPreventionHook.java @@ -20,17 +20,6 @@ public class GriefPreventionHook extends LibraryHook { private GriefPrevention griefPrevention; - /* - * (non-Javadoc) - * - * @see me.staartvin.utils.pluginlibrary.hooks.LibraryHook#isAvailable() - */ - @Override - public boolean isAvailable() { - return this.getServer().getPluginManager().isPluginEnabled(Library.GRIEFPREVENTION - .getInternalPluginName()); - } - @Override public boolean isHooked() { return griefPrevention != null; @@ -44,7 +33,7 @@ public boolean isHooked() { @Override public boolean hook() { - if (!isAvailable()) + if (!isPluginAvailable(Library.GRIEFPREVENTION)) return false; griefPrevention = (GriefPrevention) this.getServer().getPluginManager() diff --git a/src/me/staartvin/utils/pluginlibrary/hooks/JobsHook.java b/src/me/staartvin/utils/pluginlibrary/hooks/JobsHook.java index f52ca96..ce33dd3 100644 --- a/src/me/staartvin/utils/pluginlibrary/hooks/JobsHook.java +++ b/src/me/staartvin/utils/pluginlibrary/hooks/JobsHook.java @@ -21,19 +21,9 @@ */ public class JobsHook extends LibraryHook { - /* - * (non-Javadoc) - * - * @see me.staartvin.plugins.pluginlibrary.hooks.LibraryHook#isAvailable() - */ - @Override - public boolean isAvailable() { - return this.getServer().getPluginManager().isPluginEnabled(Library.JOBS.getInternalPluginName()); - } - @Override public boolean isHooked() { - return isAvailable(); + return isPluginAvailable(Library.JOBS); } /* @@ -43,7 +33,7 @@ public boolean isHooked() { */ @Override public boolean hook() { - return isAvailable(); + return isPluginAvailable(Library.JOBS); } diff --git a/src/me/staartvin/utils/pluginlibrary/hooks/LibraryHook.java b/src/me/staartvin/utils/pluginlibrary/hooks/LibraryHook.java index e4a2700..0470719 100644 --- a/src/me/staartvin/utils/pluginlibrary/hooks/LibraryHook.java +++ b/src/me/staartvin/utils/pluginlibrary/hooks/LibraryHook.java @@ -12,10 +12,27 @@ * Date created: 14:13:45 12 aug. 2015 * * @author Staartvin - * */ public abstract class LibraryHook { + /** + * Check if the given library is available. This means that it exists in the plugins folder and is enabled. + * + * @param library Library to check + * @return true if it exists and is started, false otherwise. + */ + public static boolean isPluginAvailable(Library library) { + Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin(library.getInternalPluginName()); + + if (plugin == null) return false; + + // Check if plugin has a main class defined. + // If so, check if the main class is equal to that of the enabled plugin to make sure we have the correct one. + // Some plugins have the same name, but are of different authors. Checking the main class path makes sure we + // have the correct one. + return !library.hasMainClass() || plugin.getDescription().getMain().equalsIgnoreCase(library.getMainClass()); + } + protected PluginLibrary getPlugin() { return Bukkit.getServer().getServicesManager().load(PluginLibrary.class); } @@ -29,19 +46,8 @@ protected Server getServer() { } /** - * Whether or not the plugin is available. Checking whether a plugin is available may require some additional - * checks. This method can be used in conjunction with the {@link #isPluginAvailable(Library)} method to check for - * availability of a plugin. - * - * @return true when plugin is available to use; false otherwise. - * @deprecated Use {@link #isPluginAvailable instead}. - */ - @Deprecated - public abstract boolean isAvailable(); - - /** - * Check whether PluginLibrary is hooked into this plugin. Note that {@link #isAvailable()} only checks whether - * the plugin is available, but not whether it is hooked. + * Check whether PluginLibrary is hooked into this plugin. Note that {@link #isPluginAvailable(Library)} only checks + * whether the plugin is available, but not whether it is hooked. *

* If the plugin is not hooked, it cannot be used properly and should first be hooked by calling {@link #hook()}. * @@ -50,42 +56,9 @@ protected Server getServer() { public abstract boolean isHooked(); /** - * Check if the given library is available. This means that it exists in the plugins folder and is enabled. + * Hook the plugin to make sure data can be retrieved. * - * @param library Library to check - * @return true if it exists and is started, false otherwise. + * @return true if PluginLibrary could successfully hook; false otherwise. */ - public static boolean isPluginAvailable(Library library) { - Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin(library.getInternalPluginName()); - -// System.out.println("Library " + library.getHumanPluginName() + " plugin: " + plugin); -// -// if (plugin != null) { -// System.out.println("Plugin enabled: " + plugin.isEnabled()); -// } else { -// System.out.println("Plugin enabled: false"); -// } - - if (plugin == null) return false; - -// System.out.println("Library has main class: " + library.hasMainClass()); -// -// if (library.hasMainClass()) { -// System.out.println("(Should be) Library main class: " + library.getMainClass()); -// System.out.println("(Is) Library main class: " + plugin.getDescription().getMain()); -// } - - // Check if plugin has a main class defined. - // If so, check if the main class is equal to that of the enabled plugin to make sure we have the correct one. - // Some plugins have the same name, but are of different authors. Checking the main class path makes sure we - // have the correct one. - return !library.hasMainClass() || plugin.getDescription().getMain().equalsIgnoreCase(library.getMainClass()); - } - - /** - * Hook the plugin to make sure data can be retrieved. - * - * @return true if PluginLibrary could successfully hook; false otherwise. - */ - public abstract boolean hook(); + public abstract boolean hook(); } diff --git a/src/me/staartvin/utils/pluginlibrary/hooks/McMMOHook.java b/src/me/staartvin/utils/pluginlibrary/hooks/McMMOHook.java index 7371588..6f89888 100644 --- a/src/me/staartvin/utils/pluginlibrary/hooks/McMMOHook.java +++ b/src/me/staartvin/utils/pluginlibrary/hooks/McMMOHook.java @@ -27,15 +27,6 @@ public class McMMOHook extends LibraryHook { private mcMMO api; - /* - * (non-Javadoc) - * - * @see me.staartvin.plugins.pluginlibrary.hooks.LibraryHook#isAvailable() - */ - @Override - public boolean isAvailable() { - return this.getServer().getPluginManager().isPluginEnabled(Library.MCMMO.getInternalPluginName()); - } @Override public boolean isHooked() { @@ -49,7 +40,7 @@ public boolean isHooked() { */ @Override public boolean hook() { - if (!isAvailable()) + if (!isPluginAvailable(Library.MCMMO)) return false; api = (mcMMO) this.getServer().getPluginManager().getPlugin(Library.MCMMO.getInternalPluginName()); diff --git a/src/me/staartvin/utils/pluginlibrary/hooks/McRPGHook.java b/src/me/staartvin/utils/pluginlibrary/hooks/McRPGHook.java index db73bd7..14dc792 100644 --- a/src/me/staartvin/utils/pluginlibrary/hooks/McRPGHook.java +++ b/src/me/staartvin/utils/pluginlibrary/hooks/McRPGHook.java @@ -18,80 +18,70 @@ */ public class McRPGHook extends LibraryHook { - /* - * (non-Javadoc) - * - * @see me.staartvin.plugins.pluginlibrary.hooks.LibraryHook#isAvailable() - */ - @Override - public boolean isAvailable() { - return this.getServer().getPluginManager().isPluginEnabled(Library.MCRPG.getInternalPluginName()); - } - - @Override - public boolean isHooked() { - return isAvailable(); - } - - /* - * (non-Javadoc) - * - * @see me.staartvin.plugins.pluginlibrary.hooks.LibraryHook#hook() - */ - @Override - public boolean hook() { - // All api calls are done static, so there is no need to get the plugin - // class. - // We only check if the plugin is available. - - return isAvailable(); - } - - /** - * Get the {@link McRPGPlayer} object matching the given uuid. - * - * @param uuid UUID of the player. - * @return Matched object or none if it doesn't exist. - */ - public Optional getPlayer(UUID uuid) { - - if (!this.isHooked()) return Optional.empty(); - - try { - return Optional.ofNullable(PlayerManager.getPlayer(uuid)); - } catch (McRPGPlayerNotFoundException e) { - return Optional.of(new McRPGPlayer(uuid)); - } - } - - /** - * Get the power level of the given player. - * - * @param uuid UUID of the player - * @return power level or zero if the player could not be found. - */ - public int getPowerLevel(UUID uuid) { - Optional player = this.getPlayer(uuid); - - return player.map(McRPGPlayer::getPowerLevel).orElse(0); - } - - /** - * Get the level of a skill for the given player - * - * @param uuid UUID of the player - * @param skillName Name of the skill (use {@link Skills} as reference) - * @return level of a skill or zero if the skill or player cannot be found. - */ - public int getSkillLevel(UUID uuid, String skillName) { - Optional player = this.getPlayer(uuid); - - if (!player.isPresent()) return 0; - - Skills matchingSkill = Skills.fromString(skillName); - - if (matchingSkill == null) return 0; - - return player.map(play -> play.getSkill(matchingSkill).getCurrentLevel()).orElse(0); - } + @Override + public boolean isHooked() { + return isPluginAvailable(Library.MCRPG); + } + + /* + * (non-Javadoc) + * + * @see me.staartvin.plugins.pluginlibrary.hooks.LibraryHook#hook() + */ + @Override + public boolean hook() { + // All api calls are done static, so there is no need to get the plugin + // class. + // We only check if the plugin is available. + + return isPluginAvailable(Library.MCRPG); + } + + /** + * Get the {@link McRPGPlayer} object matching the given uuid. + * + * @param uuid UUID of the player. + * @return Matched object or none if it doesn't exist. + */ + public Optional getPlayer(UUID uuid) { + + if (!this.isHooked()) return Optional.empty(); + + try { + return Optional.ofNullable(PlayerManager.getPlayer(uuid)); + } catch (McRPGPlayerNotFoundException e) { + return Optional.of(new McRPGPlayer(uuid)); + } + } + + /** + * Get the power level of the given player. + * + * @param uuid UUID of the player + * @return power level or zero if the player could not be found. + */ + public int getPowerLevel(UUID uuid) { + Optional player = this.getPlayer(uuid); + + return player.map(McRPGPlayer::getPowerLevel).orElse(0); + } + + /** + * Get the level of a skill for the given player + * + * @param uuid UUID of the player + * @param skillName Name of the skill (use {@link Skills} as reference) + * @return level of a skill or zero if the skill or player cannot be found. + */ + public int getSkillLevel(UUID uuid, String skillName) { + Optional player = this.getPlayer(uuid); + + if (!player.isPresent()) return 0; + + Skills matchingSkill = Skills.fromString(skillName); + + if (matchingSkill == null) return 0; + + return player.map(play -> play.getSkill(matchingSkill).getCurrentLevel()).orElse(0); + } } diff --git a/src/me/staartvin/utils/pluginlibrary/hooks/NuVotifierHook.java b/src/me/staartvin/utils/pluginlibrary/hooks/NuVotifierHook.java index 99c3e15..35724d8 100644 --- a/src/me/staartvin/utils/pluginlibrary/hooks/NuVotifierHook.java +++ b/src/me/staartvin/utils/pluginlibrary/hooks/NuVotifierHook.java @@ -16,15 +16,6 @@ public class NuVotifierHook extends LibraryHook { private NuVotifierBukkit api; - /* - * (non-Javadoc) - * - * @see me.staartvin.plugins.pluginlibrary.hooks.LibraryHook#isAvailable() - */ - @Override - public boolean isAvailable() { - return this.getServer().getPluginManager().isPluginEnabled(Library.NUVOTIFIER.getInternalPluginName()); - } @Override public boolean isHooked() { @@ -39,7 +30,7 @@ public boolean isHooked() { @Override public boolean hook() { - if (!isAvailable()) { + if (!isPluginAvailable(Library.NUVOTIFIER)) { return false; } diff --git a/src/me/staartvin/utils/pluginlibrary/hooks/OnTimeHook.java b/src/me/staartvin/utils/pluginlibrary/hooks/OnTimeHook.java index f138c89..d15b0bb 100644 --- a/src/me/staartvin/utils/pluginlibrary/hooks/OnTimeHook.java +++ b/src/me/staartvin/utils/pluginlibrary/hooks/OnTimeHook.java @@ -20,19 +20,9 @@ */ public class OnTimeHook extends LibraryHook { - /* - * (non-Javadoc) - * - * @see me.staartvin.plugins.pluginlibrary.hooks.LibraryHook#isAvailable() - */ - @Override - public boolean isAvailable() { - return this.getServer().getPluginManager().isPluginEnabled(Library.ONTIME.getInternalPluginName()); - } - @Override public boolean isHooked() { - return isAvailable(); + return isPluginAvailable(Library.ONTIME); } /* @@ -42,10 +32,10 @@ public boolean isHooked() { */ @Override public boolean hook() { - // All api calls are done static, so there is no need to get the plugin - // class. + // All api calls are done static, so there is no need to get the plugin + // class. // We only check if the plugin is available. - return isAvailable(); + return isPluginAvailable(Library.ONTIME); } /** diff --git a/src/me/staartvin/utils/pluginlibrary/hooks/PlayerPointsHook.java b/src/me/staartvin/utils/pluginlibrary/hooks/PlayerPointsHook.java index a332352..0a5f2e1 100644 --- a/src/me/staartvin/utils/pluginlibrary/hooks/PlayerPointsHook.java +++ b/src/me/staartvin/utils/pluginlibrary/hooks/PlayerPointsHook.java @@ -17,15 +17,6 @@ public class PlayerPointsHook extends LibraryHook { private PlayerPoints api; - /* - * (non-Javadoc) - * - * @see me.staartvin.plugins.pluginlibrary.hooks.LibraryHook#isAvailable() - */ - @Override - public boolean isAvailable() { - return this.getServer().getPluginManager().isPluginEnabled(Library.PLAYERPOINTS.getInternalPluginName()); - } @Override public boolean isHooked() { @@ -39,8 +30,8 @@ public boolean isHooked() { */ @Override public boolean hook() { - if (!isAvailable()) - return false; + if (!isPluginAvailable(Library.PLAYERPOINTS)) + return false; api = (PlayerPoints) this.getServer().getPluginManager() .getPlugin(Library.PLAYERPOINTS.getInternalPluginName()); diff --git a/src/me/staartvin/utils/pluginlibrary/hooks/QuestsAlternative.java b/src/me/staartvin/utils/pluginlibrary/hooks/QuestsAlternative.java index 087f32b..89a5f4a 100644 --- a/src/me/staartvin/utils/pluginlibrary/hooks/QuestsAlternative.java +++ b/src/me/staartvin/utils/pluginlibrary/hooks/QuestsAlternative.java @@ -22,19 +22,6 @@ public class QuestsAlternative extends LibraryHook { private Quests quests; - /* - * (non-Javadoc) - * - * @see me.staartvin.plugins.pluginlibrary.LibraryHook#isAvailable() - */ - @Override - public boolean isAvailable() { - Plugin plugin = this.getServer().getPluginManager().getPlugin(Library.QUESTS_ALTERNATIVE - .getInternalPluginName()); - - return plugin != null && plugin.isEnabled(); - } - @Override public boolean isHooked() { return quests != null; @@ -49,7 +36,7 @@ public boolean isHooked() { */ @Override public boolean hook() { - if (!isAvailable()) + if (!isPluginAvailable(Library.QUESTS_ALTERNATIVE)) return false; Plugin plugin = this.getServer().getPluginManager() diff --git a/src/me/staartvin/utils/pluginlibrary/hooks/QuestsHook.java b/src/me/staartvin/utils/pluginlibrary/hooks/QuestsHook.java index ca943cc..60ceaed 100644 --- a/src/me/staartvin/utils/pluginlibrary/hooks/QuestsHook.java +++ b/src/me/staartvin/utils/pluginlibrary/hooks/QuestsHook.java @@ -19,19 +19,6 @@ public class QuestsHook extends LibraryHook { private Quests quests; - /* - * (non-Javadoc) - * - * @see me.staartvin.utils.pluginlibrary.LibraryHook#isAvailable() - */ - @Override - public boolean isAvailable() { - Plugin plugin = this.getServer().getPluginManager().getPlugin(Library.QUESTS - .getInternalPluginName()); - - return plugin != null && plugin.isEnabled(); - } - @Override public boolean isHooked() { return quests != null; @@ -44,7 +31,7 @@ public boolean isHooked() { */ @Override public boolean hook() { - if (!isAvailable()) + if (!isPluginAvailable(Library.QUESTS)) return false; Plugin plugin = this.getServer().getPluginManager() diff --git a/src/me/staartvin/utils/pluginlibrary/hooks/RPGmeHook.java b/src/me/staartvin/utils/pluginlibrary/hooks/RPGmeHook.java index 46661c0..5a6be90 100644 --- a/src/me/staartvin/utils/pluginlibrary/hooks/RPGmeHook.java +++ b/src/me/staartvin/utils/pluginlibrary/hooks/RPGmeHook.java @@ -19,19 +19,9 @@ */ public class RPGmeHook extends LibraryHook { - /* - * (non-Javadoc) - * - * @see me.staartvin.plugins.pluginlibrary.hooks.LibraryHook#isAvailable() - */ - @Override - public boolean isAvailable() { - return this.getServer().getPluginManager().isPluginEnabled(Library.RPGME.getInternalPluginName()); - } - @Override public boolean isHooked() { - return isAvailable(); + return isPluginAvailable(Library.RPGME); } /* @@ -41,7 +31,7 @@ public boolean isHooked() { */ @Override public boolean hook() { - return isAvailable(); + return isPluginAvailable(Library.RPGME); } /** diff --git a/src/me/staartvin/utils/pluginlibrary/hooks/RoyalCommandsHook.java b/src/me/staartvin/utils/pluginlibrary/hooks/RoyalCommandsHook.java index 8cb5928..38996a2 100644 --- a/src/me/staartvin/utils/pluginlibrary/hooks/RoyalCommandsHook.java +++ b/src/me/staartvin/utils/pluginlibrary/hooks/RoyalCommandsHook.java @@ -24,16 +24,6 @@ public class RoyalCommandsHook extends LibraryHook implements AFKManager { private RoyalCommands api; - /* - * (non-Javadoc) - * - * @see me.staartvin.utils.pluginlibrary.hooks.LibraryHook#isAvailable() - */ - @Override - public boolean isAvailable() { - return this.getServer().getPluginManager().isPluginEnabled(Library.ROYALCOMMANDS.getInternalPluginName()); - } - @Override public boolean isHooked() { return api != null; @@ -46,8 +36,8 @@ public boolean isHooked() { */ @Override public boolean hook() { - if (!isAvailable()) - return false; + if (!isPluginAvailable(Library.ROYALCOMMANDS)) + return false; api = (RoyalCommands) this.getServer().getPluginManager() .getPlugin(Library.ROYALCOMMANDS.getInternalPluginName()); diff --git a/src/me/staartvin/utils/pluginlibrary/hooks/SavageFactionsHook.java b/src/me/staartvin/utils/pluginlibrary/hooks/SavageFactionsHook.java index e7d09f6..6e2ff48 100644 --- a/src/me/staartvin/utils/pluginlibrary/hooks/SavageFactionsHook.java +++ b/src/me/staartvin/utils/pluginlibrary/hooks/SavageFactionsHook.java @@ -22,17 +22,6 @@ public class SavageFactionsHook extends LibraryHook { private SavageFactions savageFactions; - /* - * (non-Javadoc) - * - * @see me.staartvin.plugins.pluginlibrary.LibraryHook#isAvailable() - */ - @Override - public boolean isAvailable() { - return this.getServer().getPluginManager().isPluginEnabled(Library.SAVAGE_FACTIONS - .getInternalPluginName()); - } - @Override public boolean isHooked() { return savageFactions != null; @@ -45,7 +34,7 @@ public boolean isHooked() { */ @Override public boolean hook() { - if (!isAvailable()) + if (!isPluginAvailable(Library.SAVAGE_FACTIONS)) return false; Plugin plugin = this.getServer().getPluginManager() diff --git a/src/me/staartvin/utils/pluginlibrary/hooks/StatsHook.java b/src/me/staartvin/utils/pluginlibrary/hooks/StatsHook.java index 4247925..e57c434 100644 --- a/src/me/staartvin/utils/pluginlibrary/hooks/StatsHook.java +++ b/src/me/staartvin/utils/pluginlibrary/hooks/StatsHook.java @@ -24,16 +24,6 @@ public class StatsHook extends LibraryHook { private BukkitMain stats; - /* - * (non-Javadoc) - * - * @see me.staartvin.plugins.pluginlibrary.hooks.LibraryHook#isAvailable() - */ - @Override - public boolean isAvailable() { - return this.getServer().getPluginManager().isPluginEnabled(Library.STATS.getInternalPluginName()); - } - @Override public boolean isHooked() { return stats != null; @@ -46,7 +36,7 @@ public boolean isHooked() { */ @Override public boolean hook() { - if (!isAvailable()) + if (!isPluginAvailable(Library.STATS)) return false; stats = (BukkitMain) this.getServer().getPluginManager().getPlugin(Library.STATS.getInternalPluginName()); @@ -448,7 +438,7 @@ private int getSpecialMobsKilled(UUID uuid, String mobName, String worldName) { * @return The amount of players a player has killed. */ public int getPlayersKilled(UUID uuid, String worldName) { - if (!this.isAvailable()) return -1; + if (!this.isHooked()) return -1; return this.getMobsKilled(uuid, "player", worldName); } diff --git a/src/me/staartvin/utils/pluginlibrary/hooks/StatzHook.java b/src/me/staartvin/utils/pluginlibrary/hooks/StatzHook.java index a9c2a58..27e8b66 100644 --- a/src/me/staartvin/utils/pluginlibrary/hooks/StatzHook.java +++ b/src/me/staartvin/utils/pluginlibrary/hooks/StatzHook.java @@ -19,16 +19,6 @@ public class StatzHook extends LibraryHook { private Statz statz; - /* - * (non-Javadoc) - * - * @see me.staartvin.plugins.pluginlibrary.LibraryHook#isAvailable() - */ - @Override - public boolean isAvailable() { - return true; - } - @Override public boolean isHooked() { return statz != null; @@ -41,7 +31,7 @@ public boolean isHooked() { */ @Override public boolean hook() { - if (!isAvailable()) + if (!isPluginAvailable(Library.STATZ)) return false; statz = (Statz) this.getServer().getPluginManager() diff --git a/src/me/staartvin/utils/pluginlibrary/hooks/TownyAdvancedHook.java b/src/me/staartvin/utils/pluginlibrary/hooks/TownyAdvancedHook.java index b923610..775fabd 100644 --- a/src/me/staartvin/utils/pluginlibrary/hooks/TownyAdvancedHook.java +++ b/src/me/staartvin/utils/pluginlibrary/hooks/TownyAdvancedHook.java @@ -16,19 +16,10 @@ */ public class TownyAdvancedHook extends LibraryHook { - /* - * (non-Javadoc) - * - * @see me.staartvin.plugins.pluginlibrary.hooks.LibraryHook#isAvailable() - */ - @Override - public boolean isAvailable() { - return this.getServer().getPluginManager().isPluginEnabled(Library.TOWNY_ADVANCED.getInternalPluginName()); - } @Override public boolean isHooked() { - return isAvailable(); + return isPluginAvailable(Library.TOWNY_ADVANCED); } /* @@ -38,21 +29,21 @@ public boolean isHooked() { */ @Override public boolean hook() { - return isAvailable(); + return isPluginAvailable(Library.TOWNY_ADVANCED); } public Optional getResident(String playerName) { if (!this.isHooked()) return Optional.empty(); - Resident resident = null; + if (!TownyAPI.getInstance().getDataSource().hasResident(playerName)) { + return Optional.empty(); + } try { - resident = TownyAPI.getInstance().getDataSource().getResident(playerName); + return Optional.ofNullable(TownyAPI.getInstance().getDataSource().getResident(playerName)); } catch (NotRegisteredException e) { return Optional.empty(); } - - return Optional.ofNullable(resident); } /** diff --git a/src/me/staartvin/utils/pluginlibrary/hooks/UHCStatsHook.java b/src/me/staartvin/utils/pluginlibrary/hooks/UHCStatsHook.java index aa31471..1f82640 100644 --- a/src/me/staartvin/utils/pluginlibrary/hooks/UHCStatsHook.java +++ b/src/me/staartvin/utils/pluginlibrary/hooks/UHCStatsHook.java @@ -18,19 +18,6 @@ public class UHCStatsHook extends LibraryHook { private UhcStats uhcStats; - /* - * (non-Javadoc) - * - * @see me.staartvin.utils.pluginlibrary.LibraryHook#isAvailable() - */ - @Override - public boolean isAvailable() { - Plugin plugin = this.getServer().getPluginManager().getPlugin(Library.UHCSTATS - .getInternalPluginName()); - - return plugin != null && plugin.isEnabled(); - } - @Override public boolean isHooked() { return uhcStats != null; @@ -43,7 +30,7 @@ public boolean isHooked() { */ @Override public boolean hook() { - if (!isAvailable()) + if (!isPluginAvailable(Library.UHCSTATS)) return false; Plugin plugin = this.getServer().getPluginManager() diff --git a/src/me/staartvin/utils/pluginlibrary/hooks/UltimateCoreHook.java b/src/me/staartvin/utils/pluginlibrary/hooks/UltimateCoreHook.java index acd85a4..0b0468c 100644 --- a/src/me/staartvin/utils/pluginlibrary/hooks/UltimateCoreHook.java +++ b/src/me/staartvin/utils/pluginlibrary/hooks/UltimateCoreHook.java @@ -18,19 +18,10 @@ public class UltimateCoreHook extends LibraryHook implements AFKManager { // private UltimateCore api; - /* - * (non-Javadoc) - * - * @see me.staartvin.utils.pluginlibrary.hooks.LibraryHook#isAvailable() - */ - @Override - public boolean isAvailable() { - return this.getServer().getPluginManager().isPluginEnabled(Library.ULTIMATECORE.getInternalPluginName()); - } @Override public boolean isHooked() { - return isAvailable(); + return isPluginAvailable(Library.ULTIMATECORE); } /* @@ -40,7 +31,7 @@ public boolean isHooked() { */ @Override public boolean hook() { - if (!isAvailable()) + if (!isPluginAvailable(Library.ULTIMATECORE)) return false; // api = (UltimateCore) this.getServer().getPluginManager() diff --git a/src/me/staartvin/utils/pluginlibrary/hooks/VaultHook.java b/src/me/staartvin/utils/pluginlibrary/hooks/VaultHook.java index eedca5b..b43ac4d 100644 --- a/src/me/staartvin/utils/pluginlibrary/hooks/VaultHook.java +++ b/src/me/staartvin/utils/pluginlibrary/hooks/VaultHook.java @@ -45,16 +45,6 @@ public static Chat getChat() { return chat; } - /* - * (non-Javadoc) - * - * @see me.staartvin.utils.pluginlibrary.hooks.LibraryHook#isAvailable() - */ - @Override - public boolean isAvailable() { - return this.getServer().getPluginManager().isPluginEnabled(Library.VAULT.getInternalPluginName()); - } - @Override public boolean isHooked() { return perms != null; @@ -68,7 +58,7 @@ public boolean isHooked() { @Override public boolean hook() { - if (!isAvailable()) { + if (!isPluginAvailable(Library.VAULT)) { return false; } diff --git a/src/me/staartvin/utils/pluginlibrary/hooks/WorldGuardHook.java b/src/me/staartvin/utils/pluginlibrary/hooks/WorldGuardHook.java index 1c29e37..1099cd5 100644 --- a/src/me/staartvin/utils/pluginlibrary/hooks/WorldGuardHook.java +++ b/src/me/staartvin/utils/pluginlibrary/hooks/WorldGuardHook.java @@ -20,17 +20,6 @@ public class WorldGuardHook extends LibraryHook { private WorldGuardPlugin worldGuard; - /* - * (non-Javadoc) - * - * @see me.staartvin.utils.pluginlibrary.LibraryHook#isAvailable() - */ - @Override - public boolean isAvailable() { - return this.getServer().getPluginManager().isPluginEnabled(Library.WORLDGUARD - .getInternalPluginName()); - } - @Override public boolean isHooked() { return worldGuard != null; @@ -43,7 +32,7 @@ public boolean isHooked() { */ @Override public boolean hook() { - if (!isAvailable()) + if (!isPluginAvailable(Library.WORLDGUARD)) return false; worldGuard = (WorldGuardPlugin) this.getServer().getPluginManager() diff --git a/src/me/staartvin/utils/pluginlibrary/hooks/uSkyBlockHook.java b/src/me/staartvin/utils/pluginlibrary/hooks/uSkyBlockHook.java index 197efed..f753612 100644 --- a/src/me/staartvin/utils/pluginlibrary/hooks/uSkyBlockHook.java +++ b/src/me/staartvin/utils/pluginlibrary/hooks/uSkyBlockHook.java @@ -16,15 +16,6 @@ public class uSkyBlockHook extends LibraryHook { private uSkyBlockAPI uSkyBlock; - /* - * (non-Javadoc) - * - * @see me.staartvin.plugins.pluginlibrary.hooks.LibraryHook#isAvailable() - */ - @Override - public boolean isAvailable() { - return this.getServer().getPluginManager().isPluginEnabled(Library.USKYBLOCK.getInternalPluginName()); - } @Override public boolean isHooked() { @@ -39,7 +30,7 @@ public boolean isHooked() { @Override public boolean hook() { - if (!isAvailable()) + if (!isPluginAvailable(Library.USKYBLOCK)) return false; uSkyBlock = (uSkyBlockAPI) this.getServer().getPluginManager()