StringTagVisitor.java
net.minecraft.nbt.StringTagVisitor
信息
- 全限定名:net.minecraft.nbt.StringTagVisitor
- 类型:public class
- 包:net.minecraft.nbt
- 源码路径:src/main/java/net/minecraft/nbt/StringTagVisitor.java
- 起始行号:L8
- 实现:TagVisitor
- 职责:
TODO
字段/常量
-
UNQUOTED_KEY_MATCH- 类型:
Pattern - 修饰符:
private static final - 源码定位:
L9 - 说明:
TODO
- 类型:
-
builder- 类型:
StringBuilder - 修饰符:
private final - 源码定位:
L10 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
- 无
方法
下面的方法块按源码顺序生成。
public String build() @ L12
- 方法名:build
- 源码定位:L12
- 返回类型:String
- 修饰符:public
参数:
- 无
说明:
TODO
public void visitString(StringTag tag) @ L16
- 方法名:visitString
- 源码定位:L16
- 返回类型:void
- 修饰符:public
参数:
- tag: StringTag
说明:
TODO
public void visitByte(ByteTag tag) @ L21
- 方法名:visitByte
- 源码定位:L21
- 返回类型:void
- 修饰符:public
参数:
- tag: ByteTag
说明:
TODO
public void visitShort(ShortTag tag) @ L26
- 方法名:visitShort
- 源码定位:L26
- 返回类型:void
- 修饰符:public
参数:
- tag: ShortTag
说明:
TODO
public void visitInt(IntTag tag) @ L31
- 方法名:visitInt
- 源码定位:L31
- 返回类型:void
- 修饰符:public
参数:
- tag: IntTag
说明:
TODO
public void visitLong(LongTag tag) @ L36
- 方法名:visitLong
- 源码定位:L36
- 返回类型:void
- 修饰符:public
参数:
- tag: LongTag
说明:
TODO
public void visitFloat(FloatTag tag) @ L41
- 方法名:visitFloat
- 源码定位:L41
- 返回类型:void
- 修饰符:public
参数:
- tag: FloatTag
说明:
TODO
public void visitDouble(DoubleTag tag) @ L46
- 方法名:visitDouble
- 源码定位:L46
- 返回类型:void
- 修饰符:public
参数:
- tag: DoubleTag
说明:
TODO
public void visitByteArray(ByteArrayTag tag) @ L51
- 方法名:visitByteArray
- 源码定位:L51
- 返回类型:void
- 修饰符:public
参数:
- tag: ByteArrayTag
说明:
TODO
public void visitIntArray(IntArrayTag tag) @ L67
- 方法名:visitIntArray
- 源码定位:L67
- 返回类型:void
- 修饰符:public
参数:
- tag: IntArrayTag
说明:
TODO
public void visitLongArray(LongArrayTag tag) @ L83
- 方法名:visitLongArray
- 源码定位:L83
- 返回类型:void
- 修饰符:public
参数:
- tag: LongArrayTag
说明:
TODO
public void visitList(ListTag tag) @ L99
- 方法名:visitList
- 源码定位:L99
- 返回类型:void
- 修饰符:public
参数:
- tag: ListTag
说明:
TODO
public void visitCompound(CompoundTag tag) @ L114
- 方法名:visitCompound
- 源码定位:L114
- 返回类型:void
- 修饰符:public
参数:
- tag: CompoundTag
说明:
TODO
private void handleKeyEscape(String input) @ L134
- 方法名:handleKeyEscape
- 源码定位:L134
- 返回类型:void
- 修饰符:private
参数:
- input: String
说明:
TODO
public void visitEnd(EndTag tag) @ L142
- 方法名:visitEnd
- 源码定位:L142
- 返回类型:void
- 修饰符:public
参数:
- tag: EndTag
说明:
TODO
代码
public class StringTagVisitor implements TagVisitor {
private static final Pattern UNQUOTED_KEY_MATCH = Pattern.compile("[A-Za-z._]+[A-Za-z0-9._+-]*");
private final StringBuilder builder = new StringBuilder();
public String build() {
return this.builder.toString();
}
@Override
public void visitString(StringTag tag) {
this.builder.append(StringTag.quoteAndEscape(tag.value()));
}
@Override
public void visitByte(ByteTag tag) {
this.builder.append(tag.value()).append('b');
}
@Override
public void visitShort(ShortTag tag) {
this.builder.append(tag.value()).append('s');
}
@Override
public void visitInt(IntTag tag) {
this.builder.append(tag.value());
}
@Override
public void visitLong(LongTag tag) {
this.builder.append(tag.value()).append('L');
}
@Override
public void visitFloat(FloatTag tag) {
this.builder.append(tag.value()).append('f');
}
@Override
public void visitDouble(DoubleTag tag) {
this.builder.append(tag.value()).append('d');
}
@Override
public void visitByteArray(ByteArrayTag tag) {
this.builder.append("[B;");
byte[] data = tag.getAsByteArray();
for (int i = 0; i < data.length; i++) {
if (i != 0) {
this.builder.append(',');
}
this.builder.append(data[i]).append('B');
}
this.builder.append(']');
}
@Override
public void visitIntArray(IntArrayTag tag) {
this.builder.append("[I;");
int[] data = tag.getAsIntArray();
for (int i = 0; i < data.length; i++) {
if (i != 0) {
this.builder.append(',');
}
this.builder.append(data[i]);
}
this.builder.append(']');
}
@Override
public void visitLongArray(LongArrayTag tag) {
this.builder.append("[L;");
long[] data = tag.getAsLongArray();
for (int i = 0; i < data.length; i++) {
if (i != 0) {
this.builder.append(',');
}
this.builder.append(data[i]).append('L');
}
this.builder.append(']');
}
@Override
public void visitList(ListTag tag) {
this.builder.append('[');
for (int i = 0; i < tag.size(); i++) {
if (i != 0) {
this.builder.append(',');
}
tag.get(i).accept(this);
}
this.builder.append(']');
}
@Override
public void visitCompound(CompoundTag tag) {
this.builder.append('{');
List<Entry<String, Tag>> entries = new ArrayList<>(tag.entrySet());
entries.sort(Entry.comparingByKey());
for (int i = 0; i < entries.size(); i++) {
Entry<String, Tag> entry = entries.get(i);
if (i != 0) {
this.builder.append(',');
}
this.handleKeyEscape(entry.getKey());
this.builder.append(':');
entry.getValue().accept(this);
}
this.builder.append('}');
}
private void handleKeyEscape(String input) {
if (!input.equalsIgnoreCase("true") && !input.equalsIgnoreCase("false") && UNQUOTED_KEY_MATCH.matcher(input).matches()) {
this.builder.append(input);
} else {
StringTag.quoteAndEscape(input, this.builder);
}
}
@Override
public void visitEnd(EndTag tag) {
this.builder.append("END");
}
}引用的其他类
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数/方法调用 - 关联成员:
StringTag.quoteAndEscape()
- 引用位置:
-
- 引用位置:
实现
- 引用位置:
-
- 引用位置:
字段/方法调用 - 关联成员:
Pattern.compile()
- 引用位置: