SkipFields.java
net.minecraft.nbt.visitors.SkipFields
信息
- 全限定名:net.minecraft.nbt.visitors.SkipFields
- 类型:public class
- 包:net.minecraft.nbt.visitors
- 源码路径:src/main/java/net/minecraft/nbt/visitors/SkipFields.java
- 起始行号:L9
- 继承:CollectToTag
- 职责:
TODO
字段/常量
stack- 类型:
Deque<FieldTree> - 修饰符:
private final - 源码定位:
L10 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
public SkipFields(FieldSelector... wantedFields) @ L12
- 构造器名:SkipFields
- 源码定位:L12
- 修饰符:public
参数:
- wantedFields: FieldSelector…
说明:
TODO
方法
下面的方法块按源码顺序生成。
public StreamTagVisitor.EntryResult visitEntry(TagType<?> type, String id) @ L22
- 方法名:visitEntry
- 源码定位:L22
- 返回类型:StreamTagVisitor.EntryResult
- 修饰符:public
参数:
- type: TagType<?>
- id: String
说明:
TODO
public StreamTagVisitor.ValueResult visitContainerEnd() @ L39
- 方法名:visitContainerEnd
- 源码定位:L39
- 返回类型:StreamTagVisitor.ValueResult
- 修饰符:public
参数:
- 无
说明:
TODO
代码
public class SkipFields extends CollectToTag {
private final Deque<FieldTree> stack = new ArrayDeque<>();
public SkipFields(FieldSelector... wantedFields) {
FieldTree rootFrame = FieldTree.createRoot();
for (FieldSelector wantedField : wantedFields) {
rootFrame.addEntry(wantedField);
}
this.stack.push(rootFrame);
}
@Override
public StreamTagVisitor.EntryResult visitEntry(TagType<?> type, String id) {
FieldTree currentFrame = this.stack.element();
if (currentFrame.isSelected(type, id)) {
return StreamTagVisitor.EntryResult.SKIP;
} else {
if (type == CompoundTag.TYPE) {
FieldTree newFrame = currentFrame.fieldsToRecurse().get(id);
if (newFrame != null) {
this.stack.push(newFrame);
}
}
return super.visitEntry(type, id);
}
}
@Override
public StreamTagVisitor.ValueResult visitContainerEnd() {
if (this.depth() == this.stack.element().depth()) {
this.stack.pop();
}
return super.visitContainerEnd();
}
}引用的其他类
-
- 引用位置:
返回值
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
继承
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
字段/方法调用 - 关联成员:
FieldTree.createRoot()
- 引用位置: