All Mods Resource Packs Data Packs Shaders Modpacks Plugins
Revelationary

Revelationary

by DaFuqs • Downloads: 0 • Followers: 0
Description
Gallery
Changelog
Versions

Overview

Data Driven Block and Item Revelation system. Discover as you go!

Revelationary adds a way to gate the discovery of new blocks in the world via data pack, or API (for other mods). Using Revelationary, you can design your packs / mods progression in a way the player does not feel overwhelmed when starting a new playthrough. They can only perceive these worldgen blocks when they unlocked a specific advancement, making the block visible for them.

Example: The player sees a specific ore as stone. As they defeat the enderdragon they can now see and mine your ore in the world - it was always there from the start. Individual for each player and very performant.

Revelations

"[a] revelation is the revealing or disclosing of some form of truth or knowledge"

If you are the designer of a progression based mod or modpack you have come to the right place.

With Revelationary, you are able to use Data Packs or the Revelation API to gradually reveal blocks in the world as the player progresses. A plain stone filled cleft might be revealed as bursting with life and ore as the player defeats a boss or reaches an important milestone.

As long as a player does not have the necessary progress the blocks and items you register with Revelationary via API or Data Pack will just have cryptic names and in case of blocks in the world, will drop the same drops as the block it is disguised as, giving the player a seamless experience without getting flooded with unknown resources that they are not able to use at the start. Instead you can introduce resources just as they are needed.

Limitations

Besides visuals and drops, disguised blocks retain all the properties of the original block: Hitbox, if light passes through and everything else. Keep that in mind when searching for fitting candidates. A perfect disguise for your Ore would be stone or deepslate, since these share a lot of similarities. Similarly you could disguise your elusive plant with a poppy: Both have a small hitbox and players can walk through them.

If you are a programmer you can use the Revelation API to dynamically change your blocks properties depending on if they are visible to the player, or not. This way you could even disguise your flower as air: Giving it an empty hitbox when disguised, your players might not even know it is there until they can see them!

Find lots of examples for data packs & the API in Revelationary's wiki: https://github.com/DaFuqs/Revelationary/wiki

Registering Revelations via Data Pack

Have to be placed in the folder resources/data/<<mod_id>>/revelations

{
  "advancement": "spectrum:milestones/reveal_quitoxic_reeds",
  "block_states": {
    "minecraft:grass": "minecraft:beacon",
    "minecraft:tall_grass": "minecraft:obsidian",
    "minecraft:tall_grass[half=upper]": "minecraft:netherite_block"
  },
  "items": {
    "minecraft:nether_star": "minecraft:gunpowder"
  }
}

Registering a "revelation aware" block or item

public class CloakedItem extends Item implements RevelationAware {

    Identifier cloakAdvancementIdentifier;
    Item cloakItem;

    public CloakedItem(Settings settings, Identifier cloakAdvancementIdentifier, Item cloakItem) {
        super(settings);
        this.cloakAdvancementIdentifier = cloakAdvancementIdentifier;
        this.cloakItem = cloakItem;

        registerCloak();
    }

    @Override
    public Identifier getCloakAdvancementIdentifier() {
        return cloakAdvancementIdentifier;
    }

    @Override
    public Hashtable<BlockState, BlockState> getBlockStateCloaks() {
        return new Hashtable<>();
    }

    @Override
    public Pair<Item, Item> getItemCloak() {
        return new Pair<>(this, cloakItem);
    }

    @Override
    public void onCloak() { }

    @Override
    public void onUncloak() { }

}

Registering a Callback when Revelations happen

RevelationHolder.registerRevelationCallback(new RevelationHolder.UncloakCallback() {
    @Override
    public void trigger(List<Identifier> advancements, List<Block> blocks, List<Item> items) {
        for(Block block : blocks) {
            if(Registry.BLOCK.getId(block).getNamespace().equals(MOD_ID)) {
                ...
                <I dunno. Like show a popup or something. You tell me>
                ...
                break
            }
        }
    }
});

Discord

You will find a lot of helpful people on Spectrum's Discord. There always are friendly and helpful people around. Swing around too, if you like!

https://discord.com/invite/EXU9XFXT8a

All Versions

+ Add Version
Name Game version Platforms Published Downloads Actions
1.21.1
Neoforge
23h ago 1
1.21.1
Neoforge
23h ago 1
26.2
Fabric
23h ago 1
1.21.1
Neoforge
23h ago 1
1.21.1
Neoforge
23h ago 1
26.1.x
Fabric
23h ago 1
1.21.1
Neoforge
23h ago 1
1.21.x
Fabric
23h ago 1
1.21.5
Fabric
23h ago 1
1.21.1
Neoforge
23h ago 1
1.21.1
Fabric
23h ago 1
1.21.5
Fabric
23h ago 1
1.21.1
Fabric
23h ago 1
1.21.4
Fabric
23h ago 1
1.20.1
Fabric
23h ago 1
1.20.1
Fabric Quilt
23h ago 1
1.20.x
Fabric Quilt
23h ago 1
1.20.1
Fabric
23h ago 1
1.20.1
Fabric Quilt
23h ago 1
1.20.2
Fabric Quilt
23h ago 1
1.19.4
Fabric Quilt
23h ago 1
1.20.1
Fabric
23h ago 1
1.19.3
Fabric Quilt
23h ago 1
1.19.2
Fabric Quilt
23h ago 1
1.19.3
Fabric Quilt
23h ago 1
1.19.2
Fabric
23h ago 1
1.19.3
Fabric
23h ago 1
1.19.2
Fabric
23h ago 1
1.19
Fabric
23h ago 1
1.19.2
Fabric
23h ago 1
1.19.3
Fabric
23h ago 1
1.19.3
Fabric
23h ago 1
1.19.2
Fabric
23h ago 1
1.18.2
Fabric
23h ago 1
1.19.2
Fabric
23h ago 1
1.19.2
Fabric
23h ago 1
1.18.2
Fabric
23h ago 1
1.19.2
Fabric
23h ago 1
1.18.2
Fabric
23h ago 1
1.19.2
Fabric
23h ago 1
1.18.2
Fabric
23h ago 1
A recent update to NeoForge made fake players not have advancements anymore.
This update makes fake player checks in Revelationary api correctly return the Fake-Player-Owners advancements again, as long as the fake player uses the same profile UUID as its placer. It is a bit more ugly now, but it *does* work again.

The Neo change in question: https://github.com/neoforged/NeoForge/pull/3260
Improved fake player recognition
Jade compat
Added missing icon in mod menu
Minor EMI compat fix
Ported to 1.20.5.
Thank you, pizzer!
Added compat with Sinytra Connector.
Thank you lots, eehunter!
Fixed startup issue on Quilt
Updated to 1.20.2
1.19.4 port
Updated to 1.20.1
Improved handing of advancement-reset packets from server->client
Improved handing of advancement-reset packets from server->client
  • Added a new advancement criterion "advancement_count". It can match gotten advancements with min/max counts.
  • Invalid revelations now log an error
  • Added a new advancement criterion "advancement_count". It can match gotten advancements with min/max counts.
  • Invalid revelations now log an error
  • Added a new advancement criterion "advancement_count". It can match gotten advancements with min/max counts.
  • Invalid revelations now log an error
  • Added a new advancement criterion "advancement_count". It can match gotten advancements with min/max counts.
  • Invalid revelations now log an error
  • Added a new advancement criterion "advancement_count". It can match gotten advancements with min/max counts.
  • Invalid revelations now log an error
  • Added Commands to sync player progress, unlock specific advancement trees and more (thanks a lot Maya & Falseresync!)

  • Fixed drops for mods using the RevelationAware interface on dedicated servers

  • Added a new config system with various settings around revelations
  • Added Commands to sync player progress, unlock specific advancement trees and more (thanks a lot Maya & Falseresync!)

  • Fixed drops for mods using the RevelationAware interface on dedicated servers

  • Added a new config system with various settings around revelations
[1.2.0] 1.2.0-1.19.3 by DaFuqs on Oct 14, 2026
Download
Added a config! Here you are able to specify to use the name of cloaked blocks / items to use their target blocks / items, or specify your own.
[1.2.0] 1.2.0-1.19.2 by DaFuqs on Oct 14, 2026
Download
Added a config! Here you are able to specify to use the name of cloaked blocks / items to use their target blocks / items, or specify your own.
[1.1.0] 1.1.0-1.18.2 by DaFuqs on Oct 14, 2026
Download
  • Added ability to add alternate translations for not yet revealed items and blocks.
  • Syncing Revelation data from server to client on join
[1.1.0] 1.1.0-1.19.2 by DaFuqs on Oct 14, 2026
Download
  • Added ability to add alternate translations for not yet revealed items and blocks.
  • Syncing Revelation data from server to client on join
  • More failsafe handling of block drops in combination with other mods that modify block drops.
  • Fixed trying to load a mixin on dedicated servers for a class that does not exist. (cosmetic error)
[1.0.2] 1.0.2 by DaFuqs on Oct 14, 2026
Download
  • More failsafe handling of block drops in combination with other mods that modify block drops.
  • Fixed trying to load a mixin on dedicated servers for a class that does not exist. (cosmetic error)
Sodium compat
[1.0.1+1.18.2] 1.0.1 by DaFuqs on Oct 14, 2026
Download
Sodium compat
Updated to 1.19.2
[1.0.0] 1.0.0 by DaFuqs on Oct 14, 2026
Download
Initial Release
Revelationary Icon
Download Revelationary
Select game version
Select platform