From 7448d2a29b73a4c262718d9701aca4ac8872ef6b Mon Sep 17 00:00:00 2001 From: Stanislav Usenkov Date: Thu, 4 Aug 2016 18:22:54 +0700 Subject: [PATCH] Help pages. --- .../Bukkit/Commands/BukkitCommands.java | 46 +++++------ .../Bukkit/Commands/CommandEntity.java | 81 ++++++++++++------- .../rscPermissions/Engine/Phrases.java | 1 + src/main/resources/languages/english.yml | 23 +++--- src/main/resources/languages/russian.yml | 25 +++--- 5 files changed, 97 insertions(+), 79 deletions(-) diff --git a/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/BukkitCommands.java b/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/BukkitCommands.java index 95cafc0..a343dc5 100644 --- a/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/BukkitCommands.java +++ b/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/BukkitCommands.java @@ -26,9 +26,9 @@ public class BukkitCommands { this.rscp = plugin; cmdEntity = new CommandEntity(rscp); - cmdLock = new CommandLock(rscp); - cmdFetch = new CommandFetch(rscp); - cmdDebug = new CommandDebug(rscp); + cmdLock = new CommandLock (rscp); + cmdFetch = new CommandFetch (rscp); + cmdDebug = new CommandDebug (rscp); cmdReload = new CommandReload(rscp); cmdUpdate = new CommandUpdate(rscp); threadFetchDatabaseContents = new BukkitDatabaseFetcher(rscp); @@ -89,50 +89,44 @@ public class BukkitCommands public void onCommandHub(CommandSender sender, String[] args) throws CommandAnswerException { final ArrayList help = new ArrayList<>(64); + final boolean isAdmin = sender.hasPermission("rscp.admin"); + final boolean isLocker = sender.hasPermission("rscp.admin.lock"); help.addAll(Tools.getPluginWelcome(rscp, Phrases.HELP_HEADER_1.toString())); + if(isLocker) + help.add(Phrases.HELP_HEADER_2.toString().replace("{:SERVERID}", rscp.getServer().getServerId())); if(args.length == 0) throw new CommandAnswerException(help); - help.add(Phrases.HELP_HEADER_2.toString().replace("{SERVER-ID}", rscp.getServer().getServerId())); final String mmode = rscp.settings.getMaintenanceMode(); - if(sender.hasPermission("rscp.admin.lock") && !"".equals(mmode)) - help.add("{_WH}Server is in maintenance mode \'{_LG}" + mmode + "{_WH}\' now!"); + if(isLocker && !"".equals(mmode)) + help.add(Phrases.HELP_HEADER_3.toString().replace("{:MMODE}", mmode)); help.add(Phrases.HELP_USAGE.toString()); - if(sender.hasPermission("rscp.admin")) + if(isAdmin) { - help.add("{_YL}/rscp {_LR}groups {_LS}-- show known groups"); - help.add("{_YL}/rscp {_LR}users {_LS}-- show known users"); - help.add(Phrases.HELP_CMD_USER_LP.toString()); - help.addAll(cmdEntity.getHelpForType(CommandEntity.TargetType.GROUP)); - help.addAll(cmdEntity.getHelpForType(CommandEntity.TargetType.USER)); - help.addAll(cmdEntity.getHelpForType(CommandEntity.TargetType.PLAYER)); - help.add(Phrases.HELP_CMD_USER_LG.toString()); - help.add(Phrases.HELP_CMD_USER_P.toString()); - help.add(Phrases.HELP_CMD_USER_S.toString()); + help.addAll(cmdEntity.getHelp()); + help.add("{_YL}/rscp {_LR}examplerows {_LS}- insert some fake rows into database"); + help.add("{_YL}/rscp {_LR}import pex-sql {_LS}- import data from pex's database (in the same schema)"); + help.add(Phrases.HELP_CMD_DEBUG.toString()); + help.add(Phrases.HELP_CMD_FETCH.toString()); + help.add(Phrases.HELP_CMD_RELOAD.toString()); } - if(sender.hasPermission("rscp.admin.lock")) + if(isLocker) { help.add(Phrases.HELP_CMD_LOCK.toString()); help.add(Phrases.HELP_CMD_UNLOCK.toString()); } - if(sender.hasPermission("rscp.admin")) - { - help.add("{_YL}/rscp {_LR}examplerows {_LS}-- insert some fake rows into database"); - help.add("{_YL}/rscp {_LR}import pex-sql {_LS}-- import data from pex's database (in the same schema)"); - help.add(Phrases.HELP_CMD_DEBUG.toString()); - help.add(Phrases.HELP_CMD_FETCH.toString()); - help.add(Phrases.HELP_CMD_RELOAD.toString()); - } help.add(Phrases.HELP_CMD_HELP.toString()); switch(args[0].toLowerCase()) { case "listgroups": case "groups": case "lg": + case "gs": cmdEntity.listGroups(sender); return; case "listusers": case "users": case "lu": + case "us": cmdEntity.listUsers(sender); return; case "group": @@ -185,7 +179,7 @@ public class BukkitCommands { "Usage: {_YL}/rscp import [options]", "Available importers:", - "{_LG}pex-sql {_LS}-- (PermissionsEx's SQL backend)", + "{_LG}pex-sql {_LS}- (PermissionsEx's SQL backend)", }); switch(args[1].toLowerCase()) { diff --git a/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandEntity.java b/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandEntity.java index 0576efc..e63dd2b 100644 --- a/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandEntity.java +++ b/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandEntity.java @@ -32,13 +32,47 @@ public class CommandEntity USER, PLAYER, } + public List getHelp() + { + final List help = new ArrayList<>(16); + // help.add(Phrases.HELP_CMD_USER_LP.toString()); + // help.add(Phrases.HELP_CMD_USER_LG.toString()); + // help.add(Phrases.HELP_CMD_USER_P.toString()); + // help.add(Phrases.HELP_CMD_USER_S.toString()); + help.add("{_YL}/rscp groups {_LS}- show known groups"); + help.addAll(getHelpForType(CommandEntity.TargetType.GROUP)); + help.add("{_YL}/rscp users {_LS}- show known users"); + help.addAll(getHelpForType(CommandEntity.TargetType.USER)); + help.addAll(getHelpForType(CommandEntity.TargetType.PLAYER)); + return help; + } + public List getHelpForType(TargetType type) + { + final List answer = new ArrayList<>(16); + final String typeName = type.name().toLowerCase(); + switch(type) + { + case GROUP: + case USER: + answer.add(String.format("{_YL}/rscp %s listgroups {_LS}- show list of parent groups", typeName)); + answer.add(String.format("{_YL}/rscp %s listpermissions {_LS}- show list of explicit permissions", typeName)); + answer.add(String.format("{_YL}/rscp %s prefix [] {_LS}- view or change %s's prefix", typeName, typeName)); + answer.add(String.format("{_YL}/rscp %s suffix [] {_LS}- view or change %s's suffix", typeName, typeName)); + break; + case PLAYER: + answer.add(String.format("{_YL}/rscp %s listgroups {_LS}- show resulting inheritance tree", typeName)); + answer.add(String.format("{_YL}/rscp %s listpermissions {_LS}- show final calculated permissions", typeName)); + answer.add(String.format("{_YL}/rscp %s prefix {_LS}- show %s's prefix", typeName, typeName)); + answer.add(String.format("{_YL}/rscp %s suffix {_LS}- show %s's suffix", typeName, typeName)); + break; + } + return answer; + } public void onEntityCommandHub(CommandSender sender, TargetType type, String[] args) throws CommandAnswerException { if(sender.hasPermission("rscp.admin") == false) throw new CommandAnswerException("Not enough permissions."); args = Arrays.copyOfRange(args, 1, args.length); - if(args.length <= 1) - throw new CommandAnswerException("Read help."); ResolutionResult result = null; RowEntity entity = null; switch(type) @@ -61,11 +95,12 @@ public class CommandEntity break; } if(entity == null && result == null) - throw new CommandAnswerException("{_LR}I don't know such name!"); - if(args[1] == null) - args[1] = "info"; + throw new CommandAnswerException("{_LR}Sorry, I don't know such identifier!"); final String targetName = args[0]; - switch(args[1].toLowerCase()) + final String subcommand = args.length > 1 && args[1] != null + ? args[1].toLowerCase() + : "info"; + switch(subcommand) { case "info": if(entity != null) @@ -94,9 +129,7 @@ public class CommandEntity else showEntityPermissions(entity); break; - case "listparents": case "listgroups": - case "parents": case "groups": case "lg": if(result != null) @@ -104,16 +137,18 @@ public class CommandEntity else showEntityParents(entity); break; - case "addparent": - case "addgroup": + case "addpermission": case "ap": + break; + case "removepermission": + case "rp": + break; + case "addgroup": case "ag": // TO DO HERE addGroup(result, targetName, null, null, null); break; - case "removeparent": case "removegroup": - case "rp": case "rg": // TO DO HERE removeGroup(result, targetName, null); @@ -122,26 +157,10 @@ public class CommandEntity break; } } - public List getHelpForType(TargetType type) - { - final List answer = new ArrayList<>(16); - final String typeName = type.name().toLowerCase(); - answer.add(String.format("{_YL}/rscp %s prefix {_LS}-- show entity's prefix", typeName)); - answer.add(String.format("{_YL}/rscp %s suffix {_LS}-- show entity's suffix", typeName)); - answer.add(String.format("{_YL}/rscp %s listgroups {_LS}-- show list of parent groups", typeName)); - answer.add(String.format("{_YL}/rscp %s listpermissions {_LS}-- show list of explicit permissions", typeName)); - switch(type) - { - case GROUP: - case USER: - break; - case PLAYER: - break; - } - return answer; - } public void listGroups(CommandSender sender) throws CommandAnswerException { + if(sender.hasPermission("rscp.admin") == false) + throw new CommandAnswerException("Not enough permissions."); final List answer = new ArrayList<>(16); final Set groups = rscp.internalCache.getKnownGroupObjects(); answer.add("There are following known groups in database:"); @@ -155,6 +174,8 @@ public class CommandEntity } public void listUsers(CommandSender sender) throws CommandAnswerException { + if(sender.hasPermission("rscp.admin") == false) + throw new CommandAnswerException("Not enough permissions."); final List answer = new LinkedList<>(); final Set users = rscp.internalCache.getKnownUserObjects(); answer.add("There are following known users in database:"); diff --git a/src/main/java/ru/simsonic/rscPermissions/Engine/Phrases.java b/src/main/java/ru/simsonic/rscPermissions/Engine/Phrases.java index 8d0210b..f3a4c06 100644 --- a/src/main/java/ru/simsonic/rscPermissions/Engine/Phrases.java +++ b/src/main/java/ru/simsonic/rscPermissions/Engine/Phrases.java @@ -38,6 +38,7 @@ public enum Phrases FETCHED_REMOTE_DB ("database.fetched-remote"), HELP_HEADER_1 ("help.header-1"), HELP_HEADER_2 ("help.header-2"), + HELP_HEADER_3 ("help.header-3"), HELP_USAGE ("help.usage"), HELP_CMD_USER_LP ("help.cmd-user-lp"), HELP_CMD_USER_LG ("help.cmd-user-lg"), diff --git a/src/main/resources/languages/english.yml b/src/main/resources/languages/english.yml index bdfbbc0..9743fde 100644 --- a/src/main/resources/languages/english.yml +++ b/src/main/resources/languages/english.yml @@ -27,15 +27,16 @@ database: fetched-remote: "{_LG}Fetched {:E} entities, {:P} permissions and {:I} inheritances." help: header-1: "{_LS}Perfect permission manager for multiserver environments" - header-2: "{_LS}Current serverId is '{_LG}{SERVER-ID}{_LS}' (server.properties)" + header-2: "{_LS}Current serverId is '{_LG}{:SERVERID}{_LS}' (server.properties)" + header-3: "{_WH}Server is in maintenance mode '{_LG}{:MMODE}{_WH}' now!" usage: "Usage of available commands:" - cmd-user-lp: "{_YL}/rscp user lp {_LS}-- list user's permissions" - cmd-user-lg: "{_YL}/rscp user lg {_LS}-- list user's groups" - cmd-user-p: "{_YL}/rscp user prefix {_LS}-- show user's prefix" - cmd-user-s: "{_YL}/rscp user suffix {_LS}-- show user's suffix" - cmd-lock: "{_YL}/rscp lock [mode] {_LS}-- enable specific maintenance mode" - cmd-unlock: "{_YL}/rscp unlock {_LS}-- disable maintenance mode" - cmd-debug: "{_YL}/rscp debug [value] {_LS}-- show/hide some debugging info to you" - cmd-fetch: "{_YL}/rscp fetch {_LS}-- reread all permissions from database" - cmd-reload: "{_YL}/rscp reload {_LS}-- reload config and restart the plugin" - cmd-help: "{_YL}/rscp help {_LS}-- show this help page" + cmd-user-lp: "{_YL}/rscp user lp {_LS}- list user's permissions" + cmd-user-lg: "{_YL}/rscp user lg {_LS}- list user's groups" + cmd-user-p: "{_YL}/rscp user prefix {_LS}- show user's prefix" + cmd-user-s: "{_YL}/rscp user suffix {_LS}- show user's suffix" + cmd-lock: "{_YL}/rscp lock [mode] {_LS}- enable specific maintenance mode" + cmd-unlock: "{_YL}/rscp unlock {_LS}- disable maintenance mode" + cmd-debug: "{_YL}/rscp debug [value] {_LS}- show/hide some debugging info to you" + cmd-fetch: "{_YL}/rscp fetch {_LS}- reread all permissions from database" + cmd-reload: "{_YL}/rscp reload {_LS}- reload config and restart the plugin" + cmd-help: "{_YL}/rscp help {_LS}- show this help page" diff --git a/src/main/resources/languages/russian.yml b/src/main/resources/languages/russian.yml index 479999b..98939b7 100644 --- a/src/main/resources/languages/russian.yml +++ b/src/main/resources/languages/russian.yml @@ -27,15 +27,16 @@ database: fetched-remote: "{_LG}Получено {:E} сущностей, {:P} прав и {:I} наследований." help: header-1: "{_LS}Идеальный плагин для мультисерверных проектов" - header-2: "{_LS}Идентификатор этого сервера установлен в '{_LG}{SERVER-ID}{_LS}' (server.properties)" - usage: "Синтаксис доступных команд:" - cmd-user-lp: "{_YL}/rscp user lp {_LS}-- получение списка прав игрока" - cmd-user-lg: "{_YL}/rscp user lg {_LS}-- получение дерева групп игрока" - cmd-user-p: "{_YL}/rscp user prefix {_LS}-- просмотр префикса игрока" - cmd-user-s: "{_YL}/rscp user suffix {_LS}-- просмотр суффикса игрока" - cmd-lock: "{_YL}/rscp lock [mode] {_LS}-- перевод сервера в режим обслуживания" - cmd-unlock: "{_YL}/rscp unlock {_LS}-- отключение режима обслуживания" - cmd-debug: "{_YL}/rscp debug [value] {_LS}-- вкл/выкл отладочной информации о Вас" - cmd-fetch: "{_YL}/rscp fetch {_LS}-- получение групп и прав из базы банных" - cmd-reload: "{_YL}/rscp reload {_LS}-- перезагрузка плагина" - cmd-help: "{_YL}/rscp help {_LS}-- эта справка" + header-2: "{_LS}Идентификатор этого сервера установлен в '{_LG}{:SERVERID}{_LS}' (server.properties)" + header-3: "{_WH}Сервер находится в режиме обслуживания '{_LG}{:MMODE}{_WH}'!" + usage: "Описание доступных команд:" + cmd-user-lp: "{_YL}/rscp user lp {_LS}- получение списка прав игрока" + cmd-user-lg: "{_YL}/rscp user lg {_LS}- получение дерева групп игрока" + cmd-user-p: "{_YL}/rscp user prefix {_LS}- просмотр префикса игрока" + cmd-user-s: "{_YL}/rscp user suffix {_LS}- просмотр суффикса игрока" + cmd-lock: "{_YL}/rscp lock [mode] {_LS}- перевод сервера в режим обслуживания" + cmd-unlock: "{_YL}/rscp unlock {_LS}- отключение режима обслуживания" + cmd-debug: "{_YL}/rscp debug [value] {_LS}- вкл/выкл отладочной информации о Вас" + cmd-fetch: "{_YL}/rscp fetch {_LS}- получение групп и прав из базы банных" + cmd-reload: "{_YL}/rscp reload {_LS}- перезагрузка плагина" + cmd-help: "{_YL}/rscp help {_LS}- эта справка"