HolderGetter.java

net.minecraft.core.HolderGetter

信息

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

    TODO

字段/常量

内部类/嵌套类型

  • net.minecraft.core.HolderGetter.Provider
    • 类型: interface
    • 修饰符: public
    • 源码定位: L25
    • 说明:

      TODO

构造器

方法

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

Optional<Holder.Reference<T>> get(ResourceKey<T> id) @ L9

  • 方法名:get
  • 源码定位:L9
  • 返回类型:Optional<Holder.Reference>
  • 修饰符:package-private

参数:

  • id: ResourceKey

说明:

TODO

default Holder.Reference<T> getOrThrow(ResourceKey<T> id) @ L11

  • 方法名:getOrThrow
  • 源码定位:L11
  • 返回类型:Holder.Reference
  • 修饰符:default

参数:

  • id: ResourceKey

说明:

TODO

Optional<HolderSet.Named<T>> get(TagKey<T> id) @ L15

  • 方法名:get
  • 源码定位:L15
  • 返回类型:Optional<HolderSet.Named>
  • 修饰符:package-private

参数:

  • id: TagKey

说明:

TODO

default HolderSet.Named<T> getOrThrow(TagKey<T> id) @ L17

  • 方法名:getOrThrow
  • 源码定位:L17
  • 返回类型:HolderSet.Named
  • 修饰符:default

参数:

  • id: TagKey

说明:

TODO

default Optional<Holder<T>> getRandomElementOf(TagKey<T> tag, RandomSource random) @ L21

  • 方法名:getRandomElementOf
  • 源码定位:L21
  • 返回类型:Optional<Holder>
  • 修饰符:default

参数:

  • tag: TagKey
  • random: RandomSource

说明:

TODO

代码

public interface HolderGetter<T> {
    Optional<Holder.Reference<T>> get(final ResourceKey<T> id);
 
    default Holder.Reference<T> getOrThrow(ResourceKey<T> id) {
        return this.get(id).orElseThrow(() -> new IllegalStateException("Missing element " + id));
    }
 
    Optional<HolderSet.Named<T>> get(final TagKey<T> id);
 
    default HolderSet.Named<T> getOrThrow(TagKey<T> id) {
        return this.get(id).orElseThrow(() -> new IllegalStateException("Missing tag " + id));
    }
 
    default Optional<Holder<T>> getRandomElementOf(TagKey<T> tag, RandomSource random) {
        return this.get(tag).flatMap(holderSet -> holderSet.getRandomElement(random));
    }
 
    public interface Provider {
        <T> Optional<? extends HolderGetter<T>> lookup(final ResourceKey<? extends Registry<? extends T>> key);
 
        default <T> HolderGetter<T> lookupOrThrow(ResourceKey<? extends Registry<? extends T>> key) {
            return (HolderGetter<T>)this.lookup(key).orElseThrow(() -> new IllegalStateException("Registry " + key.identifier() + " not found"));
        }
 
        default <T> Optional<Holder.Reference<T>> get(ResourceKey<T> id) {
            return this.lookup(id.registryKey()).flatMap(l -> l.get(id));
        }
 
        default <T> Holder.Reference<T> getOrThrow(ResourceKey<T> id) {
            return this.lookup(id.registryKey()).flatMap(l -> l.get(id)).orElseThrow(() -> new IllegalStateException("Missing element " + id));
        }
 
        default <T> Optional<HolderSet.Named<T>> get(TagKey<T> id) {
            return this.lookup(id.registry()).flatMap(l -> l.get(id));
        }
 
        default <T> HolderSet.Named<T> getOrThrow(TagKey<T> id) {
            return this.lookup(id.registry()).flatMap(l -> l.get(id)).orElseThrow(() -> new IllegalStateException("Missing tag " + id));
        }
    }
}

引用的其他类