AdvancementProvider.java
net.minecraft.data.advancements.AdvancementProvider
信息
- 全限定名:net.minecraft.data.advancements.AdvancementProvider
- 类型:public class
- 包:net.minecraft.data.advancements
- 源码路径:src/main/java/net/minecraft/data/advancements/AdvancementProvider.java
- 起始行号:L19
- 实现:DataProvider
- 职责:
TODO
字段/常量
-
pathProvider- 类型:
PackOutput.PathProvider - 修饰符:
private final - 源码定位:
L20 - 说明:
TODO
- 类型:
-
subProviders- 类型:
List<AdvancementSubProvider> - 修饰符:
private final - 源码定位:
L21 - 说明:
TODO
- 类型:
-
registries- 类型:
CompletableFuture<HolderLookup.Provider> - 修饰符:
private final - 源码定位:
L22 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
public AdvancementProvider(PackOutput output, CompletableFuture<HolderLookup.Provider> registries, List<AdvancementSubProvider> subProviders) @ L24
- 构造器名:AdvancementProvider
- 源码定位:L24
- 修饰符:public
参数:
- output: PackOutput
- registries: CompletableFuture<HolderLookup.Provider>
- subProviders: List
说明:
TODO
方法
下面的方法块按源码顺序生成。
public CompletableFuture<?> run(CachedOutput cache) @ L30
- 方法名:run
- 源码定位:L30
- 返回类型:CompletableFuture<?>
- 修饰符:public
参数:
- cache: CachedOutput
说明:
TODO
public final String getName() @ L52
- 方法名:getName
- 源码定位:L52
- 返回类型:String
- 修饰符:public final
参数:
- 无
说明:
TODO
代码
public class AdvancementProvider implements DataProvider {
private final PackOutput.PathProvider pathProvider;
private final List<AdvancementSubProvider> subProviders;
private final CompletableFuture<HolderLookup.Provider> registries;
public AdvancementProvider(PackOutput output, CompletableFuture<HolderLookup.Provider> registries, List<AdvancementSubProvider> subProviders) {
this.pathProvider = output.createRegistryElementsPathProvider(Registries.ADVANCEMENT);
this.subProviders = subProviders;
this.registries = registries;
}
@Override
public CompletableFuture<?> run(CachedOutput cache) {
return this.registries.thenCompose(lookup -> {
Set<Identifier> allAdvancements = new HashSet<>();
List<CompletableFuture<?>> tasks = new ArrayList<>();
Consumer<AdvancementHolder> consumer = holder -> {
if (!allAdvancements.add(holder.id())) {
throw new IllegalStateException("Duplicate advancement " + holder.id());
} else {
Path path = this.pathProvider.json(holder.id());
tasks.add(DataProvider.saveStable(cache, lookup, Advancement.CODEC, holder.value(), path));
}
};
for (AdvancementSubProvider subProvider : this.subProviders) {
subProvider.generate(lookup, consumer);
}
return CompletableFuture.allOf(tasks.toArray(CompletableFuture[]::new));
});
}
@Override
public final String getName() {
return "Advancements";
}
}引用的其他类
-
- 引用位置:
参数/字段
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
实现/方法调用 - 关联成员:
DataProvider.saveStable()
- 引用位置:
-
- 引用位置:
参数/字段
- 引用位置:
-
- 引用位置:
参数/字段
- 引用位置: