From fe50a42a3c9747c0f0c538ac648c052e59f4e7c1 Mon Sep 17 00:00:00 2001
From: Someone999 <45456778+Someone999@users.noreply.github.com>
Date: Mon, 4 Jul 2022 12:21:41 +0800
Subject: [PATCH] Added permission information to help command (#1427)

Original commits:
* Added command CommandPermissionCommand. Added permission information in HelpCommand.

* Removed command CommandPermissionCommand

* Display permission for single command when use help.

* Display permission targeted when use help.
---
 .../command/commands/HelpCommand.java         | 47 ++++++++++++++++++-
 src/main/resources/languages/en-US.json       |  6 ++-
 src/main/resources/languages/zh-CN.json       |  7 ++-
 src/main/resources/languages/zh-TW.json       |  6 ++-
 4 files changed, 62 insertions(+), 4 deletions(-)

diff --git a/src/main/java/emu/grasscutter/command/commands/HelpCommand.java b/src/main/java/emu/grasscutter/command/commands/HelpCommand.java
index 431890fd..f4588ef2 100644
--- a/src/main/java/emu/grasscutter/command/commands/HelpCommand.java
+++ b/src/main/java/emu/grasscutter/command/commands/HelpCommand.java
@@ -46,8 +46,24 @@ public final class HelpCommand implements CommandHandler {
                         builder.append(alias).append(" ");
                     }
                 }
+
+                builder.append("\n").append(translate(player, "commands.help.tip_need_permission"));
+                if(annotation.permission().isEmpty() || annotation.permission().isBlank()) {
+                    builder.append(translate(player, "commands.help.tip_need_no_permission"));
+                }
+                else {
+                    builder.append(annotation.permission());
+                }
+                builder.append(" ");
+
+                if(!annotation.permissionTargeted().isEmpty() && !annotation.permissionTargeted().isBlank()) {
+                    String permissionTargeted = annotation.permissionTargeted();
+                    builder.append(translate(player, "commands.help.tip_permission_targeted", permissionTargeted));
+                }
+
                 if (player != null && !Objects.equals(annotation.permission(), "") && !player.getAccount().hasPermission(annotation.permission())) {
-                    builder.append("\n Warning: You do not have permission to run this command.");
+                    builder.append("\n ");
+                    builder.append(translate(player, "commands.help.warn_player_has_no_permission"));
                 }
             }
 
@@ -68,6 +84,20 @@ public final class HelpCommand implements CommandHandler {
                         builder.append(alias).append(" ");
                     }
                 }
+                builder.append("\n").append(translate(player, "commands.help.tip_need_permission"));
+                if(annotation.permission().isEmpty() || annotation.permission().isBlank()) {
+                    builder.append(translate(player, "commands.help.tip_need_no_permission"));
+                }
+                else {
+                    builder.append(annotation.permission());
+                }
+
+                builder.append(" ");
+
+                if(!annotation.permissionTargeted().isEmpty() && !annotation.permissionTargeted().isBlank()) {
+                    String permissionTargeted = annotation.permissionTargeted();
+                    builder.append(translate(player, "commands.help.tip_permission_targeted", permissionTargeted));
+                }
 
                 builder.append("\n");
             });
@@ -85,6 +115,21 @@ public final class HelpCommand implements CommandHandler {
                         builder.append(alias).append(" ");
                     }
                 }
+                builder.append("\n").append(translate(player, "commands.help.permission"));
+                if(annotation.permission().isEmpty() || annotation.permission().isBlank()) {
+                    builder.append(translate(player, "commands.help.no_permission"));
+                }
+                else {
+                    builder.append(annotation.permission());
+                }
+
+                builder.append(" ");
+
+                if(!annotation.permissionTargeted().isEmpty() && !annotation.permissionTargeted().isBlank()) {
+                    String permissionTargeted = annotation.permissionTargeted();
+                    builder.append(translate(player, "commands.help.tip_permission_targeted", permissionTargeted));
+                }
+
 
                 CommandHandler.sendMessage(player, builder.toString());
             });
diff --git a/src/main/resources/languages/en-US.json b/src/main/resources/languages/en-US.json
index 2df91648..a057be8c 100644
--- a/src/main/resources/languages/en-US.json
+++ b/src/main/resources/languages/en-US.json
@@ -167,7 +167,11 @@
       "usage": "Usage: ",
       "aliases": "Aliases: ",
       "available_commands": "Available commands: ",
-      "description": "Sends the help message or shows information about a specified command"
+      "description": "Sends the help message or shows information about a specified command",
+      "tip_need_permission": "Permission: ",
+      "tip_need_no_permission": " None",
+      "tip_permission_targeted": " (Permission %s is also required to use on other players)",
+      "warn_player_has_no_permission": "Notice: You do not have permission to run this command."
     },
     "kick": {
       "player_kick_player": "Player [%s:%s] has kicked player [%s:%s]",
diff --git a/src/main/resources/languages/zh-CN.json b/src/main/resources/languages/zh-CN.json
index c50f59b7..64fade3d 100644
--- a/src/main/resources/languages/zh-CN.json
+++ b/src/main/resources/languages/zh-CN.json
@@ -167,7 +167,12 @@
       "usage": "鐢ㄦ硶锛�",
       "aliases": "鍒悕锛�",
       "available_commands": "鍙敤鍛戒护锛�",
-      "description": "鍙戦€佸府鍔╀俊鎭垨鏄剧ず鎸囧畾鍛戒护鐨勪俊鎭�"
+      "description": "鍙戦€佸府鍔╀俊鎭垨鏄剧ず鎸囧畾鍛戒护鐨勪俊鎭�",
+      "tip_need_permission": "鎵€闇€鏉冮檺: ",
+      "tip_need_no_permission": " 鏃�",
+      "tip_permission_targeted": "(瀵瑰叾浠栫帺瀹朵娇鐢ㄨ繖涓懡浠よ繕闇€瑕佹潈闄�%s)",
+      "warn_player_has_no_permission": "娉ㄦ剰锛氫綘娌℃湁鎵ц杩欎釜鍛戒护鐨勬潈闄�"
+
     },
     "kick": {
       "player_kick_player": "鐜╁ [%s:%s] 宸插皢 [%s:%s] 韪㈠嚭銆�",
diff --git a/src/main/resources/languages/zh-TW.json b/src/main/resources/languages/zh-TW.json
index 30e0e9e7..da4b1e01 100644
--- a/src/main/resources/languages/zh-TW.json
+++ b/src/main/resources/languages/zh-TW.json
@@ -178,7 +178,11 @@
       "usage": "鐢ㄦ硶锛�",
       "aliases": "鍒ュ悕锛�",
       "description": "鐧奸€佸公鍔╀俊鎭垨椤ず鐗瑰畾鍛戒护鐨勪俊鎭�",
-      "available_commands": "鍙敤鎸囦护锛�"
+      "available_commands": "鍙敤鎸囦护锛�",
+      "tip_need_permission": "闇€瑕佺殑娆婇檺: ",
+      "tip_need_no_permission": "鐒�",
+      "tip_permission_targeted": "(灏嶅叾浠栫殑鐜╁浣跨敤閫欏€嬫寚浠ら倓闇€瑕佹瑠闄�%s)",
+      "warn_player_has_no_permission": "娉ㄦ剰锛氫綘娌掓湁鍩疯閫欐鎸囦护鐨勬瑠闄�"
     },
     "kick": {
       "player_kick_player": "鐜╁ [%s:%s] 宸叉妸 [%s:%s] 韪㈠嚭",
-- 
GitLab