minecraft-src/net/minecraft/data/advancements/packs/VanillaStoryAdvancements.java
2025-07-04 02:00:41 +03:00

276 lines
9.9 KiB
Java

package net.minecraft.data.advancements.packs;
import java.util.function.Consumer;
import net.minecraft.advancements.AdvancementHolder;
import net.minecraft.advancements.AdvancementType;
import net.minecraft.advancements.Advancement.Builder;
import net.minecraft.advancements.AdvancementRequirements.Strategy;
import net.minecraft.advancements.critereon.ItemPredicate;
import net.minecraft.advancements.critereon.PlayerTrigger;
import net.minecraft.advancements.critereon.TagPredicate;
import net.minecraft.advancements.critereon.InventoryChangeTrigger.TriggerInstance;
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.tags.DamageTypeTags;
import net.minecraft.tags.ItemTags;
import net.minecraft.world.item.Item;
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 VanillaStoryAdvancements implements AdvancementSubProvider {
@Override
public void generate(HolderLookup.Provider registries, Consumer<AdvancementHolder> writer) {
HolderGetter<Item> holderGetter = registries.lookupOrThrow(Registries.ITEM);
AdvancementHolder advancementHolder = Builder.advancement()
.display(
Blocks.GRASS_BLOCK,
Component.translatable("advancements.story.root.title"),
Component.translatable("advancements.story.root.description"),
ResourceLocation.withDefaultNamespace("textures/gui/advancements/backgrounds/stone.png"),
AdvancementType.TASK,
false,
false,
false
)
.addCriterion("crafting_table", TriggerInstance.hasItems(Blocks.CRAFTING_TABLE))
.save(writer, "story/root");
AdvancementHolder advancementHolder2 = Builder.advancement()
.parent(advancementHolder)
.display(
Items.WOODEN_PICKAXE,
Component.translatable("advancements.story.mine_stone.title"),
Component.translatable("advancements.story.mine_stone.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion("get_stone", TriggerInstance.hasItems(ItemPredicate.Builder.item().of(holderGetter, ItemTags.STONE_TOOL_MATERIALS)))
.save(writer, "story/mine_stone");
AdvancementHolder advancementHolder3 = Builder.advancement()
.parent(advancementHolder2)
.display(
Items.STONE_PICKAXE,
Component.translatable("advancements.story.upgrade_tools.title"),
Component.translatable("advancements.story.upgrade_tools.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion("stone_pickaxe", TriggerInstance.hasItems(Items.STONE_PICKAXE))
.save(writer, "story/upgrade_tools");
AdvancementHolder advancementHolder4 = Builder.advancement()
.parent(advancementHolder3)
.display(
Items.IRON_INGOT,
Component.translatable("advancements.story.smelt_iron.title"),
Component.translatable("advancements.story.smelt_iron.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion("iron", TriggerInstance.hasItems(Items.IRON_INGOT))
.save(writer, "story/smelt_iron");
AdvancementHolder advancementHolder5 = Builder.advancement()
.parent(advancementHolder4)
.display(
Items.IRON_PICKAXE,
Component.translatable("advancements.story.iron_tools.title"),
Component.translatable("advancements.story.iron_tools.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion("iron_pickaxe", TriggerInstance.hasItems(Items.IRON_PICKAXE))
.save(writer, "story/iron_tools");
AdvancementHolder advancementHolder6 = Builder.advancement()
.parent(advancementHolder5)
.display(
Items.DIAMOND,
Component.translatable("advancements.story.mine_diamond.title"),
Component.translatable("advancements.story.mine_diamond.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion("diamond", TriggerInstance.hasItems(Items.DIAMOND))
.save(writer, "story/mine_diamond");
AdvancementHolder advancementHolder7 = Builder.advancement()
.parent(advancementHolder4)
.display(
Items.LAVA_BUCKET,
Component.translatable("advancements.story.lava_bucket.title"),
Component.translatable("advancements.story.lava_bucket.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion("lava_bucket", TriggerInstance.hasItems(Items.LAVA_BUCKET))
.save(writer, "story/lava_bucket");
AdvancementHolder advancementHolder8 = Builder.advancement()
.parent(advancementHolder4)
.display(
Items.IRON_CHESTPLATE,
Component.translatable("advancements.story.obtain_armor.title"),
Component.translatable("advancements.story.obtain_armor.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.requirements(Strategy.OR)
.addCriterion("iron_helmet", TriggerInstance.hasItems(Items.IRON_HELMET))
.addCriterion("iron_chestplate", TriggerInstance.hasItems(Items.IRON_CHESTPLATE))
.addCriterion("iron_leggings", TriggerInstance.hasItems(Items.IRON_LEGGINGS))
.addCriterion("iron_boots", TriggerInstance.hasItems(Items.IRON_BOOTS))
.save(writer, "story/obtain_armor");
Builder.advancement()
.parent(advancementHolder6)
.display(
Items.ENCHANTED_BOOK,
Component.translatable("advancements.story.enchant_item.title"),
Component.translatable("advancements.story.enchant_item.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion("enchanted_item", net.minecraft.advancements.critereon.EnchantedItemTrigger.TriggerInstance.enchantedItem())
.save(writer, "story/enchant_item");
AdvancementHolder advancementHolder9 = Builder.advancement()
.parent(advancementHolder7)
.display(
Blocks.OBSIDIAN,
Component.translatable("advancements.story.form_obsidian.title"),
Component.translatable("advancements.story.form_obsidian.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion("obsidian", TriggerInstance.hasItems(Blocks.OBSIDIAN))
.save(writer, "story/form_obsidian");
Builder.advancement()
.parent(advancementHolder8)
.display(
Items.SHIELD,
Component.translatable("advancements.story.deflect_arrow.title"),
Component.translatable("advancements.story.deflect_arrow.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion(
"deflected_projectile",
net.minecraft.advancements.critereon.EntityHurtPlayerTrigger.TriggerInstance.entityHurtPlayer(
net.minecraft.advancements.critereon.DamagePredicate.Builder.damageInstance()
.type(net.minecraft.advancements.critereon.DamageSourcePredicate.Builder.damageType().tag(TagPredicate.is(DamageTypeTags.IS_PROJECTILE)))
.blocked(true)
)
)
.save(writer, "story/deflect_arrow");
Builder.advancement()
.parent(advancementHolder6)
.display(
Items.DIAMOND_CHESTPLATE,
Component.translatable("advancements.story.shiny_gear.title"),
Component.translatable("advancements.story.shiny_gear.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.requirements(Strategy.OR)
.addCriterion("diamond_helmet", TriggerInstance.hasItems(Items.DIAMOND_HELMET))
.addCriterion("diamond_chestplate", TriggerInstance.hasItems(Items.DIAMOND_CHESTPLATE))
.addCriterion("diamond_leggings", TriggerInstance.hasItems(Items.DIAMOND_LEGGINGS))
.addCriterion("diamond_boots", TriggerInstance.hasItems(Items.DIAMOND_BOOTS))
.save(writer, "story/shiny_gear");
AdvancementHolder advancementHolder10 = Builder.advancement()
.parent(advancementHolder9)
.display(
Items.FLINT_AND_STEEL,
Component.translatable("advancements.story.enter_the_nether.title"),
Component.translatable("advancements.story.enter_the_nether.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion("entered_nether", net.minecraft.advancements.critereon.ChangeDimensionTrigger.TriggerInstance.changedDimensionTo(Level.NETHER))
.save(writer, "story/enter_the_nether");
Builder.advancement()
.parent(advancementHolder10)
.display(
Items.GOLDEN_APPLE,
Component.translatable("advancements.story.cure_zombie_villager.title"),
Component.translatable("advancements.story.cure_zombie_villager.description"),
null,
AdvancementType.GOAL,
true,
true,
false
)
.addCriterion("cured_zombie", net.minecraft.advancements.critereon.CuredZombieVillagerTrigger.TriggerInstance.curedZombieVillager())
.save(writer, "story/cure_zombie_villager");
AdvancementHolder advancementHolder11 = Builder.advancement()
.parent(advancementHolder10)
.display(
Items.ENDER_EYE,
Component.translatable("advancements.story.follow_ender_eye.title"),
Component.translatable("advancements.story.follow_ender_eye.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion(
"in_stronghold",
PlayerTrigger.TriggerInstance.located(
net.minecraft.advancements.critereon.LocationPredicate.Builder.inStructure(
registries.lookupOrThrow(Registries.STRUCTURE).getOrThrow(BuiltinStructures.STRONGHOLD)
)
)
)
.save(writer, "story/follow_ender_eye");
Builder.advancement()
.parent(advancementHolder11)
.display(
Blocks.END_STONE,
Component.translatable("advancements.story.enter_the_end.title"),
Component.translatable("advancements.story.enter_the_end.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion("entered_end", net.minecraft.advancements.critereon.ChangeDimensionTrigger.TriggerInstance.changedDimensionTo(Level.END))
.save(writer, "story/enter_the_end");
}
}