RegistryAccess.java
net.minecraft.core.RegistryAccess
信息
- 全限定名:net.minecraft.core.RegistryAccess
- 类型:public interface
- 包:net.minecraft.core
- 源码路径:src/main/java/net/minecraft/core/RegistryAccess.java
- 起始行号:L15
- 继承:HolderLookup.Provider
- 职责:
TODO
字段/常量
-
LOGGER- 类型:
Logger - 修饰符:
package-private - 源码定位:
L16 - 说明:
TODO
- 类型:
-
EMPTY- 类型:
RegistryAccess.Frozen - 修饰符:
package-private - 源码定位:
L17 - 说明:
TODO
- 类型:
内部类/嵌套类型
-
net.minecraft.core.RegistryAccess.FrozenAccess- 类型:
class - 修饰符:
package-private - 源码定位:
L54 - 说明:
TODO
- 类型:
-
net.minecraft.core.RegistryAccess.Frozen- 类型:
interface - 修饰符:
public - 源码定位:
L64 - 说明:
TODO
- 类型:
-
net.minecraft.core.RegistryAccess.ImmutableRegistryAccess- 类型:
class - 修饰符:
public static - 源码定位:
L67 - 说明:
TODO
- 类型:
-
net.minecraft.core.RegistryAccess.RegistryEntry- 类型:
record - 修饰符:
public - 源码定位:
L93 - 说明:
TODO
- 类型:
构造器
- 无
方法
下面的方法块按源码顺序生成。
<E> Optional<Registry<E>> lookup(ResourceKey<?extends Registry<?extends E>> registryKey) @ L19
- 方法名:lookup
- 源码定位:L19
- 返回类型:
Optional<Registry > - 修饰符:package-private
参数:
- registryKey: ResourceKey<?extends Registry<?extends E>>
说明:
TODO
default <E> Registry<E> lookupOrThrow(ResourceKey<?extends Registry<?extends E>> name) @ L22
- 方法名:lookupOrThrow
- 源码定位:L22
- 返回类型:
Registry - 修饰符:default
参数:
- name: ResourceKey<?extends Registry<?extends E>>
说明:
TODO
Stream<RegistryAccess.RegistryEntry<?>> registries() @ L26
- 方法名:registries
- 源码定位:L26
- 返回类型:Stream<RegistryAccess.RegistryEntry<?>>
- 修饰符:package-private
参数:
- 无
说明:
TODO
default Stream<ResourceKey<?extends Registry<?>>> listRegistryKeys() @ L28
- 方法名:listRegistryKeys
- 源码定位:L28
- 返回类型:Stream<ResourceKey>>
- 修饰符:default
参数:
- 无
说明:
TODO
static RegistryAccess.Frozen fromRegistryOfRegistries(Registry<?extends Registry<?>> registries) @ L33
- 方法名:fromRegistryOfRegistries
- 源码定位:L33
- 返回类型:RegistryAccess.Frozen
- 修饰符:static
参数:
- registries: Registry>
说明:
TODO
default RegistryAccess.Frozen freeze() @ L53
- 方法名:freeze
- 源码定位:L53
- 返回类型:RegistryAccess.Frozen
- 修饰符:default
参数:
- 无
说明:
TODO
代码
public interface RegistryAccess extends HolderLookup.Provider {
Logger LOGGER = LogUtils.getLogger();
RegistryAccess.Frozen EMPTY = new RegistryAccess.ImmutableRegistryAccess(Map.of()).freeze();
@Override
<E> Optional<Registry<E>> lookup(final ResourceKey<? extends Registry<? extends E>> registryKey);
default <E> Registry<E> lookupOrThrow(ResourceKey<? extends Registry<? extends E>> name) {
return this.lookup(name).orElseThrow(() -> new IllegalStateException("Missing registry: " + name));
}
Stream<RegistryAccess.RegistryEntry<?>> registries();
@Override
default Stream<ResourceKey<? extends Registry<?>>> listRegistryKeys() {
return this.registries().map(e -> e.key);
}
static RegistryAccess.Frozen fromRegistryOfRegistries(Registry<? extends Registry<?>> registries) {
return new RegistryAccess.Frozen() {
@Override
public <T> Optional<Registry<T>> lookup(ResourceKey<? extends Registry<? extends T>> registryKey) {
Registry<Registry<T>> registry = (Registry<Registry<T>>)registries;
return registry.getOptional((ResourceKey<Registry<T>>)registryKey);
}
@Override
public Stream<RegistryAccess.RegistryEntry<?>> registries() {
return registries.entrySet().stream().map(RegistryAccess.RegistryEntry::fromMapEntry);
}
@Override
public RegistryAccess.Frozen freeze() {
return this;
}
};
}
default RegistryAccess.Frozen freeze() {
class FrozenAccess extends RegistryAccess.ImmutableRegistryAccess implements RegistryAccess.Frozen {
protected FrozenAccess(Stream<RegistryAccess.RegistryEntry<?>> entries) {
Objects.requireNonNull(RegistryAccess.this);
super(entries);
}
}
return new FrozenAccess(this.registries().map(RegistryAccess.RegistryEntry::freeze));
}
public interface Frozen extends RegistryAccess {
}
public static class ImmutableRegistryAccess implements RegistryAccess {
private final Map<? extends ResourceKey<? extends Registry<?>>, ? extends Registry<?>> registries;
public ImmutableRegistryAccess(List<? extends Registry<?>> registries) {
this.registries = registries.stream().collect(Collectors.toUnmodifiableMap(Registry::key, v -> v));
}
public ImmutableRegistryAccess(Map<? extends ResourceKey<? extends Registry<?>>, ? extends Registry<?>> registries) {
this.registries = Map.copyOf(registries);
}
public ImmutableRegistryAccess(Stream<RegistryAccess.RegistryEntry<?>> entries) {
this.registries = entries.collect(ImmutableMap.toImmutableMap(RegistryAccess.RegistryEntry::key, RegistryAccess.RegistryEntry::value));
}
@Override
public <E> Optional<Registry<E>> lookup(ResourceKey<? extends Registry<? extends E>> registryKey) {
return Optional.ofNullable(this.registries.get(registryKey)).map(r -> (Registry<E>)r);
}
@Override
public Stream<RegistryAccess.RegistryEntry<?>> registries() {
return this.registries.entrySet().stream().map(RegistryAccess.RegistryEntry::fromMapEntry);
}
}
public record RegistryEntry<T>(ResourceKey<? extends Registry<T>> key, Registry<T> value) {
private static <T, R extends Registry<? extends T>> RegistryAccess.RegistryEntry<T> fromMapEntry(
Entry<? extends ResourceKey<? extends Registry<?>>, R> e
) {
return fromUntyped((ResourceKey<? extends Registry<?>>)e.getKey(), e.getValue());
}
private static <T> RegistryAccess.RegistryEntry<T> fromUntyped(ResourceKey<? extends Registry<?>> key, Registry<?> value) {
return new RegistryAccess.RegistryEntry<>((ResourceKey<? extends Registry<T>>)key, (Registry<T>)value);
}
private RegistryAccess.RegistryEntry<T> freeze() {
return new RegistryAccess.RegistryEntry<>(this.key, this.value.freeze());
}
}
}引用的其他类
-
- 引用位置:
继承
- 引用位置:
-
- 引用位置:
参数/返回值
- 引用位置:
-
- 引用位置:
参数/返回值
- 引用位置: