IdentifierSearchTree.java

net.minecraft.client.searchtree.IdentifierSearchTree

信息

  • 全限定名:net.minecraft.client.searchtree.IdentifierSearchTree
  • 类型:public interface
  • 包:net.minecraft.client.searchtree
  • 源码路径:src/main/java/net/minecraft/client/searchtree/IdentifierSearchTree.java
  • 起始行号:L12
  • 职责:

    TODO

字段/常量

内部类/嵌套类型

构造器

方法

下面的方法块按源码顺序生成。

static <T> IdentifierSearchTree<T> empty() @ L13

  • 方法名:empty
  • 源码定位:L13
  • 返回类型: IdentifierSearchTree
  • 修饰符:static

参数:

说明:

TODO

static <T> IdentifierSearchTree<T> create(List<T> elements, Function<T,Stream<Identifier>> idGetter) @ L27

  • 方法名:create
  • 源码定位:L27
  • 返回类型: IdentifierSearchTree
  • 修饰符:static

参数:

  • elements: List
  • idGetter: Function<T,Stream>

说明:

TODO

List<T> searchNamespace(String namespace) @ L57

  • 方法名:searchNamespace
  • 源码定位:L57
  • 返回类型:List
  • 修饰符:package-private

参数:

  • namespace: String

说明:

TODO

List<T> searchPath(String path) @ L59

  • 方法名:searchPath
  • 源码定位:L59
  • 返回类型:List
  • 修饰符:package-private

参数:

  • path: String

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public interface IdentifierSearchTree<T> {
    static <T> IdentifierSearchTree<T> empty() {
        return new IdentifierSearchTree<T>() {
            @Override
            public List<T> searchNamespace(String namespace) {
                return List.of();
            }
 
            @Override
            public List<T> searchPath(String path) {
                return List.of();
            }
        };
    }
 
    static <T> IdentifierSearchTree<T> create(List<T> elements, Function<T, Stream<Identifier>> idGetter) {
        if (elements.isEmpty()) {
            return empty();
        } else {
            final SuffixArray<T> namespaceTree = new SuffixArray<>();
            final SuffixArray<T> pathTree = new SuffixArray<>();
 
            for (T element : elements) {
                idGetter.apply(element).forEach(elementId -> {
                    namespaceTree.add(element, elementId.getNamespace().toLowerCase(Locale.ROOT));
                    pathTree.add(element, elementId.getPath().toLowerCase(Locale.ROOT));
                });
            }
 
            namespaceTree.generate();
            pathTree.generate();
            return new IdentifierSearchTree<T>() {
                @Override
                public List<T> searchNamespace(String namespace) {
                    return namespaceTree.search(namespace);
                }
 
                @Override
                public List<T> searchPath(String path) {
                    return pathTree.search(path);
                }
            };
        }
    }
 
    List<T> searchNamespace(String namespace);
 
    List<T> searchPath(String path);
}

引用的其他类