eagler-1-12-4 / src /game /java /net /minecraft /data /advancements /packs /VanillaAdventureAdvancements.java
soiz1's picture
Upload folder using huggingface_hub
d46f4a3 verified
package net.minecraft.data.advancements.packs;
import com.mojang.datafixers.util.Pair;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.function.Consumer;
import net.minecraft.advancements.Advancement;
import net.minecraft.advancements.AdvancementHolder;
import net.minecraft.advancements.AdvancementRequirements;
import net.minecraft.advancements.AdvancementRewards;
import net.minecraft.advancements.AdvancementType;
import net.minecraft.advancements.Criterion;
import net.minecraft.advancements.critereon.BlockPredicate;
import net.minecraft.advancements.critereon.ChanneledLightningTrigger;
import net.minecraft.advancements.critereon.DamagePredicate;
import net.minecraft.advancements.critereon.DamageSourcePredicate;
import net.minecraft.advancements.critereon.DistancePredicate;
import net.minecraft.advancements.critereon.DistanceTrigger;
import net.minecraft.advancements.critereon.EntityEquipmentPredicate;
import net.minecraft.advancements.critereon.EntityPredicate;
import net.minecraft.advancements.critereon.FallAfterExplosionTrigger;
import net.minecraft.advancements.critereon.InventoryChangeTrigger;
import net.minecraft.advancements.critereon.ItemJukeboxPlayablePredicate;
import net.minecraft.advancements.critereon.ItemPredicate;
import net.minecraft.advancements.critereon.ItemSubPredicates;
import net.minecraft.advancements.critereon.ItemUsedOnLocationTrigger;
import net.minecraft.advancements.critereon.KilledByArrowTrigger;
import net.minecraft.advancements.critereon.KilledTrigger;
import net.minecraft.advancements.critereon.LightningBoltPredicate;
import net.minecraft.advancements.critereon.LightningStrikeTrigger;
import net.minecraft.advancements.critereon.LocationPredicate;
import net.minecraft.advancements.critereon.LootTableTrigger;
import net.minecraft.advancements.critereon.MinMaxBounds;
import net.minecraft.advancements.critereon.PlayerHurtEntityTrigger;
import net.minecraft.advancements.critereon.PlayerInteractTrigger;
import net.minecraft.advancements.critereon.PlayerPredicate;
import net.minecraft.advancements.critereon.PlayerTrigger;
import net.minecraft.advancements.critereon.RecipeCraftedTrigger;
import net.minecraft.advancements.critereon.ShotCrossbowTrigger;
import net.minecraft.advancements.critereon.SlideDownBlockTrigger;
import net.minecraft.advancements.critereon.StatePropertiesPredicate;
import net.minecraft.advancements.critereon.SummonedEntityTrigger;
import net.minecraft.advancements.critereon.TagPredicate;
import net.minecraft.advancements.critereon.TargetBlockTrigger;
import net.minecraft.advancements.critereon.TradeTrigger;
import net.minecraft.advancements.critereon.UsedTotemTrigger;
import net.minecraft.advancements.critereon.UsingItemTrigger;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.HolderGetter;
import net.minecraft.core.HolderLookup;
import net.minecraft.core.HolderSet;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.core.registries.Registries;
import net.minecraft.data.advancements.AdvancementSubProvider;
import net.minecraft.data.recipes.packs.VanillaRecipeProvider;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.tags.DamageTypeTags;
import net.minecraft.tags.EntityTypeTags;
import net.minecraft.tags.ItemTags;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.raid.Raid;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import net.minecraft.world.item.crafting.Recipe;
import net.minecraft.world.level.biome.Biome;
import net.minecraft.world.level.biome.Biomes;
import net.minecraft.world.level.biome.MultiNoiseBiomeSourceParameterList;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.ComparatorBlock;
import net.minecraft.world.level.block.CopperBulbBlock;
import net.minecraft.world.level.block.VaultBlock;
import net.minecraft.world.level.block.entity.BannerPattern;
import net.minecraft.world.level.block.entity.DecoratedPotBlockEntity;
import net.minecraft.world.level.block.entity.PotDecorations;
import net.minecraft.world.level.levelgen.structure.BuiltinStructures;
import net.minecraft.world.level.storage.loot.BuiltInLootTables;
import net.minecraft.world.level.storage.loot.predicates.AllOfCondition;
import net.minecraft.world.level.storage.loot.predicates.AnyOfCondition;
import net.minecraft.world.level.storage.loot.predicates.LocationCheck;
import net.minecraft.world.level.storage.loot.predicates.LootItemBlockStatePropertyCondition;
import net.minecraft.world.level.storage.loot.predicates.LootItemCondition;
public class VanillaAdventureAdvancements implements AdvancementSubProvider {
private static final int DISTANCE_FROM_BOTTOM_TO_TOP = 384;
private static final int Y_COORDINATE_AT_TOP = 320;
private static final int Y_COORDINATE_AT_BOTTOM = -64;
private static final int BEDROCK_THICKNESS = 5;
protected static final List<EntityType<?>> MOBS_TO_KILL = Arrays.asList(
EntityType.BLAZE,
EntityType.BOGGED,
EntityType.BREEZE,
EntityType.CAVE_SPIDER,
EntityType.CREAKING,
EntityType.CREEPER,
EntityType.DROWNED,
EntityType.ELDER_GUARDIAN,
EntityType.ENDER_DRAGON,
EntityType.ENDERMAN,
EntityType.ENDERMITE,
EntityType.EVOKER,
EntityType.GHAST,
EntityType.GUARDIAN,
EntityType.HOGLIN,
EntityType.HUSK,
EntityType.MAGMA_CUBE,
EntityType.PHANTOM,
EntityType.PIGLIN,
EntityType.PIGLIN_BRUTE,
EntityType.PILLAGER,
EntityType.RAVAGER,
EntityType.SHULKER,
EntityType.SILVERFISH,
EntityType.SKELETON,
EntityType.SLIME,
EntityType.SPIDER,
EntityType.STRAY,
EntityType.VEX,
EntityType.VINDICATOR,
EntityType.WITCH,
EntityType.WITHER_SKELETON,
EntityType.WITHER,
EntityType.ZOGLIN,
EntityType.ZOMBIE_VILLAGER,
EntityType.ZOMBIE,
EntityType.ZOMBIFIED_PIGLIN
);
private static Criterion<LightningStrikeTrigger.TriggerInstance> fireCountAndBystander(MinMaxBounds.Ints p_252298_, Optional<EntityPredicate> p_300450_) {
return LightningStrikeTrigger.TriggerInstance.lightningStrike(
Optional.of(
EntityPredicate.Builder.entity()
.distance(DistancePredicate.absolute(MinMaxBounds.Doubles.atMost(30.0)))
.subPredicate(LightningBoltPredicate.blockSetOnFire(p_252298_))
.build()
),
p_300450_
);
}
private static Criterion<UsingItemTrigger.TriggerInstance> lookAtThroughItem(EntityPredicate.Builder p_360944_, ItemPredicate.Builder p_366490_) {
return UsingItemTrigger.TriggerInstance.lookingAt(
EntityPredicate.Builder.entity().subPredicate(PlayerPredicate.Builder.player().setLookingAt(p_360944_).build()), p_366490_
);
}
@Override
public void generate(HolderLookup.Provider p_255887_, Consumer<AdvancementHolder> p_256428_) {
HolderGetter<EntityType<?>> holdergetter = p_255887_.lookupOrThrow(Registries.ENTITY_TYPE);
HolderGetter<Item> holdergetter1 = p_255887_.lookupOrThrow(Registries.ITEM);
HolderGetter<Block> holdergetter2 = p_255887_.lookupOrThrow(Registries.BLOCK);
AdvancementHolder advancementholder = Advancement.Builder.advancement()
.display(
Items.MAP,
Component.translatable("advancements.adventure.root.title"),
Component.translatable("advancements.adventure.root.description"),
ResourceLocation.withDefaultNamespace("textures/gui/advancements/backgrounds/adventure.png"),
AdvancementType.TASK,
false,
false,
false
)
.requirements(AdvancementRequirements.Strategy.OR)
.addCriterion("killed_something", KilledTrigger.TriggerInstance.playerKilledEntity())
.addCriterion("killed_by_something", KilledTrigger.TriggerInstance.entityKilledPlayer())
.save(p_256428_, "adventure/root");
AdvancementHolder advancementholder1 = Advancement.Builder.advancement()
.parent(advancementholder)
.display(
Blocks.RED_BED,
Component.translatable("advancements.adventure.sleep_in_bed.title"),
Component.translatable("advancements.adventure.sleep_in_bed.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion("slept_in_bed", PlayerTrigger.TriggerInstance.sleptInBed())
.save(p_256428_, "adventure/sleep_in_bed");
createAdventuringTime(p_255887_, p_256428_, advancementholder1, MultiNoiseBiomeSourceParameterList.Preset.OVERWORLD);
AdvancementHolder advancementholder2 = Advancement.Builder.advancement()
.parent(advancementholder)
.display(
Items.EMERALD,
Component.translatable("advancements.adventure.trade.title"),
Component.translatable("advancements.adventure.trade.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion("traded", TradeTrigger.TriggerInstance.tradedWithVillager())
.save(p_256428_, "adventure/trade");
Advancement.Builder.advancement()
.parent(advancementholder2)
.display(
Items.EMERALD,
Component.translatable("advancements.adventure.trade_at_world_height.title"),
Component.translatable("advancements.adventure.trade_at_world_height.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion(
"trade_at_world_height",
TradeTrigger.TriggerInstance.tradedWithVillager(
EntityPredicate.Builder.entity().located(LocationPredicate.Builder.atYLocation(MinMaxBounds.Doubles.atLeast(319.0)))
)
)
.save(p_256428_, "adventure/trade_at_world_height");
AdvancementHolder advancementholder3 = createMonsterHunterAdvancement(advancementholder, p_256428_, holdergetter, MOBS_TO_KILL);
AdvancementHolder advancementholder4 = Advancement.Builder.advancement()
.parent(advancementholder3)
.display(
Items.BOW,
Component.translatable("advancements.adventure.shoot_arrow.title"),
Component.translatable("advancements.adventure.shoot_arrow.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion(
"shot_arrow",
PlayerHurtEntityTrigger.TriggerInstance.playerHurtEntityWithDamage(
DamagePredicate.Builder.damageInstance()
.type(
DamageSourcePredicate.Builder.damageType()
.tag(TagPredicate.is(DamageTypeTags.IS_PROJECTILE))
.direct(EntityPredicate.Builder.entity().of(holdergetter, EntityTypeTags.ARROWS))
)
)
)
.save(p_256428_, "adventure/shoot_arrow");
AdvancementHolder advancementholder5 = Advancement.Builder.advancement()
.parent(advancementholder3)
.display(
Items.TRIDENT,
Component.translatable("advancements.adventure.throw_trident.title"),
Component.translatable("advancements.adventure.throw_trident.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion(
"shot_trident",
PlayerHurtEntityTrigger.TriggerInstance.playerHurtEntityWithDamage(
DamagePredicate.Builder.damageInstance()
.type(
DamageSourcePredicate.Builder.damageType()
.tag(TagPredicate.is(DamageTypeTags.IS_PROJECTILE))
.direct(EntityPredicate.Builder.entity().of(holdergetter, EntityType.TRIDENT))
)
)
)
.save(p_256428_, "adventure/throw_trident");
Advancement.Builder.advancement()
.parent(advancementholder5)
.display(
Items.TRIDENT,
Component.translatable("advancements.adventure.very_very_frightening.title"),
Component.translatable("advancements.adventure.very_very_frightening.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion(
"struck_villager",
ChanneledLightningTrigger.TriggerInstance.channeledLightning(EntityPredicate.Builder.entity().of(holdergetter, EntityType.VILLAGER))
)
.save(p_256428_, "adventure/very_very_frightening");
Advancement.Builder.advancement()
.parent(advancementholder2)
.display(
Blocks.CARVED_PUMPKIN,
Component.translatable("advancements.adventure.summon_iron_golem.title"),
Component.translatable("advancements.adventure.summon_iron_golem.description"),
null,
AdvancementType.GOAL,
true,
true,
false
)
.addCriterion(
"summoned_golem",
SummonedEntityTrigger.TriggerInstance.summonedEntity(EntityPredicate.Builder.entity().of(holdergetter, EntityType.IRON_GOLEM))
)
.save(p_256428_, "adventure/summon_iron_golem");
Advancement.Builder.advancement()
.parent(advancementholder4)
.display(
Items.ARROW,
Component.translatable("advancements.adventure.sniper_duel.title"),
Component.translatable("advancements.adventure.sniper_duel.description"),
null,
AdvancementType.CHALLENGE,
true,
true,
false
)
.rewards(AdvancementRewards.Builder.experience(50))
.addCriterion(
"killed_skeleton",
KilledTrigger.TriggerInstance.playerKilledEntity(
EntityPredicate.Builder.entity()
.of(holdergetter, EntityType.SKELETON)
.distance(DistancePredicate.horizontal(MinMaxBounds.Doubles.atLeast(50.0))),
DamageSourcePredicate.Builder.damageType().tag(TagPredicate.is(DamageTypeTags.IS_PROJECTILE))
)
)
.save(p_256428_, "adventure/sniper_duel");
Advancement.Builder.advancement()
.parent(advancementholder3)
.display(
Items.TOTEM_OF_UNDYING,
Component.translatable("advancements.adventure.totem_of_undying.title"),
Component.translatable("advancements.adventure.totem_of_undying.description"),
null,
AdvancementType.GOAL,
true,
true,
false
)
.addCriterion("used_totem", UsedTotemTrigger.TriggerInstance.usedTotem(holdergetter1, Items.TOTEM_OF_UNDYING))
.save(p_256428_, "adventure/totem_of_undying");
AdvancementHolder advancementholder6 = Advancement.Builder.advancement()
.parent(advancementholder)
.display(
Items.CROSSBOW,
Component.translatable("advancements.adventure.ol_betsy.title"),
Component.translatable("advancements.adventure.ol_betsy.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion("shot_crossbow", ShotCrossbowTrigger.TriggerInstance.shotCrossbow(holdergetter1, Items.CROSSBOW))
.save(p_256428_, "adventure/ol_betsy");
Advancement.Builder.advancement()
.parent(advancementholder6)
.display(
Items.CROSSBOW,
Component.translatable("advancements.adventure.whos_the_pillager_now.title"),
Component.translatable("advancements.adventure.whos_the_pillager_now.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion(
"kill_pillager",
KilledByArrowTrigger.TriggerInstance.crossbowKilled(holdergetter1, EntityPredicate.Builder.entity().of(holdergetter, EntityType.PILLAGER))
)
.save(p_256428_, "adventure/whos_the_pillager_now");
Advancement.Builder.advancement()
.parent(advancementholder6)
.display(
Items.CROSSBOW,
Component.translatable("advancements.adventure.two_birds_one_arrow.title"),
Component.translatable("advancements.adventure.two_birds_one_arrow.description"),
null,
AdvancementType.CHALLENGE,
true,
true,
false
)
.rewards(AdvancementRewards.Builder.experience(65))
.addCriterion(
"two_birds",
KilledByArrowTrigger.TriggerInstance.crossbowKilled(
holdergetter1,
EntityPredicate.Builder.entity().of(holdergetter, EntityType.PHANTOM),
EntityPredicate.Builder.entity().of(holdergetter, EntityType.PHANTOM)
)
)
.save(p_256428_, "adventure/two_birds_one_arrow");
Advancement.Builder.advancement()
.parent(advancementholder6)
.display(
Items.CROSSBOW,
Component.translatable("advancements.adventure.arbalistic.title"),
Component.translatable("advancements.adventure.arbalistic.description"),
null,
AdvancementType.CHALLENGE,
true,
true,
true
)
.rewards(AdvancementRewards.Builder.experience(85))
.addCriterion("arbalistic", KilledByArrowTrigger.TriggerInstance.crossbowKilled(holdergetter1, MinMaxBounds.Ints.exactly(5)))
.save(p_256428_, "adventure/arbalistic");
HolderLookup.RegistryLookup<BannerPattern> registrylookup = p_255887_.lookupOrThrow(Registries.BANNER_PATTERN);
AdvancementHolder advancementholder7 = Advancement.Builder.advancement()
.parent(advancementholder)
.display(
Raid.getOminousBannerInstance(registrylookup),
Component.translatable("advancements.adventure.voluntary_exile.title"),
Component.translatable("advancements.adventure.voluntary_exile.description"),
null,
AdvancementType.TASK,
true,
true,
true
)
.addCriterion(
"voluntary_exile",
KilledTrigger.TriggerInstance.playerKilledEntity(
EntityPredicate.Builder.entity()
.of(holdergetter, EntityTypeTags.RAIDERS)
.equipment(EntityEquipmentPredicate.captainPredicate(holdergetter1, registrylookup))
)
)
.save(p_256428_, "adventure/voluntary_exile");
Advancement.Builder.advancement()
.parent(advancementholder7)
.display(
Raid.getOminousBannerInstance(registrylookup),
Component.translatable("advancements.adventure.hero_of_the_village.title"),
Component.translatable("advancements.adventure.hero_of_the_village.description"),
null,
AdvancementType.CHALLENGE,
true,
true,
true
)
.rewards(AdvancementRewards.Builder.experience(100))
.addCriterion("hero_of_the_village", PlayerTrigger.TriggerInstance.raidWon())
.save(p_256428_, "adventure/hero_of_the_village");
Advancement.Builder.advancement()
.parent(advancementholder)
.display(
Blocks.HONEY_BLOCK.asItem(),
Component.translatable("advancements.adventure.honey_block_slide.title"),
Component.translatable("advancements.adventure.honey_block_slide.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion("honey_block_slide", SlideDownBlockTrigger.TriggerInstance.slidesDownBlock(Blocks.HONEY_BLOCK))
.save(p_256428_, "adventure/honey_block_slide");
Advancement.Builder.advancement()
.parent(advancementholder4)
.display(
Blocks.TARGET.asItem(),
Component.translatable("advancements.adventure.bullseye.title"),
Component.translatable("advancements.adventure.bullseye.description"),
null,
AdvancementType.CHALLENGE,
true,
true,
false
)
.rewards(AdvancementRewards.Builder.experience(50))
.addCriterion(
"bullseye",
TargetBlockTrigger.TriggerInstance.targetHit(
MinMaxBounds.Ints.exactly(15),
Optional.of(
EntityPredicate.wrap(
EntityPredicate.Builder.entity().distance(DistancePredicate.horizontal(MinMaxBounds.Doubles.atLeast(30.0)))
)
)
)
)
.save(p_256428_, "adventure/bullseye");
Advancement.Builder.advancement()
.parent(advancementholder1)
.display(
Items.LEATHER_BOOTS,
Component.translatable("advancements.adventure.walk_on_powder_snow_with_leather_boots.title"),
Component.translatable("advancements.adventure.walk_on_powder_snow_with_leather_boots.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion(
"walk_on_powder_snow_with_leather_boots",
PlayerTrigger.TriggerInstance.walkOnBlockWithEquipment(holdergetter2, holdergetter1, Blocks.POWDER_SNOW, Items.LEATHER_BOOTS)
)
.save(p_256428_, "adventure/walk_on_powder_snow_with_leather_boots");
Advancement.Builder.advancement()
.parent(advancementholder)
.display(
Items.LIGHTNING_ROD,
Component.translatable("advancements.adventure.lightning_rod_with_villager_no_fire.title"),
Component.translatable("advancements.adventure.lightning_rod_with_villager_no_fire.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion(
"lightning_rod_with_villager_no_fire",
fireCountAndBystander(MinMaxBounds.Ints.exactly(0), Optional.of(EntityPredicate.Builder.entity().of(holdergetter, EntityType.VILLAGER).build()))
)
.save(p_256428_, "adventure/lightning_rod_with_villager_no_fire");
AdvancementHolder advancementholder8 = Advancement.Builder.advancement()
.parent(advancementholder)
.display(
Items.SPYGLASS,
Component.translatable("advancements.adventure.spyglass_at_parrot.title"),
Component.translatable("advancements.adventure.spyglass_at_parrot.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion(
"spyglass_at_parrot",
lookAtThroughItem(
EntityPredicate.Builder.entity().of(holdergetter, EntityType.PARROT),
ItemPredicate.Builder.item().of(holdergetter1, Items.SPYGLASS)
)
)
.save(p_256428_, "adventure/spyglass_at_parrot");
AdvancementHolder advancementholder9 = Advancement.Builder.advancement()
.parent(advancementholder8)
.display(
Items.SPYGLASS,
Component.translatable("advancements.adventure.spyglass_at_ghast.title"),
Component.translatable("advancements.adventure.spyglass_at_ghast.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion(
"spyglass_at_ghast",
lookAtThroughItem(
EntityPredicate.Builder.entity().of(holdergetter, EntityType.GHAST),
ItemPredicate.Builder.item().of(holdergetter1, Items.SPYGLASS)
)
)
.save(p_256428_, "adventure/spyglass_at_ghast");
Advancement.Builder.advancement()
.parent(advancementholder1)
.display(
Items.JUKEBOX,
Component.translatable("advancements.adventure.play_jukebox_in_meadows.title"),
Component.translatable("advancements.adventure.play_jukebox_in_meadows.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion(
"play_jukebox_in_meadows",
ItemUsedOnLocationTrigger.TriggerInstance.itemUsedOnBlock(
LocationPredicate.Builder.location()
.setBiomes(HolderSet.direct(p_255887_.lookupOrThrow(Registries.BIOME).getOrThrow(Biomes.MEADOW)))
.setBlock(BlockPredicate.Builder.block().of(holdergetter2, Blocks.JUKEBOX)),
ItemPredicate.Builder.item().withSubPredicate(ItemSubPredicates.JUKEBOX_PLAYABLE, ItemJukeboxPlayablePredicate.any())
)
)
.save(p_256428_, "adventure/play_jukebox_in_meadows");
Advancement.Builder.advancement()
.parent(advancementholder9)
.display(
Items.SPYGLASS,
Component.translatable("advancements.adventure.spyglass_at_dragon.title"),
Component.translatable("advancements.adventure.spyglass_at_dragon.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion(
"spyglass_at_dragon",
lookAtThroughItem(
EntityPredicate.Builder.entity().of(holdergetter, EntityType.ENDER_DRAGON),
ItemPredicate.Builder.item().of(holdergetter1, Items.SPYGLASS)
)
)
.save(p_256428_, "adventure/spyglass_at_dragon");
Advancement.Builder.advancement()
.parent(advancementholder)
.display(
Items.WATER_BUCKET,
Component.translatable("advancements.adventure.fall_from_world_height.title"),
Component.translatable("advancements.adventure.fall_from_world_height.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion(
"fall_from_world_height",
DistanceTrigger.TriggerInstance.fallFromHeight(
EntityPredicate.Builder.entity().located(LocationPredicate.Builder.atYLocation(MinMaxBounds.Doubles.atMost(-59.0))),
DistancePredicate.vertical(MinMaxBounds.Doubles.atLeast(379.0)),
LocationPredicate.Builder.atYLocation(MinMaxBounds.Doubles.atLeast(319.0))
)
)
.save(p_256428_, "adventure/fall_from_world_height");
Advancement.Builder.advancement()
.parent(advancementholder3)
.display(
Blocks.SCULK_CATALYST,
Component.translatable("advancements.adventure.kill_mob_near_sculk_catalyst.title"),
Component.translatable("advancements.adventure.kill_mob_near_sculk_catalyst.description"),
null,
AdvancementType.CHALLENGE,
true,
true,
false
)
.addCriterion("kill_mob_near_sculk_catalyst", KilledTrigger.TriggerInstance.playerKilledEntityNearSculkCatalyst())
.save(p_256428_, "adventure/kill_mob_near_sculk_catalyst");
Advancement.Builder.advancement()
.parent(advancementholder)
.display(
Blocks.SCULK_SENSOR,
Component.translatable("advancements.adventure.avoid_vibration.title"),
Component.translatable("advancements.adventure.avoid_vibration.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion("avoid_vibration", PlayerTrigger.TriggerInstance.avoidVibration())
.save(p_256428_, "adventure/avoid_vibration");
AdvancementHolder advancementholder10 = respectingTheRemnantsCriterions(holdergetter1, Advancement.Builder.advancement())
.parent(advancementholder)
.display(
Items.BRUSH,
Component.translatable("advancements.adventure.salvage_sherd.title"),
Component.translatable("advancements.adventure.salvage_sherd.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.save(p_256428_, "adventure/salvage_sherd");
Advancement.Builder.advancement()
.parent(advancementholder10)
.display(
DecoratedPotBlockEntity.createDecoratedPotItem(
new PotDecorations(Optional.empty(), Optional.of(Items.HEART_POTTERY_SHERD), Optional.empty(), Optional.of(Items.EXPLORER_POTTERY_SHERD))
),
Component.translatable("advancements.adventure.craft_decorated_pot_using_only_sherds.title"),
Component.translatable("advancements.adventure.craft_decorated_pot_using_only_sherds.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion(
"pot_crafted_using_only_sherds",
RecipeCraftedTrigger.TriggerInstance.craftedItem(
ResourceKey.create(Registries.RECIPE, ResourceLocation.withDefaultNamespace("decorated_pot")),
List.of(
ItemPredicate.Builder.item().of(holdergetter1, ItemTags.DECORATED_POT_SHERDS),
ItemPredicate.Builder.item().of(holdergetter1, ItemTags.DECORATED_POT_SHERDS),
ItemPredicate.Builder.item().of(holdergetter1, ItemTags.DECORATED_POT_SHERDS),
ItemPredicate.Builder.item().of(holdergetter1, ItemTags.DECORATED_POT_SHERDS)
)
)
)
.save(p_256428_, "adventure/craft_decorated_pot_using_only_sherds");
AdvancementHolder advancementholder11 = craftingANewLook(Advancement.Builder.advancement())
.parent(advancementholder)
.display(
new ItemStack(Items.DUNE_ARMOR_TRIM_SMITHING_TEMPLATE),
Component.translatable("advancements.adventure.trim_with_any_armor_pattern.title"),
Component.translatable("advancements.adventure.trim_with_any_armor_pattern.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.save(p_256428_, "adventure/trim_with_any_armor_pattern");
smithingWithStyle(Advancement.Builder.advancement())
.parent(advancementholder11)
.display(
new ItemStack(Items.SILENCE_ARMOR_TRIM_SMITHING_TEMPLATE),
Component.translatable("advancements.adventure.trim_with_all_exclusive_armor_patterns.title"),
Component.translatable("advancements.adventure.trim_with_all_exclusive_armor_patterns.description"),
null,
AdvancementType.CHALLENGE,
true,
true,
false
)
.rewards(AdvancementRewards.Builder.experience(150))
.save(p_256428_, "adventure/trim_with_all_exclusive_armor_patterns");
Advancement.Builder.advancement()
.parent(advancementholder)
.display(
Items.CHISELED_BOOKSHELF,
Component.translatable("advancements.adventure.read_power_from_chiseled_bookshelf.title"),
Component.translatable("advancements.adventure.read_power_from_chiseled_bookshelf.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.requirements(AdvancementRequirements.Strategy.OR)
.addCriterion("chiseled_bookshelf", placedBlockReadByComparator(holdergetter2, Blocks.CHISELED_BOOKSHELF))
.addCriterion("comparator", placedComparatorReadingBlock(holdergetter2, Blocks.CHISELED_BOOKSHELF))
.save(p_256428_, "adventure/read_power_of_chiseled_bookshelf");
Advancement.Builder.advancement()
.parent(advancementholder)
.display(
Items.ARMADILLO_SCUTE,
Component.translatable("advancements.adventure.brush_armadillo.title"),
Component.translatable("advancements.adventure.brush_armadillo.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion(
"brush_armadillo",
PlayerInteractTrigger.TriggerInstance.itemUsedOnEntity(
ItemPredicate.Builder.item().of(holdergetter1, Items.BRUSH),
Optional.of(EntityPredicate.wrap(EntityPredicate.Builder.entity().of(holdergetter, EntityType.ARMADILLO)))
)
)
.save(p_256428_, "adventure/brush_armadillo");
AdvancementHolder advancementholder12 = Advancement.Builder.advancement()
.parent(advancementholder)
.display(
Blocks.CHISELED_TUFF,
Component.translatable("advancements.adventure.minecraft_trials_edition.title"),
Component.translatable("advancements.adventure.minecraft_trials_edition.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion(
"minecraft_trials_edition",
PlayerTrigger.TriggerInstance.located(
LocationPredicate.Builder.inStructure(p_255887_.lookupOrThrow(Registries.STRUCTURE).getOrThrow(BuiltinStructures.TRIAL_CHAMBERS))
)
)
.save(p_256428_, "adventure/minecraft_trials_edition");
Advancement.Builder.advancement()
.parent(advancementholder12)
.display(
Items.COPPER_BULB,
Component.translatable("advancements.adventure.lighten_up.title"),
Component.translatable("advancements.adventure.lighten_up.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion(
"lighten_up",
ItemUsedOnLocationTrigger.TriggerInstance.itemUsedOnBlock(
LocationPredicate.Builder.location()
.setBlock(
BlockPredicate.Builder.block()
.of(
holdergetter2, Blocks.OXIDIZED_COPPER_BULB, Blocks.WEATHERED_COPPER_BULB, Blocks.EXPOSED_COPPER_BULB, Blocks.WAXED_OXIDIZED_COPPER_BULB, Blocks.WAXED_WEATHERED_COPPER_BULB, Blocks.WAXED_EXPOSED_COPPER_BULB
)
.setProperties(StatePropertiesPredicate.Builder.properties().hasProperty(CopperBulbBlock.LIT, true))
),
ItemPredicate.Builder.item().of(holdergetter1, VanillaHusbandryAdvancements.WAX_SCRAPING_TOOLS)
)
)
.save(p_256428_, "adventure/lighten_up");
AdvancementHolder advancementholder13 = Advancement.Builder.advancement()
.parent(advancementholder12)
.display(
Items.TRIAL_KEY,
Component.translatable("advancements.adventure.under_lock_and_key.title"),
Component.translatable("advancements.adventure.under_lock_and_key.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion(
"under_lock_and_key",
ItemUsedOnLocationTrigger.TriggerInstance.itemUsedOnBlock(
LocationPredicate.Builder.location()
.setBlock(
BlockPredicate.Builder.block()
.of(holdergetter2, Blocks.VAULT)
.setProperties(StatePropertiesPredicate.Builder.properties().hasProperty(VaultBlock.OMINOUS, false))
),
ItemPredicate.Builder.item().of(holdergetter1, Items.TRIAL_KEY)
)
)
.save(p_256428_, "adventure/under_lock_and_key");
Advancement.Builder.advancement()
.parent(advancementholder13)
.display(
Items.OMINOUS_TRIAL_KEY,
Component.translatable("advancements.adventure.revaulting.title"),
Component.translatable("advancements.adventure.revaulting.description"),
null,
AdvancementType.GOAL,
true,
true,
false
)
.addCriterion(
"revaulting",
ItemUsedOnLocationTrigger.TriggerInstance.itemUsedOnBlock(
LocationPredicate.Builder.location()
.setBlock(
BlockPredicate.Builder.block()
.of(holdergetter2, Blocks.VAULT)
.setProperties(StatePropertiesPredicate.Builder.properties().hasProperty(VaultBlock.OMINOUS, true))
),
ItemPredicate.Builder.item().of(holdergetter1, Items.OMINOUS_TRIAL_KEY)
)
)
.save(p_256428_, "adventure/revaulting");
Advancement.Builder.advancement()
.parent(advancementholder12)
.display(
Items.WIND_CHARGE,
Component.translatable("advancements.adventure.blowback.title"),
Component.translatable("advancements.adventure.blowback.description"),
null,
AdvancementType.CHALLENGE,
true,
true,
false
)
.rewards(AdvancementRewards.Builder.experience(40))
.addCriterion(
"blowback",
KilledTrigger.TriggerInstance.playerKilledEntity(
EntityPredicate.Builder.entity().of(holdergetter, EntityType.BREEZE),
DamageSourcePredicate.Builder.damageType()
.tag(TagPredicate.is(DamageTypeTags.IS_PROJECTILE))
.direct(EntityPredicate.Builder.entity().of(holdergetter, EntityType.BREEZE_WIND_CHARGE))
)
)
.save(p_256428_, "adventure/blowback");
Advancement.Builder.advancement()
.parent(advancementholder)
.display(
Items.CRAFTER,
Component.translatable("advancements.adventure.crafters_crafting_crafters.title"),
Component.translatable("advancements.adventure.crafters_crafting_crafters.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion(
"crafter_crafted_crafter",
RecipeCraftedTrigger.TriggerInstance.crafterCraftedItem(ResourceKey.create(Registries.RECIPE, ResourceLocation.withDefaultNamespace("crafter")))
)
.save(p_256428_, "adventure/crafters_crafting_crafters");
Advancement.Builder.advancement()
.parent(advancementholder12)
.display(
Items.WIND_CHARGE,
Component.translatable("advancements.adventure.who_needs_rockets.title"),
Component.translatable("advancements.adventure.who_needs_rockets.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion(
"who_needs_rockets",
FallAfterExplosionTrigger.TriggerInstance.fallAfterExplosion(
DistancePredicate.vertical(MinMaxBounds.Doubles.atLeast(7.0)),
EntityPredicate.Builder.entity().of(holdergetter, EntityType.WIND_CHARGE)
)
)
.save(p_256428_, "adventure/who_needs_rockets");
Advancement.Builder.advancement()
.parent(advancementholder12)
.display(
Items.MACE,
Component.translatable("advancements.adventure.overoverkill.title"),
Component.translatable("advancements.adventure.overoverkill.description"),
null,
AdvancementType.CHALLENGE,
true,
true,
false
)
.rewards(AdvancementRewards.Builder.experience(50))
.addCriterion(
"overoverkill",
PlayerHurtEntityTrigger.TriggerInstance.playerHurtEntityWithDamage(
DamagePredicate.Builder.damageInstance()
.dealtDamage(MinMaxBounds.Doubles.atLeast(100.0))
.type(
DamageSourcePredicate.Builder.damageType()
.tag(TagPredicate.is(DamageTypeTags.IS_MACE_SMASH))
.direct(
EntityPredicate.Builder.entity()
.of(holdergetter, EntityType.PLAYER)
.equipment(
EntityEquipmentPredicate.Builder.equipment()
.mainhand(ItemPredicate.Builder.item().of(holdergetter1, Items.MACE))
)
)
)
)
)
.save(p_256428_, "adventure/overoverkill");
}
public static AdvancementHolder createMonsterHunterAdvancement(
AdvancementHolder p_309635_, Consumer<AdvancementHolder> p_309544_, HolderGetter<EntityType<?>> p_365631_, List<EntityType<?>> p_310276_
) {
AdvancementHolder advancementholder = addMobsToKill(Advancement.Builder.advancement(), p_365631_, p_310276_)
.parent(p_309635_)
.display(
Items.IRON_SWORD,
Component.translatable("advancements.adventure.kill_a_mob.title"),
Component.translatable("advancements.adventure.kill_a_mob.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.requirements(AdvancementRequirements.Strategy.OR)
.save(p_309544_, "adventure/kill_a_mob");
addMobsToKill(Advancement.Builder.advancement(), p_365631_, p_310276_)
.parent(advancementholder)
.display(
Items.DIAMOND_SWORD,
Component.translatable("advancements.adventure.kill_all_mobs.title"),
Component.translatable("advancements.adventure.kill_all_mobs.description"),
null,
AdvancementType.CHALLENGE,
true,
true,
false
)
.rewards(AdvancementRewards.Builder.experience(100))
.save(p_309544_, "adventure/kill_all_mobs");
return advancementholder;
}
private static Criterion<ItemUsedOnLocationTrigger.TriggerInstance> placedBlockReadByComparator(HolderGetter<Block> p_365736_, Block p_286401_) {
LootItemCondition.Builder[] alootitemcondition$builder = ComparatorBlock.FACING
.getPossibleValues()
.stream()
.map(
p_358186_ -> {
StatePropertiesPredicate.Builder statepropertiespredicate$builder = StatePropertiesPredicate.Builder.properties()
.hasProperty(ComparatorBlock.FACING, p_358186_);
BlockPredicate.Builder blockpredicate$builder = BlockPredicate.Builder.block()
.of(p_365736_, Blocks.COMPARATOR)
.setProperties(statepropertiespredicate$builder);
return LocationCheck.checkLocation(
LocationPredicate.Builder.location().setBlock(blockpredicate$builder), new BlockPos(p_358186_.getOpposite().getUnitVec3i())
);
}
)
.toArray(LootItemCondition.Builder[]::new);
return ItemUsedOnLocationTrigger.TriggerInstance.placedBlock(
LootItemBlockStatePropertyCondition.hasBlockStateProperties(p_286401_), AnyOfCondition.anyOf(alootitemcondition$builder)
);
}
private static Criterion<ItemUsedOnLocationTrigger.TriggerInstance> placedComparatorReadingBlock(HolderGetter<Block> p_366873_, Block p_286250_) {
LootItemCondition.Builder[] alootitemcondition$builder = ComparatorBlock.FACING
.getPossibleValues()
.stream()
.map(
p_358184_ -> {
StatePropertiesPredicate.Builder statepropertiespredicate$builder = StatePropertiesPredicate.Builder.properties()
.hasProperty(ComparatorBlock.FACING, p_358184_);
LootItemBlockStatePropertyCondition.Builder lootitemblockstatepropertycondition$builder = new LootItemBlockStatePropertyCondition.Builder(
Blocks.COMPARATOR
)
.setProperties(statepropertiespredicate$builder);
LootItemCondition.Builder lootitemcondition$builder = LocationCheck.checkLocation(
LocationPredicate.Builder.location().setBlock(BlockPredicate.Builder.block().of(p_366873_, p_286250_)),
new BlockPos(p_358184_.getUnitVec3i())
);
return AllOfCondition.allOf(lootitemblockstatepropertycondition$builder, lootitemcondition$builder);
}
)
.toArray(LootItemCondition.Builder[]::new);
return ItemUsedOnLocationTrigger.TriggerInstance.placedBlock(AnyOfCondition.anyOf(alootitemcondition$builder));
}
private static Advancement.Builder smithingWithStyle(Advancement.Builder p_285368_) {
p_285368_.requirements(AdvancementRequirements.Strategy.AND);
Set<Item> set = Set.of(
Items.SPIRE_ARMOR_TRIM_SMITHING_TEMPLATE, Items.SNOUT_ARMOR_TRIM_SMITHING_TEMPLATE, Items.RIB_ARMOR_TRIM_SMITHING_TEMPLATE, Items.WARD_ARMOR_TRIM_SMITHING_TEMPLATE, Items.SILENCE_ARMOR_TRIM_SMITHING_TEMPLATE, Items.VEX_ARMOR_TRIM_SMITHING_TEMPLATE, Items.TIDE_ARMOR_TRIM_SMITHING_TEMPLATE, Items.WAYFINDER_ARMOR_TRIM_SMITHING_TEMPLATE
);
VanillaRecipeProvider.smithingTrims()
.filter(p_308497_ -> set.contains(p_308497_.template()))
.forEach(
p_358179_ -> p_285368_.addCriterion(
"armor_trimmed_" + p_358179_.id().location(), RecipeCraftedTrigger.TriggerInstance.craftedItem(p_358179_.id())
)
);
return p_285368_;
}
private static Advancement.Builder craftingANewLook(Advancement.Builder p_285062_) {
p_285062_.requirements(AdvancementRequirements.Strategy.OR);
VanillaRecipeProvider.smithingTrims()
.map(VanillaRecipeProvider.TrimTemplate::id)
.forEach(
p_358181_ -> p_285062_.addCriterion(
"armor_trimmed_" + p_358181_.location(), RecipeCraftedTrigger.TriggerInstance.craftedItem((ResourceKey<Recipe<?>>)p_358181_)
)
);
return p_285062_;
}
private static Advancement.Builder respectingTheRemnantsCriterions(HolderGetter<Item> p_364424_, Advancement.Builder p_285170_) {
List<Pair<String, Criterion<LootTableTrigger.TriggerInstance>>> list = List.of(
Pair.of("desert_pyramid", LootTableTrigger.TriggerInstance.lootTableUsed(BuiltInLootTables.DESERT_PYRAMID_ARCHAEOLOGY)),
Pair.of("desert_well", LootTableTrigger.TriggerInstance.lootTableUsed(BuiltInLootTables.DESERT_WELL_ARCHAEOLOGY)),
Pair.of("ocean_ruin_cold", LootTableTrigger.TriggerInstance.lootTableUsed(BuiltInLootTables.OCEAN_RUIN_COLD_ARCHAEOLOGY)),
Pair.of("ocean_ruin_warm", LootTableTrigger.TriggerInstance.lootTableUsed(BuiltInLootTables.OCEAN_RUIN_WARM_ARCHAEOLOGY)),
Pair.of("trail_ruins_rare", LootTableTrigger.TriggerInstance.lootTableUsed(BuiltInLootTables.TRAIL_RUINS_ARCHAEOLOGY_RARE)),
Pair.of("trail_ruins_common", LootTableTrigger.TriggerInstance.lootTableUsed(BuiltInLootTables.TRAIL_RUINS_ARCHAEOLOGY_COMMON))
);
list.forEach(p_308495_ -> p_285170_.addCriterion(p_308495_.getFirst(), p_308495_.getSecond()));
String s = "has_sherd";
p_285170_.addCriterion(
"has_sherd", InventoryChangeTrigger.TriggerInstance.hasItems(ItemPredicate.Builder.item().of(p_364424_, ItemTags.DECORATED_POT_SHERDS))
);
p_285170_.requirements(new AdvancementRequirements(List.of(list.stream().map(Pair::getFirst).toList(), List.of("has_sherd"))));
return p_285170_;
}
protected static void createAdventuringTime(
HolderLookup.Provider p_334518_,
Consumer<AdvancementHolder> p_275645_,
AdvancementHolder p_298014_,
MultiNoiseBiomeSourceParameterList.Preset p_275211_
) {
addBiomes(Advancement.Builder.advancement(), p_334518_, p_275211_.usedBiomes().toList())
.parent(p_298014_)
.display(
Items.DIAMOND_BOOTS,
Component.translatable("advancements.adventure.adventuring_time.title"),
Component.translatable("advancements.adventure.adventuring_time.description"),
null,
AdvancementType.CHALLENGE,
true,
true,
false
)
.rewards(AdvancementRewards.Builder.experience(500))
.save(p_275645_, "adventure/adventuring_time");
}
private static Advancement.Builder addMobsToKill(Advancement.Builder p_248814_, HolderGetter<EntityType<?>> p_363074_, List<EntityType<?>> p_309412_) {
p_309412_.forEach(
p_358189_ -> p_248814_.addCriterion(
BuiltInRegistries.ENTITY_TYPE.getKey((EntityType<?>)p_358189_).toString(),
KilledTrigger.TriggerInstance.playerKilledEntity(EntityPredicate.Builder.entity().of(p_363074_, (EntityType<?>)p_358189_))
)
);
return p_248814_;
}
protected static Advancement.Builder addBiomes(Advancement.Builder p_249250_, HolderLookup.Provider p_334548_, List<ResourceKey<Biome>> p_251338_) {
HolderGetter<Biome> holdergetter = p_334548_.lookupOrThrow(Registries.BIOME);
for (ResourceKey<Biome> resourcekey : p_251338_) {
p_249250_.addCriterion(
resourcekey.location().toString(),
PlayerTrigger.TriggerInstance.located(LocationPredicate.Builder.inBiome(holdergetter.getOrThrow(resourcekey)))
);
}
return p_249250_;
}
}