How to Set Up Your First Revelation Datapack
Creating the Folder Structure
Revelationary reads revelations from data/<your_namespace>/revelations/. Create that folder inside your datapack's data directory. Each revelation is its own JSON file, and the filename becomes its identifier, so name it something meaningful like reveal_diamond_ore.json. The namespace must match the one you use elsewhere in your pack.
Writing a Revelation File
Inside the JSON you declare which block states and items are disguised and what they map to. You provide a block_states (or equivalent) mapping of the fake block to the real block, an items mapping for inventory disguises, and a pointer to the advancement that gates visibility. The advancement is the trigger: when a player earns it, the revelation fires for that player. Keep the fake block and the real block visually distinct enough that players notice the change.
Testing In-Game
Load the datapack with /reload, then check that the disguised blocks appear as intended. Grant yourself the linked advancement with /advancement grant @s only <advancement_id> and confirm the
blocks swap to their real forms. If nothing changes, verify the advancement ID, the namespace, and that the JSON parses without errors in the log.