package net.minecraft.client.searchtree; import com.google.common.collect.ImmutableList; import java.util.Iterator; import java.util.List; import java.util.function.Function; import java.util.stream.Stream; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.resources.ResourceLocation; @Environment(EnvType.CLIENT) public class FullTextSearchTree extends IdSearchTree { private final SearchTree plainTextSearchTree; public FullTextSearchTree(Function> filter, Function> idGetter, List contents) { super(idGetter, contents); this.plainTextSearchTree = SearchTree.plainText(contents, filter); } @Override protected List searchPlainText(String query) { return this.plainTextSearchTree.search(query); } @Override protected List searchResourceLocation(String namespace, String path) { List list = this.resourceLocationSearchTree.searchNamespace(namespace); List list2 = this.resourceLocationSearchTree.searchPath(path); List list3 = this.plainTextSearchTree.search(path); Iterator iterator = new MergingUniqueIterator<>(list2.iterator(), list3.iterator(), this.additionOrder); return ImmutableList.copyOf(new IntersectionIterator<>(list.iterator(), iterator, this.additionOrder)); } }