ChestShop-3/src/main/java/com/Acrobot/ChestShop/Dependencies.java

212 lines
6.4 KiB
Java

package com.Acrobot.ChestShop;
import com.Acrobot.Breeze.Utils.MaterialUtil;
import com.Acrobot.ChestShop.Configuration.Properties;
import com.Acrobot.ChestShop.Listeners.Economy.Plugins.ReserveListener;
import com.Acrobot.ChestShop.Listeners.Economy.Plugins.VaultListener;
import com.Acrobot.ChestShop.Plugins.*;
import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.server.PluginEnableEvent;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginDescriptionFile;
import org.bukkit.plugin.PluginManager;
/**
* @author Acrobot
*/
public class Dependencies implements Listener {
public static void initializePlugins() {
PluginManager pluginManager = Bukkit.getPluginManager();
for (String dependency : ChestShop.getDependencies()) {
Plugin plugin = pluginManager.getPlugin(dependency);
if (plugin != null) {
initializePlugin(dependency, plugin);
}
}
}
private static void initializePlugin(String name, Plugin plugin) { //Really messy, right? But it's short and fast :)
Dependency dependency;
try {
dependency = Dependency.valueOf(name);
} catch (IllegalArgumentException exception) {
return;
}
switch (dependency) {
//Terrain protection plugins
case WorldGuard:
WorldGuardFlags.ENABLE_SHOP.getName(); // force the static code to run
break;
}
PluginDescriptionFile description = plugin.getDescription();
ChestShop.getBukkitLogger().info(description.getName() + " version " + description.getVersion() + " loaded.");
}
public static boolean loadPlugins() {
PluginManager pluginManager = Bukkit.getPluginManager();
for (String dependency : ChestShop.getDependencies()) {
Plugin plugin = pluginManager.getPlugin(dependency);
if (plugin != null && plugin.isEnabled()) {
loadPlugin(dependency, plugin);
}
}
return loadEconomy();
}
private static boolean loadEconomy() {
String plugin = "none";
Listener economy = null;
if(Bukkit.getPluginManager().getPlugin("Reserve") != null) {
plugin = "Reserve";
economy = ReserveListener.prepareListener();
}
if(Bukkit.getPluginManager().getPlugin("Vault") != null) {
plugin = "Vault";
economy = VaultListener.initializeVault();
}
if (economy == null) {
ChestShop.getBukkitLogger().severe("No Economy adapter found! You need to install either Vault or Reserve!");
return false;
}
ChestShop.registerListener(economy);
ChestShop.getBukkitLogger().info(plugin + " loaded!");
return true;
}
private static void loadPlugin(String name, Plugin plugin) { //Really messy, right? But it's short and fast :)
Dependency dependency;
try {
dependency = Dependency.valueOf(name);
} catch (IllegalArgumentException exception) {
return;
}
Listener listener = null;
switch (dependency) {
//Protection plugins
case LWC:
listener = new LightweightChestProtection();
break;
case Lockette:
listener = new Lockette();
break;
case LockettePro:
listener = new LockettePro();
break;
case Deadbolt:
listener = new Deadbolt();
break;
case SimpleChestLock:
listener = SimpleChestLock.getSimpleChestLock(plugin);
break;
case Residence:
if (plugin.getDescription().getVersion().startsWith("2")) {
ChestShop.getBukkitLogger().severe("You are using an old version of Residence! " +
"Please update to the newest one, which supports UUIDs: http://ci.drtshock.net/job/Residence/");
break;
}
listener = new ResidenceChestProtection();
break;
//Terrain protection plugins
case WorldGuard:
boolean inUse = Properties.WORLDGUARD_USE_PROTECTION || Properties.WORLDGUARD_INTEGRATION;
if (!inUse) {
return;
}
if (Properties.WORLDGUARD_USE_PROTECTION) {
ChestShop.registerListener(new WorldGuardProtection(plugin));
}
if (Properties.WORLDGUARD_INTEGRATION) {
listener = new WorldGuardBuilding(plugin);
}
break;
case GriefPrevention:
if (!Properties.GRIEFPREVENTION_INTEGRATION) {
return;
}
listener = new GriefPrevenentionBuilding(plugin);
break;
case RedProtect:
if (!Properties.REDPROTECT_INTEGRATION) {
return;
}
listener = new RedProtectBuilding(plugin);
break;
//Other plugins
case Heroes:
Heroes heroes = Heroes.getHeroes(plugin);
if (heroes == null) {
return;
}
listener = heroes;
break;
case ShowItem:
MaterialUtil.Show.initialize(plugin);
break;
}
if (listener != null) {
ChestShop.registerListener(listener);
}
PluginDescriptionFile description = plugin.getDescription();
ChestShop.getBukkitLogger().info(description.getName() + " version " + description.getVersion() + " loaded.");
}
private static enum Dependency {
LWC,
Lockette,
LockettePro,
Deadbolt,
SimpleChestLock,
Residence,
WorldGuard,
GriefPrevention,
RedProtect,
Heroes,
ShowItem
}
@EventHandler(priority = EventPriority.MONITOR)
public void onEnable(PluginEnableEvent event) {
Plugin plugin = event.getPlugin();
if (ChestShop.getDependencies().contains(plugin.getName())) {
loadPlugin(plugin.getName(), plugin);
}
}
}