package net.knarcraft.blacksmith; import net.citizensnpcs.api.CitizensAPI; import net.knarcraft.blacksmith.command.BlackSmithConfigCommand; import net.knarcraft.blacksmith.command.BlackSmithConfigTabCompleter; import net.knarcraft.blacksmith.command.BlackSmithEditCommand; import net.knarcraft.blacksmith.command.BlackSmithEditTabCompleter; import net.knarcraft.blacksmith.config.GlobalSettings; import net.knarcraft.blacksmith.formatting.Translator; import net.knarcraft.blacksmith.listener.NPCClickListener; import net.knarcraft.blacksmith.listener.PlayerListener; import net.knarcraft.blacksmith.manager.EconomyManager; import net.knarcraft.blacksmith.trait.BlacksmithTrait; import org.bukkit.command.PluginCommand; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; import java.util.logging.Level; /** * Blacksmith's main class */ public class BlacksmithPlugin extends JavaPlugin { private static BlacksmithPlugin instance; private GlobalSettings config; /** * Gets an instance of the Blacksmith plugin * * @return
An instance of the blacksmith plugin
*/ public static BlacksmithPlugin getInstance() { return instance; } /** * Gets settings for the blacksmith plugin * * @returnSettings for the blacksmith plugin
*/ public GlobalSettings getSettings() { return config; } /** * Reloads the configuration file from disk */ public void reload() { config.load(); } @Override public void onDisable() { getLogger().log(Level.INFO, " v" + getDescription().getVersion() + " disabled."); } @Override public void onEnable() { instance = this; //Copy default config to disk FileConfiguration fileConfiguration = this.getConfig(); this.saveDefaultConfig(); this.reloadConfig(); fileConfiguration.options().copyDefaults(true); this.saveConfig(); //Load settings config = new GlobalSettings(this); config.load(); Translator.loadLanguages("en"); //Set up Vault integration if (!setUpVault()) { return; } //Register the blacksmith trait with Citizens CitizensAPI.getTraitFactory().registerTrait( net.citizensnpcs.api.trait.TraitInfo.create(BlacksmithTrait.class).withName("blacksmith")); //Register all commands registerCommands(); //Register all listeners registerListeners(); getLogger().log(Level.INFO, " v" + getDescription().getVersion() + " enabled."); //TODO: Improve un-setting of values for a given NPC: While setting values works fine, a bit more care should // be performed regarding removing a custom value. Basically, using null for strings and -1 for numbers should // unset a value for an NPC. Unsetting a value would make the NPC use the default value set in the config file // instead } /** * Tries to set up Vault * * @returnTrue if Vault setup/integration succeeded
*/ private boolean setUpVault() { getLogger().log(Level.INFO, "Setting Up Vault now...."); boolean canLoad = EconomyManager.setUp(getServer().getServicesManager(), getLogger()); if (!canLoad) { getLogger().log(Level.SEVERE, "Vault Integration Failed...."); getServer().getPluginManager().disablePlugin(this); return false; } return true; } /** * Registers all listeners used by this plugin */ private void registerListeners() { PluginManager pluginManager = getServer().getPluginManager(); pluginManager.registerEvents(new PlayerListener(), this); pluginManager.registerEvents(new NPCClickListener(), this); } /** * Registers all commands used by this plugin */ private void registerCommands() { //Register the blacksmith NPC edit main-command PluginCommand blacksmithCommand = this.getCommand("blacksmith"); if (blacksmithCommand != null) { blacksmithCommand.setExecutor(new BlackSmithEditCommand()); blacksmithCommand.setTabCompleter(new BlackSmithEditTabCompleter()); } //Register the global config edit command PluginCommand blacksmithConfigCommand = this.getCommand("blacksmithConfig"); if (blacksmithConfigCommand != null) { blacksmithConfigCommand.setExecutor(new BlackSmithConfigCommand()); blacksmithConfigCommand.setTabCompleter(new BlackSmithConfigTabCompleter()); } } }