ItemsAdderAdditionsItemsAdderAdditions
Advancements

Custom Advancements

Define custom Minecraft advancement trees in ItemsAdder YAML files.

Since v1.0.9

Define custom Minecraft advancement trees directly in your ItemsAdder content YAML files. No datapacks, no restarts. Add an advancements section and run /iareload.

Features

  • Create new advancement tabs with a custom background texture
  • Build tree structures by parenting advancements to each other
  • Use 49 built-in trigger types (obtain item, craft recipe, kill entity, enter biome, join checks, furniture checks, player state checks, and more)
  • Run completion actions when an advancement finishes (title, sound, commands, action bar)
  • Add optional player predicates to any criterion, such as sneaking, gamemode, level, inventory slots, potion effects, location, and more
  • Grant experience, loot tables, and recipe unlocks as rewards
  • Player progress persists across reloads

Basic structure

info:
  namespace: my_pack

advancements:

  root:
    display:
      title: "My Server"
      description: "Achievements for My Server."
      icon: minecraft:nether_star
      background: "minecraft:gui/advancements/backgrounds/adventure"
      show_toast: false
      announce_to_chat: false

  first_sword:
    parent: root
    display:
      title: "First Ruby Sword"
      description: "Obtain your first custom sword."
      icon: my_pack:ruby_sword
      frame: task
    criteria:
      obtain:
        trigger: obtain_item
        conditions:
          items:
            - my_pack:ruby_sword
    on_complete:
      sound:
        name: minecraft:entity.player.levelup
      title:
        title: "<gold>Achievement!"
        subtitle: "<gray>First Ruby Sword obtained."

How it works

IAA loads every content file that contains an advancements section. Each entry becomes one Minecraft advancement injected at runtime via NMS. Player progress is stored by vanilla in the world save files and persists across reloads. Root advancements without criteria are automatically granted so their tab is visible to players after join or reload.

Root advancements (no parent) create a new tab in the advancements screen. Children connect visually to their parent in the tree.

All advancements in a file share the same info.namespace. Cross-namespace parents are supported using the namespace:id format.

On this page