API reference / @jsprismarine/advancements / AdvancementEngine
Class: AdvancementEngine
Defined in: engine.ts:62
The advancement engine: it holds the loaded tree, routes game events to the criteria listening for them, records progress against a player's store, and fires rewards when an advancement completes.
Criteria are indexed by trigger, and the four triggers whose event names a registry element are indexed by that element as well, so raising an event touches the criteria that could match it rather than all of them.
Constructors
Constructor
new AdvancementEngine(
options?):AdvancementEngine
Defined in: engine.ts:72
Parameters
options?
Returns
AdvancementEngine
Accessors
diagnostics
Get Signature
get diagnostics():
DiagnosticCollector
Defined in: engine.ts:83
Diagnostics from loading and from every evaluation since.
Returns
tree
Get Signature
get tree():
AdvancementTree
Defined in: engine.ts:78
The parent tree of everything loaded, rebuilt by each load.
Returns
Methods
award()
award(
id,progress,player,at?):boolean
Defined in: engine.ts:180
Completes every criterion of one advancement, the way /advancement grant does.
Parameters
id
string
progress
player
at?
string
Returns
boolean
Whether this call completed the advancement.
get()
get(
id):ParsedAdvancement|undefined
Defined in: engine.ts:88
One loaded advancement by namespaced id.
Parameters
id
string
Returns
ParsedAdvancement | undefined
listensFor()
listensFor(
trigger):boolean
Defined in: engine.ts:103
Whether any loaded criterion is listening for one trigger.
For the call site rather than for this class: building a trigger's event means reading a player's inventory, equipment, position and attributes, and that work is wasted when the loaded set has no criterion for the trigger. A stack with no advancements in it answers false to everything.
Parameters
trigger
"villager_trade" | "enchanted_item" | "impossible" | "player_killed_entity" | "entity_killed_player" | "enter_block" | "inventory_changed" | "recipe_unlocked" | "player_hurt_entity" | "entity_hurt_player" | "filled_bucket" | "brewed_potion" | "construct_beacon" | "used_ender_eye" | "summoned_entity" | "bred_animals" | "location" | "slept_in_bed" | "cured_zombie_villager" | "item_durability_changed" | "levitation" | "changed_dimension" | "tick" | "tame_animal" | "placed_block" | "consume_item" | "effects_changed" | "used_totem" | "nether_travel" | "fishing_rod_hooked" | "channeled_lightning" | "shot_crossbow" | "spear_mobs" | "killed_by_arrow" | "hero_of_the_village" | "voluntary_exile" | "slide_down_block" | "bee_nest_destroyed" | "target_hit" | "item_used_on_block" | "default_block_use" | "any_block_use" | "player_generates_container_loot" | "thrown_item_picked_up_by_entity" | "thrown_item_picked_up_by_player" | "player_interacted_with_entity" | "player_sheared_equipment" | "started_riding" | "lightning_strike" | "using_item" | "fall_from_height" | "ride_entity_in_lava" | "kill_mob_near_sculk_catalyst" | "allay_drop_item_on_block" | "avoid_vibration" | "recipe_crafted" | "crafter_recipe_crafted" | "fall_after_explosion"
The trigger name a caller is about to raise.
Returns
boolean
Whether raising it could match anything.
load()
load(
advancements):void
Defined in: engine.ts:111
Replaces everything loaded with a new set, rebuilds the parent tree and rebuilds the dispatch index. Tree faults go to the engine's collector.
Parameters
advancements
Iterable<ParsedAdvancement>
Returns
void
raise()
raise<
K>(trigger,event,progress,at?): readonlystring[]
Defined in: engine.ts:144
Routes one game event to the criteria listening for its trigger and records every criterion it satisfies.
Type Parameters
K
K extends "villager_trade" | "enchanted_item" | "impossible" | "player_killed_entity" | "entity_killed_player" | "enter_block" | "inventory_changed" | "recipe_unlocked" | "player_hurt_entity" | "entity_hurt_player" | "filled_bucket" | "brewed_potion" | "construct_beacon" | "used_ender_eye" | "summoned_entity" | "bred_animals" | "location" | "slept_in_bed" | "cured_zombie_villager" | "item_durability_changed" | "levitation" | "changed_dimension" | "tick" | "tame_animal" | "placed_block" | "consume_item" | "effects_changed" | "used_totem" | "nether_travel" | "fishing_rod_hooked" | "channeled_lightning" | "shot_crossbow" | "spear_mobs" | "killed_by_arrow" | "hero_of_the_village" | "voluntary_exile" | "slide_down_block" | "bee_nest_destroyed" | "target_hit" | "item_used_on_block" | "default_block_use" | "any_block_use" | "player_generates_container_loot" | "thrown_item_picked_up_by_entity" | "thrown_item_picked_up_by_player" | "player_interacted_with_entity" | "player_sheared_equipment" | "started_riding" | "lightning_strike" | "using_item" | "fall_from_height" | "ride_entity_in_lava" | "kill_mob_near_sculk_catalyst" | "allay_drop_item_on_block" | "avoid_vibration" | "recipe_crafted" | "crafter_recipe_crafted" | "fall_after_explosion"
Parameters
trigger
K
event
progress
The player's store, updated in place.
at?
string = ...
ISO-8601 instant to record on each criterion; defaults to now.
Returns
readonly string[]
Namespaced ids of the advancements this event completed, in the order they completed. An advancement already done completes no second time and fires no second reward.