public void onDisable() { // NOTE: All registered events are automatically unregistered when a // plugin is disabled if (pricelist != null) { try { pricelist.close(); } catch (Exception ex) { Log(Level.SEVERE, ex, false); } } if (signShop != null) { signShop.save(); signShop.stopProtecting(); } transactions = null; stock = null; pricelist = null; messenger = null; // config = null; signShop = null; logger.info("BetterShop now unloaded"); }
public void onEnable() { pdfFile = this.getDescription(); logger.log( Level.INFO, String.format("Loading %s version %s ...", pdfFile.getName(), pdfFile.getVersion())); // ready items db (needed for pricelist, sorting in config, item lookup, ...) try { ItemDB.load(BSConfig.pluginFolder); // Log("Itemsdb loaded"); } catch (Exception e) { Log(Level.SEVERE, "cannot load items db: closing plugin", e, false); this.setEnabled(false); return; } if (config == null) { config = new BSConfig(); // Log("config loaded"); if (config.checkUpdates) { if (config.autoUpdate) { if (!Updater.isUpToDate(true)) { Log("Downloading & Installing Update"); ServerReload sreload = new ServerReload(getServer()); if (Updater.downloadUpdate()) { Log("Update Downloaded: Restarting Server.."); // this.setEnabled(false); // this.getServer().dispatchCommand((CommandSender) new CommanderSenderImpl(this), // "stop"); // this.getServer().dispatchCommand(new AdminCommandSender(this), "stop"); try { // (new ServerReload(getServer())).start(500); sreload.start(500); } catch (Exception e) { // just in case... this.getServer().reload(); } return; } } } else { Updater.check(); } } } else { config.load(); } pricelist = new BSPriceList(); transactions = new BSTransactionLog(); stock = new BSItemStock(); signShop = new BSSignShop(this); if (!pricelist.load()) { Log(Level.SEVERE, "cannot load pricelist: " + pricelist.pricelistName(), false); // todo: add handlers for if not loaded? this.setEnabled(false); return; } else if (!transactions.load()) { Log(Level.SEVERE, "cannot load transaction log", false); // this.setEnabled(false); // return; } if (config.useItemStock && !stock.load()) { Log(Level.SEVERE, "cannot load stock database", false); stock = null; } if (config.signShopEnabled && !signShop.load()) { Log(Level.SEVERE, "cannot load sign shop database", false); } if (config.signShopEnabled && config.tntSignDestroyProtection) { signShop.startProtecting(); } pListener = new PluginListener(this); hookDepends(); registerHelp(); // isLoaded = true; // for monster purchasing PluginManager pm = getServer().getPluginManager(); pm.registerEvent(Event.Type.ENTITY_DAMAGE, entityListener, Priority.Normal, this); pm.registerEvent(Event.Type.ENTITY_TARGET, entityListener, Priority.Normal, this); // for sign events pm.registerEvent(Event.Type.PLAYER_INTERACT, signShop, Priority.Normal, this); pm.registerEvent(Event.Type.BLOCK_BREAK, signShop.signDestroy, Priority.Normal, this); // pm.registerEvent(Event.Type.BLOCK_DAMAGE, signShop.signDestroy, Priority.Normal, this); // pm.registerEvent(Event.Type.BLOCK_CANBUILD, signShop.buildStopper, Priority.Normal, this); pm.registerEvent(Event.Type.BLOCK_PLACE, signShop.signDestroy, Priority.Normal, this); // monitor plugins - if any are enabled/disabled by a plugin manager pm.registerEvent(Event.Type.PLUGIN_ENABLE, pListener, Priority.Monitor, this); // Just output some info so we can check all is well logger.log( Level.INFO, pdfFile.getName() + " version " + pdfFile.getVersion() + " is enabled!", new Object[] {pdfFile.getName(), pdfFile.getVersion()}); }