Skip to content

Built-in Compatibility

Relic provides Journey event integration and MoLang functions for task creation and progression tracking.


Relic fires Journey events that can be used in task subtasks. These follow the same pattern as Cobblemon events.

Fires when a player uses a relic catalyst on an item.

Query Paths:

q.relic.item // The item being transformed (e.g., "minecraft:diamond_pickaxe")
q.relic.catalyst // The catalyst item used

Example:

{
"id": "use_catalyst",
"name": "Use a Relic Catalyst",
"event": "RELIC_CATALYST_USED",
"filter": "1.0",
"target": 1
}

Specific Item Filter:

{
"event": "RELIC_CATALYST_USED",
"filter": "q.relic.item == 'minecraft:diamond_pickaxe'",
"target": 1
}

Fires when a relic is successfully created.

Query Paths:

q.relic.item // Base item type
q.relic.essence // Essence capacity

Example:

{
"id": "awaken_relic",
"name": "Awaken Your First Relic",
"event": "RELIC_AWAKENED",
"filter": "1.0",
"target": 1
}

Fires when a relic gains renown (experience).

Query Paths:

q.relic.renown // Amount of renown gained this event
q.relic.total_renown // Total renown on the relic
q.relic.source // Source of renown ("block_break", "entity_kill", etc.)
q.relic.level // Current relic level

Example - Track Total Renown:

{
"id": "gain_renown",
"name": "Gain 1000 Renown",
"event": "RELIC_RENOWN_GAINED",
"filter": "1.0",
"target": 1000
}

Filter by Source:

{
"event": "RELIC_RENOWN_GAINED",
"filter": "q.relic.source == 'block_break'",
"target": 500
}

Fires when a relic levels up.

Query Paths:

q.relic.level // New level
q.relic.previous // Previous level
q.relic.sockets // Total sockets now unlocked

Example:

{
"id": "reach_level_5",
"name": "Reach Level 5",
"event": "RELIC_LEVEL_UP",
"filter": "q.relic.level >= 5.0",
"target": 1
}

Specific Level:

{
"event": "RELIC_LEVEL_UP",
"filter": "q.relic.level == 10.0",
"target": 1
}

Fires when a relic unlocks a new inscription socket.

Query Paths:

q.relic.sockets // Total sockets unlocked
q.relic.level // Level at unlock

Example:

{
"id": "unlock_socket",
"name": "Unlock First Socket",
"event": "RELIC_SOCKET_UNLOCKED",
"filter": "q.relic.sockets == 1.0",
"target": 1
}

Fires when an inscription is installed into a relic.

Query Paths:

q.inscription.id // Inscription identifier
q.relic.essence_used // Total essence used after install

Example:

{
"id": "install_inscription",
"name": "Install Any Inscription",
"event": "RELIC_INSCRIPTION_INSTALLED",
"filter": "1.0",
"target": 1
}

Specific Inscription:

{
"event": "RELIC_INSCRIPTION_INSTALLED",
"filter": "q.inscription.id == 'vein_miner'",
"target": 1
}

Fires when an inscription is removed from a relic.

Query Paths:

q.inscription.id // Inscription that was removed
q.relic.essence_freed // Essence freed by removal

Example:

{
"id": "remove_inscription",
"name": "Remove an Inscription",
"event": "RELIC_INSCRIPTION_REMOVED",
"filter": "1.0",
"target": 1
}

Relic provides MoLang query functions for use in task filters and requirements.

q.player.has_relic()

{
"start_requirement": "q.player.has_relic()",
"filter": "q.player.has_relic()"
}

q.player.has_relic_type('item_type')

{
"filter": "q.player.has_relic_type('pickaxe')"
}

q.player.relic_count()

{
"start_requirement": "q.player.relic_count() >= 3.0"
}

q.player.has_inscription_unlocked('inscription_id')

{
"start_requirement": "q.player.has_inscription_unlocked('chain_lightning')"
}

q.player.total_relics_renown()

{
"start_requirement": "q.player.total_relics_renown() >= 100000.0"
}

These query the relic currently held/equipped by the player:

q.held_relic.level

{
"filter": "q.held_relic.level >= 50.0"
}

q.held_relic.renown

{
"filter": "q.held_relic.renown >= 10000.0"
}

q.held_relic.essence_capacity

{
"filter": "q.held_relic.essence_capacity >= 20.0"
}

q.held_relic.essence_used

{
"filter": "q.held_relic.essence_used >= 15.0"
}

q.held_relic.socket_count

{
"filter": "q.held_relic.socket_count >= 3.0"
}

q.held_relic.has_inscription('inscription_id')

{
"filter": "q.held_relic.has_inscription('vein_miner')"
}

q.held_relic.inscription_count

{
"filter": "q.held_relic.inscription_count >= 4.0"
}

Relic provides script functions for Journey rewards.

Give Renown:

{
"type": "script",
"data": {
"scripts": [
"q.player.add_relic_renown(1000);"
]
}
}

Set Relic Level:

{
"type": "script",
"data": {
"scripts": [
"q.player.set_held_relic_level(25);"
]
}
}

Unlock Inscription:

{
"type": "script",
"data": {
"scripts": [
"q.player.unlock_inscription('chain_lightning');"
]
}
}

Multiple Inscriptions:

{
"type": "script",
"data": {
"scripts": [
"q.player.unlock_inscription('vein_miner');",
"q.player.unlock_inscription('auto_smelt');",
"q.player.unlock_inscription('fortune_glyph');"
]
}
}

Here’s a proper Journey task that teaches players the Relic system:

File: config/journey/tasks/relic_tutorial.json

{
"name": "<gold>Forging Your First Relic",
"description": [
"<gray>Learn the ancient art of relic crafting",
"<yellow>and unlock legendary power!"
],
"sequential": "sequential",
"icon": {
"item_id": "minecraft:echo_shard"
},
"repeat_type": "NONE",
"repeat_interval": 0,
"rewards": [
{
"type": "currency",
"data": {
"currency": "impactor:pokedollars",
"amount": 500
}
},
{
"type": "command",
"data": {
"command": "tellraw {player} {\"text\":\"You've mastered the basics of Relic crafting!\",\"color\":\"gold\"}"
}
}
],
"tasks": [
{
"id": "earn_catalyst",
"name": "<blue>Earn Your Catalyst",
"description": "<gray>Mine 100 stone blocks to prove your dedication",
"event": "BLOCK_BREAK",
"filter": "q.block.id == 'minecraft:stone'",
"target": 100,
"rewards": [
{
"type": "command",
"data": {
"command": "filament give {player} relic:common_catalyst 1"
}
},
{
"type": "command",
"data": {
"command": "tellraw {player} {\"text\":\"You've earned a Relic Catalyst! Use it on a diamond tool.\",\"color\":\"aqua\"}"
}
}
]
},
{
"id": "awaken_relic",
"name": "<blue>Awaken a Relic",
"description": "<gray>Use your catalyst on a diamond pickaxe",
"event": "RELIC_AWAKENED",
"filter": "1.0",
"target": 1,
"rewards": [
{
"type": "command",
"data": {
"command": "tellraw {player} {\"text\":\"Your relic awakens! Mine blocks to gain Renown.\",\"color\":\"green\"}"
}
}
]
},
{
"id": "gain_renown",
"name": "<blue>Gain Renown",
"description": "<gray>Mine blocks to gain 500 Renown",
"event": "RELIC_RENOWN_GAINED",
"filter": "1.0",
"target": 500,
"rewards": [
{
"type": "command",
"data": {
"command": "tellraw {player} {\"text\":\"Your relic grows in power! Keep using it to level up.\",\"color\":\"yellow\"}"
}
}
]
},
{
"id": "level_up",
"name": "<blue>Reach Level 5",
"description": "<gray>Level your relic to 5 to unlock a socket",
"event": "RELIC_LEVEL_UP",
"filter": "q.relic.level >= 5.0",
"target": 1,
"rewards": [
{
"type": "script",
"data": {
"scripts": [
"q.player.unlock_inscription('swift_mining');"
]
}
},
{
"type": "command",
"data": {
"command": "tellraw {player} {\"text\":\"Level 5! Socket unlocked. You've learned Swift Mining.\",\"color\":\"light_purple\"}"
}
}
]
},
{
"id": "install_inscription",
"name": "<blue>Install an Inscription",
"description": "<gray>Open your Relic GUI (/relic) and install Swift Mining",
"event": "RELIC_INSCRIPTION_INSTALLED",
"filter": "1.0",
"target": 1,
"rewards": [
{
"type": "script",
"data": {
"scripts": [
"q.player.add_relic_renown(1000);"
]
}
},
{
"type": "currency",
"data": {
"currency": "impactor:pokedollars",
"amount": 200
}
},
{
"type": "command",
"data": {
"command": "tellraw {player} {\"text\":\"Inscription installed! Your relic is now enhanced.\",\"color\":\"gold\"}"
}
}
]
}
]
}

{
"name": "<gold>Path to Power",
"sequential": "sequential",
"tasks": [
{
"id": "defeat_boss",
"name": "Defeat the Boss",
"event": "BATTLE_VICTORY",
"filter": "q.battle.is_boss()",
"target": 1,
"rewards": [
{
"type": "script",
"data": {
"scripts": [
"q.player.unlock_inscription('chain_lightning');"
]
}
}
]
}
]
}
{
"name": "<gold>Master's Challenge",
"start_requirement": "q.player.has_relic() && q.held_relic.level >= 50.0",
"tasks": [...]
}
{
"rewards": [
{
"type": "command",
"data": {
"command": "filament give {player} relic:common_catalyst 1"
}
}
]
}

Different Catalyst Tiers:

{
"type": "command",
"data": {
"command": "filament give {player} relic:rare_catalyst 1"
}
}
{
"type": "command",
"data": {
"command": "filament give {player} relic:legendary_catalyst 1"
}
}
{
"name": "<gold>Vein Mining Mastery",
"start_requirement": "q.player.has_inscription_unlocked('vein_miner')",
"tasks": [
{
"id": "use_vein_miner",
"name": "Mine Ore Veins",
"description": "Use Vein Miner to mine ore",
"event": "BLOCK_BREAK",
"filter": "q.held_relic.has_inscription('vein_miner') && q.block.has_tag('c:ores')",
"target": 100
}
]
}

Do:

  • Use RELIC_RENOWN_GAINED for tracking total renown gained
  • Filter by source when tracking specific activities
  • Use level filters (>=) not exact matches (==) for flexibility
  • Test filters with real relic items

Don’t:

  • Expect RELIC_RENOWN_GAINED to fire once per block (it fires per event with amount)
  • Forget decimal points on number comparisons (5.0 not 5)
  • Chain too many relic requirements (makes quests inaccessible)

Do:

  • Use q.player.has_relic() before checking held_relic properties
  • Check inscription unlock before requiring installation
  • Use >= for level checks to handle over-leveled relics

Don’t:

  • Query held_relic without checking if relic exists
  • Assume inscription IDs (verify actual IDs in data packs)
  • Mix up q.relic.* (event context) with q.held_relic.* (player query)

Do:

  • Reward inscriptions through meaningful progression
  • Grant catalysts sparingly (they create new relics)
  • Give bonus renown for quest milestones
  • Use tellraw for player guidance

Don’t:

  • Give unlimited catalysts (trivializes system)
  • Unlock all inscriptions at once
  • Grant excessive renown (skips progression)

EventTriggersTarget BehaviorKey Queries
RELIC_CATALYST_USEDCatalyst usedCounts usesq.relic.item, q.relic.catalyst
RELIC_AWAKENEDRelic createdCounts awakeningsq.relic.item, q.relic.essence
RELIC_RENOWN_GAINEDRenown earnedSums renownq.relic.renown, q.relic.source
RELIC_LEVEL_UPLevel increaseCounts level upsq.relic.level, q.relic.previous
RELIC_SOCKET_UNLOCKEDSocket opensCounts unlocksq.relic.sockets, q.relic.level
RELIC_INSCRIPTION_INSTALLEDInscription addedCounts installsq.inscription.id
RELIC_INSCRIPTION_REMOVEDInscription removedCounts removalsq.inscription.id

This documentation reflects the actual Journey task format and event system. All examples follow the same patterns as verified Journey configurations.