175 lines
6.1 KiB
Java
175 lines
6.1 KiB
Java
package net.minecraft.data.advancements.packs;
|
|
|
|
import java.util.function.Consumer;
|
|
import net.minecraft.advancements.AdvancementHolder;
|
|
import net.minecraft.advancements.AdvancementRewards;
|
|
import net.minecraft.advancements.AdvancementType;
|
|
import net.minecraft.advancements.Advancement.Builder;
|
|
import net.minecraft.advancements.critereon.DistancePredicate;
|
|
import net.minecraft.advancements.critereon.EntityPredicate;
|
|
import net.minecraft.advancements.critereon.PlayerTrigger;
|
|
import net.minecraft.advancements.critereon.ChangeDimensionTrigger.TriggerInstance;
|
|
import net.minecraft.advancements.critereon.MinMaxBounds.Doubles;
|
|
import net.minecraft.core.HolderGetter;
|
|
import net.minecraft.core.HolderLookup;
|
|
import net.minecraft.core.registries.Registries;
|
|
import net.minecraft.data.advancements.AdvancementSubProvider;
|
|
import net.minecraft.network.chat.Component;
|
|
import net.minecraft.resources.ResourceLocation;
|
|
import net.minecraft.world.entity.EntityType;
|
|
import net.minecraft.world.item.Items;
|
|
import net.minecraft.world.level.Level;
|
|
import net.minecraft.world.level.block.Blocks;
|
|
import net.minecraft.world.level.levelgen.structure.BuiltinStructures;
|
|
|
|
public class VanillaTheEndAdvancements implements AdvancementSubProvider {
|
|
@Override
|
|
public void generate(HolderLookup.Provider registries, Consumer<AdvancementHolder> writer) {
|
|
HolderGetter<EntityType<?>> holderGetter = registries.lookupOrThrow(Registries.ENTITY_TYPE);
|
|
AdvancementHolder advancementHolder = Builder.advancement()
|
|
.display(
|
|
Blocks.END_STONE,
|
|
Component.translatable("advancements.end.root.title"),
|
|
Component.translatable("advancements.end.root.description"),
|
|
ResourceLocation.withDefaultNamespace("textures/gui/advancements/backgrounds/end.png"),
|
|
AdvancementType.TASK,
|
|
false,
|
|
false,
|
|
false
|
|
)
|
|
.addCriterion("entered_end", TriggerInstance.changedDimensionTo(Level.END))
|
|
.save(writer, "end/root");
|
|
AdvancementHolder advancementHolder2 = Builder.advancement()
|
|
.parent(advancementHolder)
|
|
.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",
|
|
net.minecraft.advancements.critereon.KilledTrigger.TriggerInstance.playerKilledEntity(
|
|
EntityPredicate.Builder.entity().of(holderGetter, EntityType.ENDER_DRAGON)
|
|
)
|
|
)
|
|
.save(writer, "end/kill_dragon");
|
|
AdvancementHolder advancementHolder3 = Builder.advancement()
|
|
.parent(advancementHolder2)
|
|
.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", net.minecraft.advancements.critereon.EnterBlockTrigger.TriggerInstance.entersBlock(Blocks.END_GATEWAY))
|
|
.save(writer, "end/enter_end_gateway");
|
|
Builder.advancement()
|
|
.parent(advancementHolder2)
|
|
.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",
|
|
net.minecraft.advancements.critereon.SummonedEntityTrigger.TriggerInstance.summonedEntity(
|
|
EntityPredicate.Builder.entity().of(holderGetter, EntityType.ENDER_DRAGON)
|
|
)
|
|
)
|
|
.save(writer, "end/respawn_dragon");
|
|
AdvancementHolder advancementHolder4 = Builder.advancement()
|
|
.parent(advancementHolder3)
|
|
.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(
|
|
net.minecraft.advancements.critereon.LocationPredicate.Builder.inStructure(
|
|
registries.lookupOrThrow(Registries.STRUCTURE).getOrThrow(BuiltinStructures.END_CITY)
|
|
)
|
|
)
|
|
)
|
|
.save(writer, "end/find_end_city");
|
|
Builder.advancement()
|
|
.parent(advancementHolder2)
|
|
.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", net.minecraft.advancements.critereon.InventoryChangeTrigger.TriggerInstance.hasItems(Items.DRAGON_BREATH))
|
|
.save(writer, "end/dragon_breath");
|
|
Builder.advancement()
|
|
.parent(advancementHolder4)
|
|
.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", net.minecraft.advancements.critereon.LevitationTrigger.TriggerInstance.levitated(DistancePredicate.vertical(Doubles.atLeast(50.0)))
|
|
)
|
|
.save(writer, "end/levitate");
|
|
Builder.advancement()
|
|
.parent(advancementHolder4)
|
|
.display(
|
|
Items.ELYTRA,
|
|
Component.translatable("advancements.end.elytra.title"),
|
|
Component.translatable("advancements.end.elytra.description"),
|
|
null,
|
|
AdvancementType.GOAL,
|
|
true,
|
|
true,
|
|
false
|
|
)
|
|
.addCriterion("elytra", net.minecraft.advancements.critereon.InventoryChangeTrigger.TriggerInstance.hasItems(Items.ELYTRA))
|
|
.save(writer, "end/elytra");
|
|
Builder.advancement()
|
|
.parent(advancementHolder2)
|
|
.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", net.minecraft.advancements.critereon.InventoryChangeTrigger.TriggerInstance.hasItems(Blocks.DRAGON_EGG))
|
|
.save(writer, "end/dragon_egg");
|
|
}
|
|
}
|