/** * 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; }