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()
- 引用位置: