SignableCommand.java

net.minecraft.network.chat.SignableCommand

信息

  • 全限定名:net.minecraft.network.chat.SignableCommand
  • 类型:public record
  • 包:net.minecraft.network.chat
  • 源码路径:src/main/java/net/minecraft/network/chat/SignableCommand.java
  • 起始行号:L13
  • 职责:

    TODO

字段/常量

内部类/嵌套类型

  • net.minecraft.network.chat.SignableCommand.Argument
    • 类型: record
    • 修饰符: public
    • 源码定位: L43
    • 说明:

      TODO

构造器

方法

下面的方法块按源码顺序生成。

public static <S> boolean hasSignableArguments(ParseResults<S> command) @ L14

  • 方法名:hasSignableArguments
  • 源码定位:L14
  • 返回类型: boolean
  • 修饰符:public static

参数:

  • command: ParseResults

说明:

TODO

public static <S> SignableCommand<S> of(ParseResults<S> command) @ L18

  • 方法名:of
  • 源码定位:L18
  • 返回类型: SignableCommand
  • 修饰符:public static

参数:

  • command: ParseResults

说明:

TODO

public SignableCommand.Argument<S> getArgument(String name) @ L33

  • 方法名:getArgument
  • 源码定位:L33
  • 返回类型:SignableCommand.Argument
  • 修饰符:public

参数:

  • name: String

说明:

TODO

代码

public record SignableCommand<S>(List<SignableCommand.Argument<S>> arguments) {
    public static <S> boolean hasSignableArguments(ParseResults<S> command) {
        return !of(command).arguments().isEmpty();
    }
 
    public static <S> SignableCommand<S> of(ParseResults<S> command) {
        final String commandString = command.getReader().getString();
        final List<SignableCommand.Argument<S>> arguments = new ArrayList<>();
        ArgumentVisitor.visitArguments(command, new ArgumentVisitor.Output<S>() {
            @Override
            public <T> void accept(CommandContextBuilder<S> context, ArgumentCommandNode<S, T> argument, @Nullable ParsedArgument<S, T> value) {
                if (value != null && argument.getType() instanceof SignedArgument) {
                    String stringValue = value.getRange().get(commandString);
                    arguments.add(new SignableCommand.Argument<>(argument, stringValue));
                }
            }
        }, true);
        return new SignableCommand<>(arguments);
    }
 
    public SignableCommand.@Nullable Argument<S> getArgument(String name) {
        for (SignableCommand.Argument<S> argument : this.arguments) {
            if (name.equals(argument.name())) {
                return argument;
            }
        }
 
        return null;
    }
 
    public record Argument<S>(ArgumentCommandNode<S, ?> node, String value) {
        public String name() {
            return this.node.getName();
        }
    }
}

引用的其他类

  • ArgumentVisitor
    • 引用位置: 方法调用
    • 关联成员: ArgumentVisitor.visitArguments()