ResourceManagerRegistryLoadTask.java
net.minecraft.resources.ResourceManagerRegistryLoadTask
信息
- 全限定名:net.minecraft.resources.ResourceManagerRegistryLoadTask
- 类型:public class
- 包:net.minecraft.resources
- 源码路径:src/main/java/net/minecraft/resources/ResourceManagerRegistryLoadTask.java
- 起始行号:L23
- 继承:RegistryLoadTask
- 职责:
TODO
字段/常量
-
REGISTRATION_INFO_CACHE- 类型:
Function<Optional<KnownPack>,RegistrationInfo> - 修饰符:
private static final - 源码定位:
L24 - 说明:
TODO
- 类型:
-
resourceManager- 类型:
ResourceManager - 修饰符:
private final - 源码定位:
L28 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
public ResourceManagerRegistryLoadTask(RegistryDataLoader.RegistryData<T> data, Lifecycle lifecycle, Map<ResourceKey<?>,Exception> loadingErrors, ResourceManager resourceManager) @ L30
- 构造器名:ResourceManagerRegistryLoadTask
- 源码定位:L30
- 修饰符:public
参数:
- data: RegistryDataLoader.RegistryData
- lifecycle: Lifecycle
- loadingErrors: Map<ResourceKey<?>,Exception>
- resourceManager: ResourceManager
说明:
TODO
方法
下面的方法块按源码顺序生成。
public CompletableFuture<?> load(RegistryOps.RegistryInfoLookup context, Executor executor) @ L37
- 方法名:load
- 源码定位:L37
- 返回类型:CompletableFuture<?>
- 修饰符:public
参数:
- context: RegistryOps.RegistryInfoLookup
- executor: Executor
说明:
TODO
代码
public class ResourceManagerRegistryLoadTask<T> extends RegistryLoadTask<T> {
private static final Function<Optional<KnownPack>, RegistrationInfo> REGISTRATION_INFO_CACHE = Util.memoize(knownPack -> {
Lifecycle lifecycle = knownPack.map(KnownPack::isVanilla).map(info -> Lifecycle.stable()).orElse(Lifecycle.experimental());
return new RegistrationInfo(knownPack, lifecycle);
});
private final ResourceManager resourceManager;
public ResourceManagerRegistryLoadTask(
RegistryDataLoader.RegistryData<T> data, Lifecycle lifecycle, Map<ResourceKey<?>, Exception> loadingErrors, ResourceManager resourceManager
) {
super(data, lifecycle, loadingErrors);
this.resourceManager = resourceManager;
}
@Override
public CompletableFuture<?> load(RegistryOps.RegistryInfoLookup context, Executor executor) {
FileToIdConverter lister = FileToIdConverter.registry(this.registryKey());
return CompletableFuture.<Map<Identifier, Resource>>supplyAsync(() -> lister.listMatchingResources(this.resourceManager), executor)
.thenCompose(
registryResources -> {
RegistryOps<JsonElement> ops = RegistryOps.create(JsonOps.INSTANCE, context);
return ParallelMapTransform.schedule(
(Map<Identifier, Resource>)registryResources,
(resourceId, thunk) -> {
ResourceKey<T> elementKey = ResourceKey.create(this.registryKey(), lister.fileToId(resourceId));
RegistrationInfo registrationInfo = REGISTRATION_INFO_CACHE.apply(thunk.knownPackInfo());
return new RegistryLoadTask.PendingRegistration<>(
elementKey,
RegistryLoadTask.PendingRegistration.loadFromResource(this.data.elementCodec(), ops, elementKey, thunk),
registrationInfo
);
},
executor
);
}
)
.thenAcceptAsync(
loadedEntries -> {
this.registerElements(loadedEntries.entrySet().stream().sorted(Entry.comparingByKey()).map(Entry::getValue));
TagLoader.ElementLookup<Holder<T>> tagElementLookup = TagLoader.ElementLookup.fromGetters(
this.registryKey(), this.concurrentRegistrationGetter, this.readOnlyRegistry()
);
Map<TagKey<T>, List<Holder<T>>> pendingTags = TagLoader.loadTagsForRegistry(this.resourceManager, this.registryKey(), tagElementLookup);
this.registerTags(pendingTags);
},
executor
);
}
}引用的其他类
-
- 引用位置:
字段/构造调用 - 关联成员:
RegistrationInfo()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
FileToIdConverter.registry()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用/继承 - 关联成员:
RegistryLoadTask.PendingRegistration.loadFromResource()
- 引用位置:
-
- 引用位置:
参数/方法调用 - 关联成员:
RegistryOps.create()
- 引用位置:
-
- 引用位置:
参数/方法调用 - 关联成员:
ResourceKey.create()
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
参数/字段
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
TagLoader.ElementLookup.fromGetters(), TagLoader.loadTagsForRegistry()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Util.memoize()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
ParallelMapTransform.schedule()
- 引用位置: