Beispiel #1
0
  @Override
  public void onEnable() {
    // Disable if the server is not using the compatible Minecraft version
    String mcVersion = ((CraftServer) getServer()).getServer().getVersion();
    compatible = mcVersion.startsWith(COMPATIBLE_MC_VERSION);
    if (!compatible) {
      Messaging.severeTr(Messages.CITIZENS_INCOMPATIBLE, getDescription().getVersion(), mcVersion);
      getServer().getPluginManager().disablePlugin(this);
      return;
    }
    config = new Settings(getDataFolder());
    setupTranslator();
    registerScriptHelpers();

    saves = NPCDataStore.create(getDataFolder());
    if (saves == null) {
      Messaging.severeTr(Messages.FAILED_LOAD_SAVES);
      getServer().getPluginManager().disablePlugin(this);
      return;
    }

    npcRegistry = new CitizensNPCRegistry(saves);
    traitFactory = new CitizensTraitFactory();
    selector = new NPCSelector(this);
    CitizensAPI.setImplementation(this);

    getServer().getPluginManager().registerEvents(new EventListen(), this);

    if (Setting.NPC_COST.asDouble() > 0) setupEconomy();

    registerCommands();
    enableSubPlugins();
    Messaging.logTr(Messages.CITIZENS_ENABLED, getDescription().getVersion());

    // Setup NPCs after all plugins have been enabled (allows for multiworld
    // support and for NPCs to properly register external settings)
    if (getServer()
            .getScheduler()
            .scheduleSyncDelayedTask(
                this,
                new Runnable() {
                  @Override
                  public void run() {
                    saves.loadInto(npcRegistry);
                    startMetrics();
                    scheduleSaveTask(Setting.SAVE_TASK_DELAY.asInt());
                    Bukkit.getPluginManager().callEvent(new CitizensEnableEvent());
                  }
                },
                1)
        == -1) {
      Messaging.severeTr(Messages.LOAD_TASK_NOT_SCHEDULED);
      getServer().getPluginManager().disablePlugin(this);
    }
  }