Placeholders
AstralFarmPass registers one root placeholder namespace, farmpass, plus three chainable ComplexPlaceholder types (quest, blueprint, reward) reached through it. For the placeholder syntax itself (%a_b_c%, %a_{b_c}%) see AstralCore's Placeholders.
farmpass_* (root)
FarmPassPlaceholders — requires a Player context (context.context() instanceof Player); resolves to null for a non-player context.
Placeholder | Type | Description |
|---|---|---|
| int | The player's current season point balance ( |
| ItemProvider<QuestInstance> | The player's non-expired quest instances ( |
| ItemProvider<RewardBlueprint> | Every loaded reward blueprint from |
ItemProvider results are meant to back a menu layout's provider: — iterating exposes each element as a quest_* or reward_* placeholder in turn. See Placeholders for ItemProvider chains (%..._size%, %..._at_<n>%, %..._iterator%).
quest_*
A QuestInstance placeholder (namespace quest). Reached via %farmpass_quests% or any menu parameter a quest layout supplies.
Placeholder | Type | Description |
|---|---|---|
| UUID | The quest instance's unique id. |
| Blueprint | The |
| String | The category id ( |
| ItemStack | The blueprint's |
| Time | The instance's unlock timestamp — chain into |
| boolean |
|
| int | The randomly-rolled target amount for this instance. |
| int | The player's current progress toward |
| Time | The instance's expiry timestamp — chain into |
| boolean |
|
| boolean |
|
%required%/%total% inside quest_item
Resolving %quest_item% registers two extra placeholders directly on the placeholder container before evaluating the blueprint's display: required (the instance's current progress) and total (its target). These are only meaningful inside that display's own name/lore template — use them as bare %required%/%total%, not chained under quest_:
blueprint_*
A QuestBlueprint placeholder (namespace blueprint). Reached via %quest_blueprint%.
Placeholder | Type | Description |
|---|---|---|
| String | The blueprint's key from |
| ItemStackWrapper | The blueprint's unresolved display template. |
| QuestGoal | The blueprint's gameplay-trigger goal object. See Quests & Goals. |
reward_*
A RewardBlueprint placeholder (namespace reward). Reached via %farmpass_rewards%.
Placeholder | Type | Description |
|---|---|---|
| String | The reward's key from |
| int | The |
| ItemStack | The tier's free ( |
| ItemStack | The tier's premium display item, resolved against the current context — |
| boolean |
|
| boolean |
|
| boolean | Player-scoped. |
| boolean | Player-scoped. Same check for |
| boolean | Player-scoped. |
| boolean | Player-scoped. Same check for the premium tier. |
claimed/available require a next token (free or premium, case-insensitive — parsed by RewardType.parse) and a Player context; both resolve to null without a next token or a non-player context.
Usage: the main menu
quest_*/reward_* placeholders don't appear as free-standing %quest_...% strings in configs — they're produced by iterating %farmpass_quests%/%farmpass_rewards% through a menu layout, and evaluated once per iteration inside that layout's item template. The shipped farmpass-main menu wires the quest grid this way:
For each slot the quests layout renders, AstralCore's LayoutInstance registers the current provider element under a parameter key equal to that element's own placeholder namespace — since QuestInstance's namespace is quest, that's the key quest. %parameter_quest_item% therefore resolves parameter → quest (the current QuestInstance) → item (its own item case), i.e. it's equivalent to %quest_item% evaluated against that instance. The quest item's copy-from pulls that fully-resolved ItemStack — target/progress lore and all — into the slot.
The shipped farmpass-main menu only wires this one quests layout — it defines no layout or item for %farmpass_rewards%. The same provider/parameter pattern applies if a server adds a reward-tier layout: a reward item would read %parameter_reward_...% (or bare %reward_...%, depending on how it's bound), and would typically check %reward_available_free%/%reward_claimed_free% to decide which lore or action to show before firing claim-farmpass-reward.