VanillaTheEndAdvancements.java

net.minecraft.data.advancements.packs.VanillaTheEndAdvancements

信息

  • 全限定名:net.minecraft.data.advancements.packs.VanillaTheEndAdvancements
  • 类型:public class
  • 包:net.minecraft.data.advancements.packs
  • 源码路径:src/main/java/net/minecraft/data/advancements/packs/VanillaTheEndAdvancements.java
  • 起始行号:L31
  • 实现:AdvancementSubProvider
  • 职责:

    TODO

字段/常量

内部类/嵌套类型

构造器

方法

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

public void generate(HolderLookup.Provider registries, Consumer<AdvancementHolder> output) @ L32

  • 方法名:generate
  • 源码定位:L32
  • 返回类型:void
  • 修饰符:public

参数:

  • registries: HolderLookup.Provider
  • output: Consumer

说明:

TODO

代码

public class VanillaTheEndAdvancements implements AdvancementSubProvider {
    @Override
    public void generate(HolderLookup.Provider registries, Consumer<AdvancementHolder> output) {
        HolderGetter<EntityType<?>> entityTypes = registries.lookupOrThrow(Registries.ENTITY_TYPE);
        AdvancementHolder root = Advancement.Builder.advancement()
            .display(
                Blocks.END_STONE,
                Component.translatable("advancements.end.root.title"),
                Component.translatable("advancements.end.root.description"),
                Identifier.withDefaultNamespace("gui/advancements/backgrounds/end"),
                AdvancementType.TASK,
                false,
                false,
                false
            )
            .addCriterion("entered_end", ChangeDimensionTrigger.TriggerInstance.changedDimensionTo(Level.END))
            .save(output, "end/root");
        AdvancementHolder killDragon = Advancement.Builder.advancement()
            .parent(root)
            .display(
                Blocks.DRAGON_HEAD,
                Component.translatable("advancements.end.kill_dragon.title"),
                Component.translatable("advancements.end.kill_dragon.description"),
                null,
                AdvancementType.TASK,
                true,
                true,
                false
            )
            .addCriterion(
                "killed_dragon", KilledTrigger.TriggerInstance.playerKilledEntity(EntityPredicate.Builder.entity().of(entityTypes, EntityType.ENDER_DRAGON))
            )
            .save(output, "end/kill_dragon");
        AdvancementHolder enterEndGateway = Advancement.Builder.advancement()
            .parent(killDragon)
            .display(
                Items.ENDER_PEARL,
                Component.translatable("advancements.end.enter_end_gateway.title"),
                Component.translatable("advancements.end.enter_end_gateway.description"),
                null,
                AdvancementType.TASK,
                true,
                true,
                false
            )
            .addCriterion("entered_end_gateway", EnterBlockTrigger.TriggerInstance.entersBlock(Blocks.END_GATEWAY))
            .save(output, "end/enter_end_gateway");
        Advancement.Builder.advancement()
            .parent(killDragon)
            .display(
                Items.END_CRYSTAL,
                Component.translatable("advancements.end.respawn_dragon.title"),
                Component.translatable("advancements.end.respawn_dragon.description"),
                null,
                AdvancementType.GOAL,
                true,
                true,
                false
            )
            .addCriterion(
                "summoned_dragon",
                SummonedEntityTrigger.TriggerInstance.summonedEntity(EntityPredicate.Builder.entity().of(entityTypes, EntityType.ENDER_DRAGON))
            )
            .save(output, "end/respawn_dragon");
        AdvancementHolder findEndCity = Advancement.Builder.advancement()
            .parent(enterEndGateway)
            .display(
                Blocks.PURPUR_BLOCK,
                Component.translatable("advancements.end.find_end_city.title"),
                Component.translatable("advancements.end.find_end_city.description"),
                null,
                AdvancementType.TASK,
                true,
                true,
                false
            )
            .addCriterion(
                "in_city",
                PlayerTrigger.TriggerInstance.located(
                    LocationPredicate.Builder.inStructure(registries.lookupOrThrow(Registries.STRUCTURE).getOrThrow(BuiltinStructures.END_CITY))
                )
            )
            .save(output, "end/find_end_city");
        Advancement.Builder.advancement()
            .parent(killDragon)
            .display(
                Items.DRAGON_BREATH,
                Component.translatable("advancements.end.dragon_breath.title"),
                Component.translatable("advancements.end.dragon_breath.description"),
                null,
                AdvancementType.GOAL,
                true,
                true,
                false
            )
            .addCriterion("dragon_breath", InventoryChangeTrigger.TriggerInstance.hasItems(Items.DRAGON_BREATH))
            .save(output, "end/dragon_breath");
        Advancement.Builder.advancement()
            .parent(findEndCity)
            .display(
                Items.SHULKER_SHELL,
                Component.translatable("advancements.end.levitate.title"),
                Component.translatable("advancements.end.levitate.description"),
                null,
                AdvancementType.CHALLENGE,
                true,
                true,
                false
            )
            .rewards(AdvancementRewards.Builder.experience(50))
            .addCriterion("levitated", LevitationTrigger.TriggerInstance.levitated(DistancePredicate.vertical(MinMaxBounds.Doubles.atLeast(50.0))))
            .save(output, "end/levitate");
        Advancement.Builder.advancement()
            .parent(findEndCity)
            .display(
                Items.ELYTRA,
                Component.translatable("advancements.end.elytra.title"),
                Component.translatable("advancements.end.elytra.description"),
                null,
                AdvancementType.GOAL,
                true,
                true,
                false
            )
            .addCriterion("elytra", InventoryChangeTrigger.TriggerInstance.hasItems(Items.ELYTRA))
            .save(output, "end/elytra");
        Advancement.Builder.advancement()
            .parent(killDragon)
            .display(
                Blocks.DRAGON_EGG,
                Component.translatable("advancements.end.dragon_egg.title"),
                Component.translatable("advancements.end.dragon_egg.description"),
                null,
                AdvancementType.GOAL,
                true,
                true,
                false
            )
            .addCriterion("dragon_egg", InventoryChangeTrigger.TriggerInstance.hasItems(Blocks.DRAGON_EGG))
            .save(output, "end/dragon_egg");
    }
}

引用的其他类

  • Advancement

    • 引用位置: 方法调用
    • 关联成员: Advancement.Builder.advancement()
  • AdvancementHolder

    • 引用位置: 参数
  • AdvancementRewards

    • 引用位置: 方法调用
    • 关联成员: AdvancementRewards.Builder.experience()
  • ChangeDimensionTrigger

    • 引用位置: 方法调用
    • 关联成员: ChangeDimensionTrigger.TriggerInstance.changedDimensionTo()
  • DistancePredicate

    • 引用位置: 方法调用
    • 关联成员: DistancePredicate.vertical()
  • EnterBlockTrigger

    • 引用位置: 方法调用
    • 关联成员: EnterBlockTrigger.TriggerInstance.entersBlock()
  • EntityPredicate

    • 引用位置: 方法调用
    • 关联成员: EntityPredicate.Builder.entity()
  • InventoryChangeTrigger

    • 引用位置: 方法调用
    • 关联成员: InventoryChangeTrigger.TriggerInstance.hasItems()
  • KilledTrigger

    • 引用位置: 方法调用
    • 关联成员: KilledTrigger.TriggerInstance.playerKilledEntity()
  • LevitationTrigger

    • 引用位置: 方法调用
    • 关联成员: LevitationTrigger.TriggerInstance.levitated()
  • LocationPredicate

    • 引用位置: 方法调用
    • 关联成员: LocationPredicate.Builder.inStructure()
  • MinMaxBounds

    • 引用位置: 方法调用
    • 关联成员: MinMaxBounds.Doubles.atLeast()
  • PlayerTrigger

    • 引用位置: 方法调用
    • 关联成员: PlayerTrigger.TriggerInstance.located()
  • SummonedEntityTrigger

    • 引用位置: 方法调用
    • 关联成员: SummonedEntityTrigger.TriggerInstance.summonedEntity()
  • HolderLookup

    • 引用位置: 参数
  • AdvancementSubProvider

    • 引用位置: 实现
  • Component

    • 引用位置: 方法调用
    • 关联成员: Component.translatable()
  • Identifier

    • 引用位置: 方法调用
    • 关联成员: Identifier.withDefaultNamespace()