Example #1
0
  /**
   * Parses a console command
   *
   * @param command
   * @param server
   * @return
   */
  public boolean parseConsoleCommand(String command, MinecraftServer server) {
    if (getMCServer() == null) {
      setServer(server);
    }
    String[] split = command.split(" ");
    if ((Boolean) getLoader().callHook(PluginLoader.Hook.SERVERCOMMAND, new Object[] {split})) {
      return true;
    }
    if (split.length == 0) {
      return false;
    }

    boolean dontParseRegular = true;
    if (split[0].equalsIgnoreCase("save-all")) {
      dontParseRegular = false;
      getServer().saveInventories();
    } else if (split[0].equalsIgnoreCase("help") || split[0].equalsIgnoreCase("mod-help")) {
      if (split[0].equalsIgnoreCase("help")) {
        dontParseRegular = false;
      }
      log.info("Server mod help:");
      log.info("help          Displays this mod's and server's help");
      log.info("mod-help      Displays this mod's help");
      log.info("version       Displays the server version");
      log.info("reload        Reloads the config");
      log.info("modify        Type modify for more info");
      log.info("whitelist     Type whitelist for more info");
      log.info("reservelist   Type reservelist for more info");
      log.info("listplugins   Lists all plugins");
      log.info("enableplugin  Enables a plugin");
      log.info("disableplugin Disables a plugin");
      log.info("reloadplugin  Reloads a plugin");
    } else if (split[0].equalsIgnoreCase("reload")) {
      load();
      loadData();
      for (Player player : etc.getServer().getPlayerList()) {
        player.getUser().reloadPlayer();
      }

      log.info("Reloaded mod");
    } else if (split[0].equalsIgnoreCase("modify")) {
      if (split.length < 4) {
        log.info("Usage is: /modify [player] [key] [value]");
        log.info("Keys:");
        log.info("prefix: only the letter the color represents");
        log.info("commands: list seperated by comma");
        log.info("groups: list seperated by comma");
        log.info("ignoresrestrictions: true or false");
        log.info("admin: true or false");
        log.info("modworld: true or false");
        return true;
      }

      Player player = getServer().matchPlayer(split[1]);

      if (player == null) {
        log.info("Player does not exist.");
        return true;
      }

      String key = split[2];
      String value = split[3];
      boolean newUser = false;

      if (!etc.getDataSource().doesPlayerExist(player.getName())) {
        if (!key.equalsIgnoreCase("groups") && !key.equalsIgnoreCase("g")) {
          log.info("When adding a new user, set their group(s) first.");
          return true;
        }
        log.info("Adding new user.");
        newUser = true;
      }

      if (key.equalsIgnoreCase("prefix") || key.equalsIgnoreCase("p")) {
        player.setPrefix(value);
      } else if (key.equalsIgnoreCase("commands") || key.equalsIgnoreCase("c")) {
        player.setCommands(value.split(","));
      } else if (key.equalsIgnoreCase("groups") || key.equalsIgnoreCase("g")) {
        player.setGroups(value.split(","));
      } else if (key.equalsIgnoreCase("ignoresrestrictions") || key.equalsIgnoreCase("ir")) {
        player.setIgnoreRestrictions(value.equalsIgnoreCase("true") || value.equals("1"));
      } else if (key.equalsIgnoreCase("admin") || key.equalsIgnoreCase("a")) {
        player.setAdmin(value.equalsIgnoreCase("true") || value.equals("1"));
      } else if (key.equalsIgnoreCase("modworld") || key.equalsIgnoreCase("mw")) {
        player.setCanModifyWorld(value.equalsIgnoreCase("true") || value.equals("1"));
      }

      if (newUser) {
        etc.getDataSource().addPlayer(player);
      } else {
        etc.getDataSource().modifyPlayer(player);
      }
      log.info("Modifed user " + split[1] + ". " + key + " => " + value);
    } else if (split[0].equalsIgnoreCase("whitelist")) {
      if (split.length < 2) {
        log.info("whitelist [operation (toggle, add or remove)] [player]");
        return true;
      }

      if (split[1].equalsIgnoreCase("toggle")) {
        log.info(toggleWhitelist() ? "Whitelist enabled" : "Whitelist disabled");
      } else if (split.length == 3) {
        if (split[1].equalsIgnoreCase("add")) {
          dataSource.addToWhitelist(split[2]);
          log.info(split[2] + " added to whitelist");
        } else if (split[1].equalsIgnoreCase("remove")) {
          dataSource.removeFromWhitelist(split[2]);
          log.info(split[2] + " removed from whitelist");
        } else {
          log.info("Invalid operation.");
        }
      } else {
        log.info("Invalid operation.");
      }
    } else if (split[0].equalsIgnoreCase("reservelist")) {
      if (split.length != 3) {
        log.info("reservelist [operation (add or remove)] [player]");
        return true;
      }

      if (split[1].equalsIgnoreCase("add")) {
        dataSource.addToReserveList(split[2]);
        log.info(split[2] + " added to reservelist");
      } else if (split[1].equalsIgnoreCase("remove")) {
        dataSource.removeFromReserveList(split[2]);
        log.info(split[2] + " removed from reservelist");
      } else {
        log.info("Invalid operation.");
      }
    } else if (split[0].equalsIgnoreCase("listplugins")) {
      log.info("Plugins: " + etc.getLoader().getPluginList());
    } else if (split[0].equalsIgnoreCase("reloadplugin")) {
      if (split.length < 2) {
        log.info("Correct usage is: reloadplugin [plugin]");
        return true;
      }

      etc.getLoader().reloadPlugin(split[1]);
      log.info("Plugin reloaded.");
    } else if (split[0].equalsIgnoreCase("enableplugin")) {
      if (split.length < 2) {
        log.info("Correct usage is: enableplugin [plugin]");
        return true;
      }

      etc.getLoader().enablePlugin(split[1]);
      log.info("Plugin enabled.");
    } else if (split[0].equalsIgnoreCase("disableplugin")) {
      if (split.length < 2) {
        log.info("Correct usage is: disableplugin [plugin]");
        return true;
      }

      etc.getLoader().disablePlugin(split[1]);
      log.info("Plugin disabled.");
    } else if (split[0].equalsIgnoreCase("version")) {
      if (tainted || version < 0) {
        log.info("THIS IS AN UNOFFICIAL BUILD OF HMOD");
        log.info("Build information: " + versionStr);
      } else {
        log.info("Hey0 Server Mod Build " + version);
      }
    } else {
      dontParseRegular = false;
    }
    return dontParseRegular;
  }