Registry.java
net.minecraft.core.Registry
信息
- 全限定名:net.minecraft.core.Registry
- 类型:public interface
- 包:net.minecraft.core
- 源码路径:src/main/java/net/minecraft/core/Registry.java
- 起始行号:L26
- 继承:IdMap
, Keyable, HolderLookup.RegistryLookup - 职责:
TODO
字段/常量
- 无
内部类/嵌套类型
net.minecraft.core.Registry.PendingTags- 类型:
interface - 修饰符:
public - 源码定位:
L175 - 说明:
TODO
- 类型:
构造器
- 无
方法
下面的方法块按源码顺序生成。
ResourceKey<?extends Registry<T>> key() @ L27
- 方法名:key
- 源码定位:L27
- 返回类型:ResourceKey<?extends Registry
> - 修饰符:package-private
参数:
- 无
说明:
TODO
default Codec<T> byNameCodec() @ L30
- 方法名:byNameCodec
- 源码定位:L30
- 返回类型:Codec
- 修饰符:default
参数:
- 无
说明:
TODO
default Codec<Holder<T>> holderByNameCodec() @ L34
- 方法名:holderByNameCodec
- 源码定位:L34
- 返回类型:Codec<Holder
> - 修饰符:default
参数:
- 无
说明:
TODO
private Codec<Holder.Reference<T>> referenceHolderWithLifecycle() @ L38
- 方法名:referenceHolderWithLifecycle
- 源码定位:L38
- 返回类型:Codec<Holder.Reference
> - 修饰符:private
参数:
- 无
说明:
TODO
private DataResult<Holder.Reference<T>> safeCastToReference(Holder<T> holder) @ L49
- 方法名:safeCastToReference
- 源码定位:L49
- 返回类型:DataResult<Holder.Reference
> - 修饰符:private
参数:
- holder: Holder
说明:
TODO
default <U> Stream<U> keys(DynamicOps<U> ops) @ L55
- 方法名:keys
- 源码定位:L55
- 返回类型: Stream
- 修饰符:default
参数:
- ops: DynamicOps
说明:
TODO
Identifier getKey(T thing) @ L60
- 方法名:getKey
- 源码定位:L60
- 返回类型:Identifier
- 修饰符:package-private
参数:
- thing: T
说明:
TODO
Optional<ResourceKey<T>> getResourceKey(T thing) @ L62
- 方法名:getResourceKey
- 源码定位:L62
- 返回类型:Optional<ResourceKey
> - 修饰符:package-private
参数:
- thing: T
说明:
TODO
int getId(T thing) @ L64
- 方法名:getId
- 源码定位:L64
- 返回类型:int
- 修饰符:package-private
参数:
- thing: T
说明:
TODO
T getValue(ResourceKey<T> key) @ L67
- 方法名:getValue
- 源码定位:L67
- 返回类型:T
- 修饰符:package-private
参数:
- key: ResourceKey
说明:
TODO
T getValue(Identifier key) @ L69
- 方法名:getValue
- 源码定位:L69
- 返回类型:T
- 修饰符:package-private
参数:
- key: Identifier
说明:
TODO
Optional<RegistrationInfo> registrationInfo(ResourceKey<T> element) @ L71
- 方法名:registrationInfo
- 源码定位:L71
- 返回类型:Optional
- 修饰符:package-private
参数:
- element: ResourceKey
说明:
TODO
default Optional<T> getOptional(Identifier key) @ L73
- 方法名:getOptional
- 源码定位:L73
- 返回类型:Optional
- 修饰符:default
参数:
- key: Identifier
说明:
TODO
default Optional<T> getOptional(ResourceKey<T> key) @ L77
- 方法名:getOptional
- 源码定位:L77
- 返回类型:Optional
- 修饰符:default
参数:
- key: ResourceKey
说明:
TODO
Optional<Holder.Reference<T>> getAny() @ L81
- 方法名:getAny
- 源码定位:L81
- 返回类型:Optional<Holder.Reference
> - 修饰符:package-private
参数:
- 无
说明:
TODO
default T getValueOrThrow(ResourceKey<T> key) @ L83
- 方法名:getValueOrThrow
- 源码定位:L83
- 返回类型:T
- 修饰符:default
参数:
- key: ResourceKey
说明:
TODO
Set<Identifier> keySet() @ L92
- 方法名:keySet
- 源码定位:L92
- 返回类型:Set
- 修饰符:package-private
参数:
- 无
说明:
TODO
Set<Entry<ResourceKey<T>,T>> entrySet() @ L94
- 方法名:entrySet
- 源码定位:L94
- 返回类型:Set<Entry<ResourceKey
,T>> - 修饰符:package-private
参数:
- 无
说明:
TODO
Set<ResourceKey<T>> registryKeySet() @ L96
- 方法名:registryKeySet
- 源码定位:L96
- 返回类型:Set<ResourceKey
> - 修饰符:package-private
参数:
- 无
说明:
TODO
Optional<Holder.Reference<T>> getRandom(RandomSource random) @ L98
- 方法名:getRandom
- 源码定位:L98
- 返回类型:Optional<Holder.Reference
> - 修饰符:package-private
参数:
- random: RandomSource
说明:
TODO
default Stream<T> stream() @ L100
- 方法名:stream
- 源码定位:L100
- 返回类型:Stream
- 修饰符:default
参数:
- 无
说明:
TODO
boolean containsKey(Identifier key) @ L104
- 方法名:containsKey
- 源码定位:L104
- 返回类型:boolean
- 修饰符:package-private
参数:
- key: Identifier
说明:
TODO
boolean containsKey(ResourceKey<T> key) @ L106
- 方法名:containsKey
- 源码定位:L106
- 返回类型:boolean
- 修饰符:package-private
参数:
- key: ResourceKey
说明:
TODO
static <T> T register(Registry<?super T> registry, String name, T value) @ L108
- 方法名:register
- 源码定位:L108
- 返回类型:
T - 修饰符:static
参数:
- registry: Registry<?super T>
- name: String
- value: T
说明:
TODO
static <V,T extends V> T register(Registry<V> registry, Identifier location, T value) @ L112
- 方法名:register
- 源码定位:L112
- 返回类型:<V,T extends V> T
- 修饰符:static
参数:
- registry: Registry
- location: Identifier
- value: T
说明:
TODO
static <V,T extends V> T register(Registry<V> registry, ResourceKey<V> key, T value) @ L116
- 方法名:register
- 源码定位:L116
- 返回类型:<V,T extends V> T
- 修饰符:static
参数:
- registry: Registry
- key: ResourceKey
- value: T
说明:
TODO
static <R,T extends R> Holder.Reference<T> registerForHolder(Registry<R> registry, ResourceKey<R> key, T value) @ L121
- 方法名:registerForHolder
- 源码定位:L121
- 返回类型:<R,T extends R> Holder.Reference
- 修饰符:static
参数:
- registry: Registry
- key: ResourceKey
- value: T
说明:
TODO
static <R,T extends R> Holder.Reference<T> registerForHolder(Registry<R> registry, Identifier location, T value) @ L125
- 方法名:registerForHolder
- 源码定位:L125
- 返回类型:<R,T extends R> Holder.Reference
- 修饰符:static
参数:
- registry: Registry
- location: Identifier
- value: T
说明:
TODO
Registry<T> freeze() @ L129
- 方法名:freeze
- 源码定位:L129
- 返回类型:Registry
- 修饰符:package-private
参数:
- 无
说明:
TODO
Holder.Reference<T> createIntrusiveHolder(T value) @ L131
- 方法名:createIntrusiveHolder
- 源码定位:L131
- 返回类型:Holder.Reference
- 修饰符:package-private
参数:
- value: T
说明:
TODO
Optional<Holder.Reference<T>> get(int id) @ L133
- 方法名:get
- 源码定位:L133
- 返回类型:Optional<Holder.Reference
> - 修饰符:package-private
参数:
- id: int
说明:
TODO
Optional<Holder.Reference<T>> get(Identifier id) @ L135
- 方法名:get
- 源码定位:L135
- 返回类型:Optional<Holder.Reference
> - 修饰符:package-private
参数:
- id: Identifier
说明:
TODO
Holder<T> wrapAsHolder(T value) @ L137
- 方法名:wrapAsHolder
- 源码定位:L137
- 返回类型:Holder
- 修饰符:package-private
参数:
- value: T
说明:
TODO
default Iterable<Holder<T>> getTagOrEmpty(TagKey<T> id) @ L139
- 方法名:getTagOrEmpty
- 源码定位:L139
- 返回类型:Iterable<Holder
> - 修饰符:default
参数:
- id: TagKey
说明:
TODO
Stream<HolderSet.Named<T>> getTags() @ L143
- 方法名:getTags
- 源码定位:L143
- 返回类型:Stream<HolderSet.Named
> - 修饰符:package-private
参数:
- 无
说明:
TODO
default IdMap<Holder<T>> asHolderIdMap() @ L145
- 方法名:asHolderIdMap
- 源码定位:L145
- 返回类型:IdMap<Holder
> - 修饰符:default
参数:
- 无
说明:
TODO
Registry.PendingTags<T> prepareTagReload(TagLoader.LoadResult<T> tags) @ L171
- 方法名:prepareTagReload
- 源码定位:L171
- 返回类型:Registry.PendingTags
- 修饰符:package-private
参数:
- tags: TagLoader.LoadResult
说明:
TODO
DataComponentLookup<T> componentLookup() @ L173
- 方法名:componentLookup
- 源码定位:L173
- 返回类型:DataComponentLookup
- 修饰符:package-private
参数:
- 无
说明:
TODO
代码
public interface Registry<T> extends IdMap<T>, Keyable, HolderLookup.RegistryLookup<T> {
@Override
ResourceKey<? extends Registry<T>> key();
default Codec<T> byNameCodec() {
return this.referenceHolderWithLifecycle().flatComapMap(Holder.Reference::value, value -> this.safeCastToReference(this.wrapAsHolder((T)value)));
}
default Codec<Holder<T>> holderByNameCodec() {
return this.referenceHolderWithLifecycle().flatComapMap(holder -> (Holder<T>)holder, this::safeCastToReference);
}
private Codec<Holder.Reference<T>> referenceHolderWithLifecycle() {
Codec<Holder.Reference<T>> referenceCodec = Identifier.CODEC
.comapFlatMap(
name -> this.get(name).map(DataResult::success).orElseGet(() -> DataResult.error(() -> "Unknown registry key in " + this.key() + ": " + name)),
holder -> holder.key().identifier()
);
return ExtraCodecs.overrideLifecycle(
referenceCodec, e -> this.registrationInfo(e.key()).map(RegistrationInfo::lifecycle).orElse(Lifecycle.experimental())
);
}
private DataResult<Holder.Reference<T>> safeCastToReference(Holder<T> holder) {
return holder instanceof Holder.Reference<T> reference
? DataResult.success(reference)
: DataResult.error(() -> "Unregistered holder in " + this.key() + ": " + holder);
}
@Override
default <U> Stream<U> keys(DynamicOps<U> ops) {
return this.keySet().stream().map(k -> ops.createString(k.toString()));
}
@Nullable Identifier getKey(T thing);
Optional<ResourceKey<T>> getResourceKey(T thing);
@Override
int getId(@Nullable T thing);
@Nullable T getValue(@Nullable ResourceKey<T> key);
@Nullable T getValue(@Nullable Identifier key);
Optional<RegistrationInfo> registrationInfo(ResourceKey<T> element);
default Optional<T> getOptional(@Nullable Identifier key) {
return Optional.ofNullable(this.getValue(key));
}
default Optional<T> getOptional(@Nullable ResourceKey<T> key) {
return Optional.ofNullable(this.getValue(key));
}
Optional<Holder.Reference<T>> getAny();
default T getValueOrThrow(ResourceKey<T> key) {
T value = this.getValue(key);
if (value == null) {
throw new IllegalStateException("Missing key in " + this.key() + ": " + key);
} else {
return value;
}
}
Set<Identifier> keySet();
Set<Entry<ResourceKey<T>, T>> entrySet();
Set<ResourceKey<T>> registryKeySet();
Optional<Holder.Reference<T>> getRandom(RandomSource random);
default Stream<T> stream() {
return StreamSupport.stream(this.spliterator(), false);
}
boolean containsKey(Identifier key);
boolean containsKey(ResourceKey<T> key);
static <T> T register(Registry<? super T> registry, String name, T value) {
return register(registry, Identifier.parse(name), value);
}
static <V, T extends V> T register(Registry<V> registry, Identifier location, T value) {
return register(registry, ResourceKey.create(registry.key(), location), value);
}
static <V, T extends V> T register(Registry<V> registry, ResourceKey<V> key, T value) {
((WritableRegistry)registry).register(key, (V)value, RegistrationInfo.BUILT_IN);
return value;
}
static <R, T extends R> Holder.Reference<T> registerForHolder(Registry<R> registry, ResourceKey<R> key, T value) {
return ((WritableRegistry)registry).register(key, (R)value, RegistrationInfo.BUILT_IN);
}
static <R, T extends R> Holder.Reference<T> registerForHolder(Registry<R> registry, Identifier location, T value) {
return registerForHolder(registry, ResourceKey.create(registry.key(), location), value);
}
Registry<T> freeze();
Holder.Reference<T> createIntrusiveHolder(T value);
Optional<Holder.Reference<T>> get(int id);
Optional<Holder.Reference<T>> get(Identifier id);
Holder<T> wrapAsHolder(T value);
default Iterable<Holder<T>> getTagOrEmpty(TagKey<T> id) {
return DataFixUtils.orElse(this.get(id), List.of());
}
Stream<HolderSet.Named<T>> getTags();
default IdMap<Holder<T>> asHolderIdMap() {
return new IdMap<Holder<T>>() {
{
Objects.requireNonNull(Registry.this);
}
public int getId(Holder<T> thing) {
return Registry.this.getId(thing.value());
}
public @Nullable Holder<T> byId(int id) {
return (Holder<T>)Registry.this.get(id).orElse(null);
}
@Override
public int size() {
return Registry.this.size();
}
@Override
public Iterator<Holder<T>> iterator() {
return Registry.this.listElements().map(e -> (Holder<T>)e).iterator();
}
};
}
Registry.PendingTags<T> prepareTagReload(TagLoader.LoadResult<T> tags);
DataComponentLookup<T> componentLookup();
public interface PendingTags<T> {
ResourceKey<? extends Registry<? extends T>> key();
HolderLookup.RegistryLookup<T> lookup();
void apply();
int size();
}
}引用的其他类
-
- 引用位置:
参数/返回值
- 引用位置:
-
- 引用位置:
继承
- 引用位置:
-
- 引用位置:
返回值
- 引用位置:
-
- 引用位置:
继承/返回值
- 引用位置:
-
- 引用位置:
返回值
- 引用位置:
-
- 引用位置:
返回值
- 引用位置:
-
- 引用位置:
参数/方法调用/返回值 - 关联成员:
Identifier.parse()
- 引用位置:
-
- 引用位置:
参数/方法调用/返回值 - 关联成员:
ResourceKey.create()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
ExtraCodecs.overrideLifecycle()
- 引用位置:
-
- 引用位置:
参数
- 引用位置: