Example #1
0
  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");
  }
Example #2
0
  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()});
  }