DefaultedMappedRegistry.java

net.minecraft.core.DefaultedMappedRegistry

信息

  • 全限定名:net.minecraft.core.DefaultedMappedRegistry
  • 类型:public class
  • 包:net.minecraft.core
  • 源码路径:src/main/java/net/minecraft/core/DefaultedMappedRegistry.java
  • 起始行号:L10
  • 继承:MappedRegistry
  • 实现:DefaultedRegistry
  • 职责:

    TODO

字段/常量

  • defaultKey

    • 类型: Identifier
    • 修饰符: private final
    • 源码定位: L11
    • 说明:

      TODO

  • defaultValue

    • 类型: Holder.Reference<T>
    • 修饰符: private
    • 源码定位: L12
    • 说明:

      TODO

内部类/嵌套类型

构造器

public DefaultedMappedRegistry(String defaultKey, ResourceKey<?extends Registry<T>> key, Lifecycle lifecycle, boolean intrusiveHolders) @ L14

  • 构造器名:DefaultedMappedRegistry
  • 源码定位:L14
  • 修饰符:public

参数:

  • defaultKey: String
  • key: ResourceKey<?extends Registry>
  • lifecycle: Lifecycle
  • intrusiveHolders: boolean

说明:

TODO

方法

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

public Holder.Reference<T> register(ResourceKey<T> key, T value, RegistrationInfo registrationInfo) @ L19

  • 方法名:register
  • 源码定位:L19
  • 返回类型:Holder.Reference
  • 修饰符:public

参数:

  • key: ResourceKey
  • value: T
  • registrationInfo: RegistrationInfo

说明:

TODO

public int getId(T thing) @ L29

  • 方法名:getId
  • 源码定位:L29
  • 返回类型:int
  • 修饰符:public

参数:

  • thing: T

说明:

TODO

public Identifier getKey(T thing) @ L35

  • 方法名:getKey
  • 源码定位:L35
  • 返回类型:Identifier
  • 修饰符:public

参数:

  • thing: T

说明:

TODO

public T getValue(Identifier key) @ L41

  • 方法名:getValue
  • 源码定位:L41
  • 返回类型:T
  • 修饰符:public

参数:

  • key: Identifier

说明:

TODO

public Optional<T> getOptional(Identifier key) @ L47

  • 方法名:getOptional
  • 源码定位:L47
  • 返回类型:Optional
  • 修饰符:public

参数:

  • key: Identifier

说明:

TODO

public Optional<Holder.Reference<T>> getAny() @ L52

  • 方法名:getAny
  • 源码定位:L52
  • 返回类型:Optional<Holder.Reference>
  • 修饰符:public

参数:

说明:

TODO

public T byId(int id) @ L57

  • 方法名:byId
  • 源码定位:L57
  • 返回类型:T
  • 修饰符:public

参数:

  • id: int

说明:

TODO

public Optional<Holder.Reference<T>> getRandom(RandomSource random) @ L63

  • 方法名:getRandom
  • 源码定位:L63
  • 返回类型:Optional<Holder.Reference>
  • 修饰符:public

参数:

  • random: RandomSource

说明:

TODO

public Identifier getDefaultKey() @ L68

  • 方法名:getDefaultKey
  • 源码定位:L68
  • 返回类型:Identifier
  • 修饰符:public

参数:

说明:

TODO

代码

public class DefaultedMappedRegistry<T> extends MappedRegistry<T> implements DefaultedRegistry<T> {
    private final Identifier defaultKey;
    private Holder.Reference<T> defaultValue;
 
    public DefaultedMappedRegistry(String defaultKey, ResourceKey<? extends Registry<T>> key, Lifecycle lifecycle, boolean intrusiveHolders) {
        super(key, lifecycle, intrusiveHolders);
        this.defaultKey = Identifier.parse(defaultKey);
    }
 
    @Override
    public Holder.Reference<T> register(ResourceKey<T> key, T value, RegistrationInfo registrationInfo) {
        Holder.Reference<T> result = super.register(key, value, registrationInfo);
        if (this.defaultKey.equals(key.identifier())) {
            this.defaultValue = result;
        }
 
        return result;
    }
 
    @Override
    public int getId(@Nullable T thing) {
        int id = super.getId(thing);
        return id == -1 ? super.getId(this.defaultValue.value()) : id;
    }
 
    @Override
    public Identifier getKey(T thing) {
        Identifier k = super.getKey(thing);
        return k == null ? this.defaultKey : k;
    }
 
    @Override
    public T getValue(@Nullable Identifier key) {
        T t = super.getValue(key);
        return t == null ? this.defaultValue.value() : t;
    }
 
    @Override
    public Optional<T> getOptional(@Nullable Identifier key) {
        return Optional.ofNullable(super.getValue(key));
    }
 
    @Override
    public Optional<Holder.Reference<T>> getAny() {
        return Optional.ofNullable(this.defaultValue);
    }
 
    @Override
    public T byId(int id) {
        T t = super.byId(id);
        return t == null ? this.defaultValue.value() : t;
    }
 
    @Override
    public Optional<Holder.Reference<T>> getRandom(RandomSource random) {
        return super.getRandom(random).or(() -> Optional.of(this.defaultValue));
    }
 
    @Override
    public Identifier getDefaultKey() {
        return this.defaultKey;
    }
}

引用的其他类