Skip to content

Quest Markers

Quest markers are 3D floating displays that appear in the world to guide players toward objectives. A glowing ”!” over a quest giver, a beacon beam at a distant event, a floating sword showing where to fight — markers make your quests feel like a real adventure.


Markers defined inside task configs appear and disappear automatically based on task state:

  • available_marker on a task — Shows when the task is available but not started
  • marker on a subtask — Shows when that subtask is active

Markers stored in config/journey/markers/ are controlled manually via commands or scripts.


Every marker has 5 fields:

{
"position": {"x": 100.5, "y": 64.0, "z": 200.5},
"dimension": "minecraft:overworld",
"display_data": { ... },
"visibility_condition": "1.0",
"range": 64.0
}
FieldTypeDefaultDescription
positionObjectRequiredWorld coordinates {x, y, z}
dimensionStringRequiredDimension ID (e.g., "minecraft:overworld")
display_dataObjectRequiredHow the marker looks (see below)
visibility_conditionString"1.0"Molang expression controlling per-player visibility
rangeNumber64.0Maximum distance (in blocks) at which the marker is visible

The display_data object controls the marker’s visual appearance:

{
"name": "Quest Marker",
"description": "Important location",
"display_config": { ... },
"rotation": {"x": 0.0, "y": 0.0},
"bobbing": true,
"bobbing_speed": 1.0,
"bobbing_height": 0.3
}
FieldTypeDefaultDescription
nameStringRequiredMarker name (supports color codes)
descriptionStringRequiredDescription text
display_configObjectRequiredDisplay type configuration
rotationObject{x: 0, y: 0}Rotation in degrees (x=yaw, y=pitch)
bobbingBooleanfalseEnable floating up/down animation
bobbing_speedNumber1.0Animation speed multiplier
bobbing_heightNumber0.3How far up/down it bobs (in blocks)

Floating text — great for quest indicators like ”!” or ”?”:

{
"display_config": {
"text": "\u00a76\u00a7l!",
"alignment": "CENTER",
"scale": {"x": 3.0, "y": 3.0, "z": 3.0},
"shadow": false,
"see_through": true,
"billboard": "CENTER"
}
}
FieldDefaultDescription
textRequiredText to display
alignment"CENTER"LEFT, CENTER, or RIGHT
scale{1,1,1}Size multiplier
shadowtrueText shadow
see_throughfalseVisible through blocks
billboard"CENTER"How it faces the player

Floating item — show swords, pokeballs, quest items:

{
"display_config": {
"item": "minecraft:diamond_sword",
"glowing": true,
"scale": {"x": 2.0, "y": 2.0, "z": 2.0},
"billboard": "CENTER"
}
}

Floating block:

{
"display_config": {
"block": "minecraft:lightning_rod",
"glowing": true,
"scale": {"x": 1.5, "y": 1.5, "z": 1.5},
"billboard": "FIXED"
}
}

Continuously spawning Minecraft particles:

{
"display_config": {
"ParticleVanillaConfig": {
"particle_type": "minecraft:end_rod",
"count": 10,
"speed": 0.1,
"spawn_rate": 5
}
}
}

Common particles: minecraft:flame, minecraft:end_rod, minecraft:portal, minecraft:enchant, minecraft:heart

Cobblemon particle effects:

{
"display_config": {
"ParticleSnowstormConfig": {
"effect": "cobblemon:sparkle",
"spawn_rate": 5
}
}
}

Colored beacon beam — visible from far away:

{
"display_config": {
"BeaconConfig": {
"color": 16711680,
"height": 64
}
}
}

Common colors: White 16777215, Red 16711680, Green 65280, Blue 255, Yellow 16776960, Purple 8388736


Controls how the display rotates to face the player:

ModeDescription
FIXEDNo rotation — stays in world orientation
VERTICALRotates horizontally to face player
HORIZONTALRotates vertically to face player
CENTERAlways fully faces the player

Use CENTER for text and items, FIXED for blocks.


Control who can see the marker using Molang:

"visibility_condition": "1.0"

Always visible.

"visibility_condition": "q.player.has_flag('map_unlocked')"

Only visible to players with the flag.

"visibility_condition": "q.player.has_completed_task('journey:intro') && !q.player.has_completed_task('journey:chapter_2')"

Only visible between two quests.


Shows a floating ”!” when a quest is available:

{
"available_marker": {
"position": {"x": 100.5, "y": 66.0, "z": 200.5},
"dimension": "minecraft:overworld",
"display_data": {
"name": "New Quest Available",
"description": "Speak with the Elder",
"display_config": {
"text": "\u00a76\u00a7l!",
"alignment": "CENTER",
"scale": {"x": 4.0, "y": 4.0, "z": 4.0},
"shadow": false,
"see_through": true,
"billboard": "CENTER"
},
"bobbing": true,
"bobbing_speed": 0.8,
"bobbing_height": 0.4
},
"visibility_condition": "!q.player.has_completed_task('journey:intro_quest')",
"range": 64.0
}
}

Shows a glowing sword when a battle subtask is active:

{
"marker": {
"position": {"x": 150.5, "y": 67.0, "z": 250.5},
"dimension": "minecraft:overworld",
"display_data": {
"name": "Gym Leader Battle",
"description": "Challenge the Gym Leader!",
"display_config": {
"item": "minecraft:diamond_sword",
"glowing": true,
"scale": {"x": 2.5, "y": 2.5, "z": 2.5},
"billboard": "CENTER"
},
"bobbing": true,
"bobbing_speed": 1.2,
"bobbing_height": 0.6
},
"visibility_condition": "1.0",
"range": 128.0
}
}

Visible from far away at an event location:

{
"available_marker": {
"position": {"x": 0.5, "y": 64.0, "z": 0.5},
"dimension": "minecraft:overworld",
"display_data": {
"name": "Festival Location",
"description": "The celebration awaits!",
"display_config": {
"BeaconConfig": {
"color": 16711680,
"height": 128
}
},
"bobbing": false
},
"visibility_condition": "q.player.has_flag('festival_active')",
"range": 256.0
}
}

  • Text + CENTER billboard for quest indicators (always readable)
  • Items + glowing for objectives (visually distinct)
  • Beacons for long-distance waypoints (visible from 256+ blocks)
  • Bobbing makes markers feel alive — use it on most markers
  • Visibility conditions prevent clutter — only show markers when relevant
  • Use see_through: true on important text markers so they’re visible through terrain