AoA Core is the foundational layer of the pack's narrative control plane. It introduces a typed NarrativeEvent system on top of NeoForge.EVENT_BUS, a PlayerLedger persisted via NeoForge AttachmentType, the Soul Pact team item, the Unidentified Mineral ore-vision item, the Investiture Altar block, and stage-held conditions for recipes and loot.
The contract surface is two-phase: NarrativeEvent.Pre is cancellable for validation (witness checks, cooldowns), and NarrativeEvent.Post fires the consequences (ledger writes, downstream stage grants, ore reveal logic). Persistence survives death without copy() boilerplate. Both AStages and Curios are optional — when AStages is present, stage grants flow through AStagesBridge; when Curios is present, the Soul Pact occupies its slot. With either missing, the bus and ledger still function and the affected features degrade rather than crash.
v0.1.0 ships:
- NarrativeEvent bus —
NarrativeEvent.Pre/Post, NarrativeDispatcher, NarrativeEventType builder, NarrativeEventCategory, two registered events out of the box (aoacore:test_event, aoacore:investiture) and a NarrativeDebugListener for verifying dispatch end-to-end
- Witness Ledger —
PlayerLedger AttachmentType, LedgerEntry and IndexEntry records, LedgerEventType + LedgerRole, immutable LedgerAPI for read access, single-entry-point LedgerWriter
- Team layer —
AoaTeam, AoaPlayerRecord, AoaTeamEvents
- Soul Pact item +
SoulPactScreen management GUI (registered through AoaCoreMenuTypes)
- Unidentified Mineral item +
OreVisionEvents + RestrictedOreIndex for substitution and reveal logic
- Investiture Altar block (
com.aoa.core.world.InvestitureAltarBlock) registered through AoaCoreBlocks
aoacore:stage_held recipe condition + matching loot condition (StageHeldRecipeCondition, StageHeldLootCondition)
AoaHotfix SPI interface + HotfixRegistry for service-loader-discovered downstream mods
AStagesBridge — active when AStages is loaded, no-op otherwise
- Commands via
AoaCoreCommands — narrative event dispatch with grant_personal / grant_team, event lookup by display_name / event_name
Dependencies:
- NeoForge
[21.1.228,) — required
- Minecraft
[1.21.1, 1.21.2) — required
- AStages
[2.0.3,) — optional (stage grant bridge; mod functions without it)
- Curios
[9.5.1,) — optional (Soul Pact slot binding)
License: All Rights Reserved.
Scope: Built specifically for the Ascension of Ages modpack. Registered narrative event types and the Investiture altar are pack-canon. Not designed for general-purpose reuse.