From ca1e902307c253a12e4ef18ace1385361073e6c6 Mon Sep 17 00:00:00 2001 From: ReinforceZwei <39955851+ReinforceZwei@users.noreply.github.com> Date: Mon, 3 Aug 2020 20:13:07 +0800 Subject: [PATCH] Add help information for inventory command (#1170) * Add help information for inventory command * Change optional parameter representation --- MinecraftClient/Commands/Inventory.cs | 90 ++++++++++++++++++++++----- 1 file changed, 74 insertions(+), 16 deletions(-) diff --git a/MinecraftClient/Commands/Inventory.cs b/MinecraftClient/Commands/Inventory.cs index 50e0396a..45070e83 100644 --- a/MinecraftClient/Commands/Inventory.cs +++ b/MinecraftClient/Commands/Inventory.cs @@ -9,7 +9,7 @@ namespace MinecraftClient.Commands class Inventory : Command { public override string CMDName { get { return "inventory"; } } - public override string CMDDesc { get { return "inventory <|player|container> <1|all>|click > | inventory creativegive : Interact with inventories"; } } + public override string CMDDesc { get { return GetCommandDesc(); } } public override string Run(McClient handler, string command, Dictionary localVars) { @@ -21,26 +21,13 @@ namespace MinecraftClient.Commands try { int inventoryId; - if (args[0].ToLower() == "player") - { - // player inventory is always ID 0 - inventoryId = 0; - } - else if (args[0].ToLower() == "container") - { - List availableIds = handler.GetInventories().Keys.ToList(); - availableIds.Remove(0); // remove player inventory ID from list - if (availableIds.Count == 1) - inventoryId = availableIds[0]; // one container, use it - else return "Cannot find container, please retry with explicit ID"; - } - else if (args[0].ToLower() == "creativegive") + if (args[0].ToLower() == "creativegive") { if (args.Length >= 4) { int slot = int.Parse(args[1]); ItemType itemType = ItemType.Stone; - if (Enum.TryParse(args[2], out itemType)) + if (Enum.TryParse(args[2], true, out itemType)) { if (handler.GetGamemode() == 1) { @@ -58,6 +45,27 @@ namespace MinecraftClient.Commands } else return CMDDesc; } + else if (args[0].ToLower().StartsWith("p")) + { + // player inventory is always ID 0 + inventoryId = 0; + } + else if (args[0].ToLower().StartsWith("c")) + { + List availableIds = handler.GetInventories().Keys.ToList(); + availableIds.Remove(0); // remove player inventory ID from list + if (availableIds.Count == 1) + inventoryId = availableIds[0]; // one container, use it + else return "Cannot find container, please retry with explicit ID"; + } + else if (args[0].ToLower() == "help") + { + if (args.Length >= 2) + { + return GetSubCommandHelp(args[1]); + } + else return GetHelp(); + } else inventoryId = int.Parse(args[0]); string action = args.Length > 1 ? args[1].ToLower() @@ -153,5 +161,55 @@ namespace MinecraftClient.Commands } else return "Please enable inventoryhandling in config to use this command."; } + + #region Methods for commands help + private string GetCommandDesc() + { + return GetBasicUsage() + " Type \"/inventory help\" for more help"; + } + + private string GetAvailableActions() + { + return "Available actions: list, close, click, drop."; + } + + private string GetBasicUsage() + { + return "Basic usage: /inventory > ."; + } + + private string GetHelp() + { + return GetBasicUsage() + + "\n " + GetAvailableActions() + " Use \"/inventory help \" for action help." + + "\n Creative mode give: " + GetCreativeGiveHelp() + + "\n \"player\" and \"container\" can be simplified to \"p\" and \"c\"." + + "\n Note that parameters in \"[]\" are optional."; + } + + private string GetCreativeGiveHelp() + { + return "Usage: /inventory creativegive "; + } + + private string GetSubCommandHelp(string cmd) + { + switch (cmd) + { + case "list": + return "List your inventory. Usage: /inventory > list"; + case "close": + return "Close an opened container. Usage: /inventory > close"; + case "click": + return "Click on an item. Usage: /inventory > click [left|right|middle]. \nDefault is left click"; + case "drop": + return "Drop an item from inventory. Usage: /inventory > drop [all]. \nAll means drop full stack"; + case "help": + return GetHelp(); + default: + return "Unknown action. " + GetAvailableActions(); + } + } + #endregion } }