TagParser.java
net.minecraft.nbt.TagParser
信息
- 全限定名:net.minecraft.nbt.TagParser
- 类型:public class
- 包:net.minecraft.nbt
- 源码路径:src/main/java/net/minecraft/nbt/TagParser.java
- 起始行号:L13
- 职责:
TODO
字段/常量
-
ERROR_TRAILING_DATA- 类型:
SimpleCommandExceptionType - 修饰符:
public static final - 源码定位:
L14 - 说明:
TODO
- 类型:
-
ERROR_EXPECTED_COMPOUND- 类型:
SimpleCommandExceptionType - 修饰符:
public static final - 源码定位:
L15 - 说明:
TODO
- 类型:
-
ELEMENT_SEPARATOR- 类型:
char - 修饰符:
public static final - 源码定位:
L18 - 说明:
TODO
- 类型:
-
NAME_VALUE_SEPARATOR- 类型:
char - 修饰符:
public static final - 源码定位:
L19 - 说明:
TODO
- 类型:
-
NBT_OPS_PARSER- 类型:
TagParser<Tag> - 修饰符:
private static final - 源码定位:
L20 - 说明:
TODO
- 类型:
-
FLATTENED_CODEC- 类型:
Codec<CompoundTag> - 修饰符:
public static final - 源码定位:
L21 - 说明:
TODO
- 类型:
-
LENIENT_CODEC- 类型:
Codec<CompoundTag> - 修饰符:
public static final - 源码定位:
L35 - 说明:
TODO
- 类型:
-
ops- 类型:
DynamicOps<T> - 修饰符:
private final - 源码定位:
L36 - 说明:
TODO
- 类型:
-
grammar- 类型:
Grammar<T> - 修饰符:
private final - 源码定位:
L37 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
private TagParser(DynamicOps<T> ops, Grammar<T> grammar) @ L39
- 构造器名:TagParser
- 源码定位:L39
- 修饰符:private
参数:
- ops: DynamicOps
- grammar: Grammar
说明:
TODO
方法
下面的方法块按源码顺序生成。
public DynamicOps<T> getOps() @ L44
- 方法名:getOps
- 源码定位:L44
- 返回类型:DynamicOps
- 修饰符:public
参数:
- 无
说明:
TODO
public static <T> TagParser<T> create(DynamicOps<T> ops) @ L48
- 方法名:create
- 源码定位:L48
- 返回类型:
TagParser - 修饰符:public static
参数:
- ops: DynamicOps
说明:
TODO
private static CompoundTag castToCompoundOrThrow(StringReader reader, Tag result) @ L52
- 方法名:castToCompoundOrThrow
- 源码定位:L52
- 返回类型:CompoundTag
- 修饰符:private static
参数:
- reader: StringReader
- result: Tag
说明:
TODO
public static CompoundTag parseCompoundFully(String input) @ L60
- 方法名:parseCompoundFully
- 源码定位:L60
- 返回类型:CompoundTag
- 修饰符:public static
参数:
- input: String
说明:
TODO
public T parseFully(String input) @ L65
- 方法名:parseFully
- 源码定位:L65
- 返回类型:T
- 修饰符:public
参数:
- input: String
说明:
TODO
public T parseFully(StringReader reader) @ L69
- 方法名:parseFully
- 源码定位:L69
- 返回类型:T
- 修饰符:public
参数:
- reader: StringReader
说明:
TODO
public T parseAsArgument(StringReader reader) @ L79
- 方法名:parseAsArgument
- 源码定位:L79
- 返回类型:T
- 修饰符:public
参数:
- reader: StringReader
说明:
TODO
public static CompoundTag parseCompoundAsArgument(StringReader reader) @ L83
- 方法名:parseCompoundAsArgument
- 源码定位:L83
- 返回类型:CompoundTag
- 修饰符:public static
参数:
- reader: StringReader
说明:
TODO
代码
public class TagParser<T> {
public static final SimpleCommandExceptionType ERROR_TRAILING_DATA = new SimpleCommandExceptionType(Component.translatable("argument.nbt.trailing"));
public static final SimpleCommandExceptionType ERROR_EXPECTED_COMPOUND = new SimpleCommandExceptionType(
Component.translatable("argument.nbt.expected.compound")
);
public static final char ELEMENT_SEPARATOR = ',';
public static final char NAME_VALUE_SEPARATOR = ':';
private static final TagParser<Tag> NBT_OPS_PARSER = create(NbtOps.INSTANCE);
public static final Codec<CompoundTag> FLATTENED_CODEC = Codec.STRING
.comapFlatMap(
s -> {
try {
Tag result = NBT_OPS_PARSER.parseFully(s);
return result instanceof CompoundTag compoundTag
? DataResult.success(compoundTag, Lifecycle.stable())
: DataResult.error(() -> "Expected compound tag, got " + result);
} catch (CommandSyntaxException var3) {
return DataResult.error(var3::getMessage);
}
},
CompoundTag::toString
);
public static final Codec<CompoundTag> LENIENT_CODEC = Codec.withAlternative(FLATTENED_CODEC, CompoundTag.CODEC);
private final DynamicOps<T> ops;
private final Grammar<T> grammar;
private TagParser(DynamicOps<T> ops, Grammar<T> grammar) {
this.ops = ops;
this.grammar = grammar;
}
public DynamicOps<T> getOps() {
return this.ops;
}
public static <T> TagParser<T> create(DynamicOps<T> ops) {
return new TagParser<>(ops, SnbtGrammar.createParser(ops));
}
private static CompoundTag castToCompoundOrThrow(StringReader reader, Tag result) throws CommandSyntaxException {
if (result instanceof CompoundTag compoundTag) {
return compoundTag;
} else {
throw ERROR_EXPECTED_COMPOUND.createWithContext(reader);
}
}
public static CompoundTag parseCompoundFully(String input) throws CommandSyntaxException {
StringReader reader = new StringReader(input);
return castToCompoundOrThrow(reader, NBT_OPS_PARSER.parseFully(reader));
}
public T parseFully(String input) throws CommandSyntaxException {
return this.parseFully(new StringReader(input));
}
public T parseFully(StringReader reader) throws CommandSyntaxException {
T result = this.grammar.parseForCommands(reader);
reader.skipWhitespace();
if (reader.canRead()) {
throw ERROR_TRAILING_DATA.createWithContext(reader);
} else {
return result;
}
}
public T parseAsArgument(StringReader reader) throws CommandSyntaxException {
return this.grammar.parseForCommands(reader);
}
public static CompoundTag parseCompoundAsArgument(StringReader reader) throws CommandSyntaxException {
Tag result = NBT_OPS_PARSER.parseAsArgument(reader);
return castToCompoundOrThrow(reader, result);
}
}引用的其他类
-
- 引用位置:
字段/返回值
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
SnbtGrammar.createParser()
- 引用位置:
-
- 引用位置:
参数/字段
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Component.translatable()
- 引用位置:
-
- 引用位置:
参数/字段
- 引用位置: