StringRepresentableArgument.java
net.minecraft.commands.arguments.StringRepresentableArgument
信息
- 全限定名:net.minecraft.commands.arguments.StringRepresentableArgument
- 类型:public class
- 包:net.minecraft.commands.arguments
- 源码路径:src/main/java/net/minecraft/commands/arguments/StringRepresentableArgument.java
- 起始行号:L22
- 实现:ArgumentType
- 职责:
TODO
字段/常量
-
ERROR_INVALID_VALUE- 类型:
DynamicCommandExceptionType - 修饰符:
private static final - 源码定位:
L23 - 说明:
TODO
- 类型:
-
codec- 类型:
Codec<T> - 修饰符:
private final - 源码定位:
L26 - 说明:
TODO
- 类型:
-
values- 类型:
Supplier<T[]> - 修饰符:
private final - 源码定位:
L27 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
protected StringRepresentableArgument(Codec<T> codec, Supplier<T[]> values) @ L29
- 构造器名:StringRepresentableArgument
- 源码定位:L29
- 修饰符:protected
参数:
- codec: Codec
- values: Supplier<T[]>
说明:
TODO
方法
下面的方法块按源码顺序生成。
public T parse(StringReader reader) @ L34
- 方法名:parse
- 源码定位:L34
- 返回类型:T
- 修饰符:public
参数:
- reader: StringReader
说明:
TODO
public <S> CompletableFuture<Suggestions> listSuggestions(CommandContext<S> context, SuggestionsBuilder builder) @ L39
- 方法名:listSuggestions
- 源码定位:L39
- 返回类型:
CompletableFuture - 修饰符:public
参数:
- context: CommandContext
- builder: SuggestionsBuilder
说明:
TODO
public Collection<String> getExamples() @ L50
- 方法名:getExamples
- 源码定位:L50
- 返回类型:Collection
- 修饰符:public
参数:
- 无
说明:
TODO
protected String convertId(String id) @ L59
- 方法名:convertId
- 源码定位:L59
- 返回类型:String
- 修饰符:protected
参数:
- id: String
说明:
TODO
代码
public class StringRepresentableArgument<T extends Enum<T> & StringRepresentable> implements ArgumentType<T> {
private static final DynamicCommandExceptionType ERROR_INVALID_VALUE = new DynamicCommandExceptionType(
value -> Component.translatableEscape("argument.enum.invalid", value)
);
private final Codec<T> codec;
private final Supplier<T[]> values;
protected StringRepresentableArgument(Codec<T> codec, Supplier<T[]> values) {
this.codec = codec;
this.values = values;
}
public T parse(StringReader reader) throws CommandSyntaxException {
String id = reader.readUnquotedString();
return this.codec.parse(JsonOps.INSTANCE, new JsonPrimitive(id)).result().orElseThrow(() -> ERROR_INVALID_VALUE.createWithContext(reader, id));
}
@Override
public <S> CompletableFuture<Suggestions> listSuggestions(CommandContext<S> context, SuggestionsBuilder builder) {
return SharedSuggestionProvider.suggest(
Arrays.<Enum>stream((Enum[])this.values.get())
.map(rec$ -> ((StringRepresentable)rec$).getSerializedName())
.map(this::convertId)
.collect(Collectors.toList()),
builder
);
}
@Override
public Collection<String> getExamples() {
return Arrays.<Enum>stream((Enum[])this.values.get())
.map(rec$ -> ((StringRepresentable)rec$).getSerializedName())
.map(this::convertId)
.limit(2L)
.collect(Collectors.toList());
}
protected String convertId(String id) {
return id;
}
}引用的其他类
-
- 引用位置:
方法调用 - 关联成员:
SharedSuggestionProvider.suggest()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Component.translatableEscape()
- 引用位置: