Implement command completion suggestions.

This commit is contained in:
BruceChen 2022-12-06 15:50:17 +08:00
parent 5d2589b10f
commit 84cf749344
115 changed files with 4684 additions and 2695 deletions

View file

@ -0,0 +1,28 @@
using System.Collections.Generic;
using System.Reflection;
using Brigadier.NET.Tree;
namespace MinecraftClient.CommandHandler.Patch
{
public static class CommandNodeExtensions
{
public static void RemoveChild(this CommandNode<CmdResult> commandNode, string name)
{
var children = (IDictionary<string, CommandNode<CmdResult>>)
typeof(CommandNode<CmdResult>)
.GetField("_children", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance)!
.GetValue(commandNode)!;
var literals = (IDictionary<string, LiteralCommandNode<CmdResult>>)
typeof(CommandNode<CmdResult>)
.GetField("_literals", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance)!
.GetValue(commandNode)!;
var arguments = (IDictionary<string, ArgumentCommandNode<CmdResult>>)
typeof(CommandNode<CmdResult>)
.GetField("_arguments", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance)!
.GetValue(commandNode)!;
children.Remove(name);
literals.Remove(name);
}
}
}