eagler-1-12-4 / src /game /java /net /minecraft /client /searchtree /ResourceLocationSearchTree.java
soiz1's picture
Upload folder using huggingface_hub
d46f4a3 verified
package net.minecraft.client.searchtree;
import java.util.List;
import java.util.Locale;
import java.util.function.Function;
import java.util.stream.Stream;
import net.minecraft.resources.ResourceLocation;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@OnlyIn(Dist.CLIENT)
public interface ResourceLocationSearchTree<T> {
static <T> ResourceLocationSearchTree<T> empty() {
return new ResourceLocationSearchTree<T>() {
@Override
public List<T> searchNamespace(String p_235218_) {
return List.of();
}
@Override
public List<T> searchPath(String p_235220_) {
return List.of();
}
};
}
static <T> ResourceLocationSearchTree<T> create(List<T> p_235213_, Function<T, Stream<ResourceLocation>> p_235214_) {
if (p_235213_.isEmpty()) {
return empty();
} else {
final SuffixArray<T> suffixarray = new SuffixArray<>();
final SuffixArray<T> suffixarray1 = new SuffixArray<>();
for (T t : p_235213_) {
p_235214_.apply(t).forEach(p_235210_ -> {
suffixarray.add(t, p_235210_.getNamespace().toLowerCase(Locale.ROOT));
suffixarray1.add(t, p_235210_.getPath().toLowerCase(Locale.ROOT));
});
}
suffixarray.generate();
suffixarray1.generate();
return new ResourceLocationSearchTree<T>() {
@Override
public List<T> searchNamespace(String p_235227_) {
return suffixarray.search(p_235227_);
}
@Override
public List<T> searchPath(String p_235229_) {
return suffixarray1.search(p_235229_);
}
};
}
}
List<T> searchNamespace(String p_235211_);
List<T> searchPath(String p_235215_);
}