package top.r3944realms.lib39.api.event; import com.mojang.brigadier.builder.LiteralArgumentBuilder; import net.minecraft.commands.CommandBuildContext; import net.minecraft.commands.CommandSourceStack; import net.minecraft.network.chat.MutableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraftforge.eventbus.api.Event; import top.r3944realms.lib39.core.command.ICommandHelpManager; import top.r3944realms.lib39.core.command.model.CommandNode; import top.r3944realms.lib39.core.command.model.CommandPath; import top.r3944realms.lib39.core.command.model.Parameter; /** * The type Register command help event. */ public class RegisterCommandHelpEvent extends Event { private final LiteralArgumentBuilder builder; private final ICommandHelpManager helpManager; private final CommandBuildContext context; /** * Instantiates a new Register command help event. * * @param builder the builder * @param helpManager the help manager * @param source the source */ public RegisterCommandHelpEvent(LiteralArgumentBuilder builder, ICommandHelpManager helpManager, CommandBuildContext source) { this.builder = builder; this.helpManager = helpManager; this.context = source; } /** * Gets id. * * @return the id */ public ResourceLocation getID() { return helpManager.getID(); } /** * Add child. * * @param child the child */ public void addChild(LiteralArgumentBuilder child) { this.builder.then(child); } /** * Get context command build context. * * @return the command build context */ public CommandBuildContext getContext(){ return this.context; } /** * Get tree literal argument builder. * * @return the literal argument builder */ public LiteralArgumentBuilder getTree(){ return this.builder; } /** * 注册命令帮助信息 * * @param CommandNode 命令节点 * @param description 命令描述 */ public void registerHelp(CommandNode CommandNode, MutableComponent description) { this.helpManager.registerCommandHelp(CommandNode, description); } /** * 注册命令帮助信息 * * @param CommandNode 命令节点 * @param descriptionKey 命令描述的语言键 */ public void registerHelp(CommandNode CommandNode, String descriptionKey) { this.helpManager.registerCommandHelp(CommandNode, descriptionKey); } /** * 注册命令参数 * * @param commandPath 命令节点 * @param parametersBuilder 参数列表构造器 */ public void registerParameters(CommandPath commandPath, Parameter.Builder parametersBuilder) { this.helpManager.registerCommandParameters(commandPath, parametersBuilder); } }