27 lines
842 B
Java
27 lines
842 B
Java
package net.minecraft.nbt.visitors;
|
|
|
|
import java.util.HashMap;
|
|
import java.util.Map;
|
|
import net.minecraft.nbt.TagType;
|
|
|
|
public record FieldTree(int depth, Map<String, TagType<?>> selectedFields, Map<String, FieldTree> fieldsToRecurse) {
|
|
private FieldTree(int depth) {
|
|
this(depth, new HashMap(), new HashMap());
|
|
}
|
|
|
|
public static FieldTree createRoot() {
|
|
return new FieldTree(1);
|
|
}
|
|
|
|
public void addEntry(FieldSelector selector) {
|
|
if (this.depth <= selector.path().size()) {
|
|
((FieldTree)this.fieldsToRecurse.computeIfAbsent((String)selector.path().get(this.depth - 1), string -> new FieldTree(this.depth + 1))).addEntry(selector);
|
|
} else {
|
|
this.selectedFields.put(selector.name(), selector.type());
|
|
}
|
|
}
|
|
|
|
public boolean isSelected(TagType<?> type, String name) {
|
|
return type.equals(this.selectedFields().get(name));
|
|
}
|
|
}
|