ServerAdvancementManager.java

net.minecraft.server.ServerAdvancementManager

信息

  • 全限定名:net.minecraft.server.ServerAdvancementManager
  • 类型:public class
  • 包:net.minecraft.server
  • 源码路径:src/main/java/net/minecraft/server/ServerAdvancementManager.java
  • 起始行号:L23
  • 继承:SimpleJsonResourceReloadListener
  • 职责:

    TODO

字段/常量

  • LOGGER

    • 类型: Logger
    • 修饰符: private static final
    • 源码定位: L24
    • 说明:

      TODO

  • advancements

    • 类型: Map<Identifier,AdvancementHolder>
    • 修饰符: private
    • 源码定位: L25
    • 说明:

      TODO

  • tree

    • 类型: AdvancementTree
    • 修饰符: private
    • 源码定位: L26
    • 说明:

      TODO

  • registries

    • 类型: HolderLookup.Provider
    • 修饰符: private final
    • 源码定位: L27
    • 说明:

      TODO

内部类/嵌套类型

构造器

public ServerAdvancementManager(HolderLookup.Provider registries) @ L29

  • 构造器名:ServerAdvancementManager
  • 源码定位:L29
  • 修饰符:public

参数:

  • registries: HolderLookup.Provider

说明:

TODO

方法

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

protected void apply(Map<Identifier,Advancement> preparations, ResourceManager manager, ProfilerFiller profiler) @ L34

  • 方法名:apply
  • 源码定位:L34
  • 返回类型:void
  • 修饰符:protected

参数:

  • preparations: Map<Identifier,Advancement>
  • manager: ResourceManager
  • profiler: ProfilerFiller

说明:

TODO

private void validate(Identifier id, Advancement advancement) @ L53

  • 方法名:validate
  • 源码定位:L53
  • 返回类型:void
  • 修饰符:private

参数:

  • id: Identifier
  • advancement: Advancement

说明:

TODO

public AdvancementHolder get(Identifier id) @ L61

  • 方法名:get
  • 源码定位:L61
  • 返回类型:AdvancementHolder
  • 修饰符:public

参数:

  • id: Identifier

说明:

TODO

public AdvancementTree tree() @ L65

  • 方法名:tree
  • 源码定位:L65
  • 返回类型:AdvancementTree
  • 修饰符:public

参数:

说明:

TODO

public Collection<AdvancementHolder> getAllAdvancements() @ L69

  • 方法名:getAllAdvancements
  • 源码定位:L69
  • 返回类型:Collection
  • 修饰符:public

参数:

说明:

TODO

代码

public class ServerAdvancementManager extends SimpleJsonResourceReloadListener<Advancement> {
    private static final Logger LOGGER = LogUtils.getLogger();
    private Map<Identifier, AdvancementHolder> advancements = Map.of();
    private AdvancementTree tree = new AdvancementTree();
    private final HolderLookup.Provider registries;
 
    public ServerAdvancementManager(HolderLookup.Provider registries) {
        super(registries, Advancement.CODEC, Registries.ADVANCEMENT);
        this.registries = registries;
    }
 
    protected void apply(Map<Identifier, Advancement> preparations, ResourceManager manager, ProfilerFiller profiler) {
        Builder<Identifier, AdvancementHolder> builder = ImmutableMap.builder();
        preparations.forEach((id, advancement) -> {
            this.validate(id, advancement);
            builder.put(id, new AdvancementHolder(id, advancement));
        });
        this.advancements = builder.buildOrThrow();
        AdvancementTree tree = new AdvancementTree();
        tree.addAll(this.advancements.values());
 
        for (AdvancementNode root : tree.roots()) {
            if (root.holder().value().display().isPresent()) {
                TreeNodePosition.run(root);
            }
        }
 
        this.tree = tree;
    }
 
    private void validate(Identifier id, Advancement advancement) {
        ProblemReporter.Collector problemCollector = new ProblemReporter.Collector();
        advancement.validate(problemCollector, this.registries);
        if (!problemCollector.isEmpty()) {
            LOGGER.warn("Found validation problems in advancement {}: \n{}", id, problemCollector.getReport());
        }
    }
 
    public @Nullable AdvancementHolder get(Identifier id) {
        return this.advancements.get(id);
    }
 
    public AdvancementTree tree() {
        return this.tree;
    }
 
    public Collection<AdvancementHolder> getAllAdvancements() {
        return this.advancements.values();
    }
}

引用的其他类