Skip to content

Interactive Marker Builder

Create Journey marker configurations without writing JSON manually. This interactive builder helps you create 3D floating displays (text, item, or block) for quest guidance through an easy-to-use form.

Marker Information

Lowercase with underscores, no spaces
X
Y
Z
World coordinates for marker
Dimension identifier (minecraft:overworld, minecraft:the_nether, minecraft:the_end)
Distance in blocks that marker is visible from (1-512)

Display Settings

MiniMessage formatted text
Text size multiplier (0.1-5.0)

Animation Settings

X (Pitch)
Y (Yaw)
Rotation angles (optional)

Visibility

MoLang expression (1.0 = always visible)

JSON Preview

 

  1. Fill in marker details - ID, position, dimension
  2. Choose display type - text, item, or block display
  3. Configure display settings - scale, rotation, bobbing
  4. Set visibility conditions - MoLang expressions
  5. Add task integration - marker phases for quest progression
  6. Copy the generated JSON to your clipboard
  7. Save to config/journey/markers/your-marker-name.json

  • Use namespaced format: journey:your_marker
  • Keep it descriptive and unique
  • Use lowercase with underscores

Set the exact world coordinates for the marker:

{
"position": {
"x": 100.5,
"y": 65.0,
"z": 200.5
},
"dimension": "minecraft:overworld"
}

Tips:

  • Use .5 coordinates to center on blocks
  • Set Y slightly above ground for visibility
  • For exclamation marks, place 2-3 blocks above NPC heads

Markers support three display types using Minecraft 1.19.4+ display entities.

Floating text with formatting support:

{
"display_data": {
"name": "§e§l! §rNew Quest Available",
"description": "Talk to the Quest Giver",
"display_config": {
"text": "§6§l!",
"line_spacing": 1.0,
"background_color": 0,
"text_opacity": -1,
"shadow": true,
"see_through": true,
"alignment": "CENTER",
"scale": {"x": 3.0, "y": 3.0, "z": 3.0}
}
}
}

Text Formatting:

  • Use § color codes or MiniMessage
  • \n for multiple lines
  • Supports all Minecraft text formatting

Alignment Options:

  • LEFT
  • CENTER
  • RIGHT

Floating items (great for quest objectives):

{
"display_data": {
"name": "Collect Quest Item",
"description": "Find and collect this item",
"display_config": {
"item": "minecraft:diamond",
"count": 1,
"custom_model_data": 0,
"glowing": true,
"scale": {"x": 2.0, "y": 2.0, "z": 2.0}
}
}
}

Item Options:

  • Any Minecraft or modded item
  • Custom model data support
  • Glow effect available
  • NBT data support

Floating blocks (good for landmarks):

{
"display_data": {
"name": "Important Location",
"description": "Key story location",
"display_config": {
"block": "minecraft:beacon",
"block_state": "",
"glowing": true,
"scale": {"x": 1.5, "y": 1.5, "z": 1.5}
}
}
}

Block Options:

  • Any Minecraft or modded block
  • Block state properties
  • Glow effect available

Make markers float up and down:

{
"bobbing": true,
"bobbing_speed": 1.0,
"bobbing_height": 0.3
}

Speed Guidelines:

  • Slow: 0.5
  • Normal: 1.0
  • Fast: 2.0

Height Guidelines:

  • Subtle: 0.1-0.2
  • Normal: 0.3-0.5
  • Dramatic: 0.6-1.0

Rotate markers over time:

{
"rotation": {
"x": 0.0,
"y": 45.0
},
"rotate_speed": 0.5
}

Rotation Axes:

  • x: Pitch (up/down tilt)
  • y: Yaw (spinning)

Always visible:

{
"visibility_condition": "1.0"
}

Always hidden:

{
"visibility_condition": "0.0"
}

Show only if player has quest:

{
"visibility_condition": "q.player.has_task('journey:main_quest');"
}

Hide after quest completion:

{
"visibility_condition": "q.player.has_completed_task('journey:main_quest') == 0.0;"
}

Show only in specific zone:

{
"visibility_condition": "q.player.is_in_zone('journey:town_zone');"
}

Show only during daytime:

{
"visibility_condition": "q.world.is_day;"
}

Multiple requirements:

{
"visibility_condition": "q.player.has_task('journey:quest_1') && q.player.level >= 10.0;"
}

Update markers during quest progression:

{
"marker_phase": "phase_1"
}

In task configuration:

{
"task_id": "journey:my_quest",
"phases": [
{
"id": "phase_1",
"markers": ["journey:quest_start_marker"]
},
{
"id": "phase_2",
"markers": ["journey:quest_middle_marker"]
}
]
}

Phase Benefits:

  • Update marker positions as quest progresses
  • Show/hide different markers per phase
  • Guide players through multi-step quests

Control how far away markers are visible:

{
"range": 64.0
}

Distance Guidelines:

  • Close range (16-32): Detail markers, NPC indicators
  • Medium range (32-64): Quest objectives, POIs
  • Long range (64-128): Landmarks, major locations

Performance Note: Lower range = better performance


{
"id": "journey:quest_giver_mark",
"position": {"x": 100.5, "y": 67.0, "z": 200.5},
"dimension": "minecraft:overworld",
"display_data": {
"name": "§e§l! §rNew Quest Available",
"description": "Talk to the Quest Giver",
"display_config": {
"text": "§6§l!",
"background_color": 0,
"text_opacity": -1,
"shadow": true,
"see_through": true,
"alignment": "CENTER",
"scale": {"x": 3.0, "y": 3.0, "z": 3.0}
},
"bobbing": true,
"bobbing_speed": 1.0,
"bobbing_height": 0.3
},
"visibility_condition": "q.player.has_completed_task('journey:intro_quest') == 0.0;",
"range": 48.0
}
{
"id": "journey:diamond_objective",
"position": {"x": 250.5, "y": 65.0, "z": -100.5},
"dimension": "minecraft:overworld",
"display_data": {
"name": "Collect Diamonds",
"description": "Mine 10 diamonds for the quest",
"display_config": {
"item": "minecraft:diamond",
"count": 1,
"glowing": true,
"scale": {"x": 2.0, "y": 2.0, "z": 2.0}
},
"rotation": {"x": 0.0, "y": 0.0},
"bobbing": true,
"bobbing_speed": 0.8,
"bobbing_height": 0.4
},
"visibility_condition": "q.player.has_task('journey:mining_quest');",
"range": 64.0
}
{
"id": "journey:battle_arena_beacon",
"position": {"x": 0.5, "y": 70.0, "z": 0.5},
"dimension": "minecraft:overworld",
"display_data": {
"name": "§c§lBattle Arena",
"description": "Elite battles await",
"display_config": {
"block": "minecraft:beacon",
"glowing": true,
"scale": {"x": 1.5, "y": 1.5, "z": 1.5}
},
"bobbing": false
},
"visibility_condition": "q.player.level >= 30.0;",
"range": 128.0
}

Show markers during active quests:

{
"visibility_condition": "q.player.has_task('journey:your_quest');"
}

Markers inside quest zones:

{
"visibility_condition": "q.player.is_in_zone('journey:dungeon_zone');"
}

Lock markers behind package unlocks:

{
"visibility_condition": "q.player.has_package_unlocked('journey:chapter_1');"
}

Markers automatically render via Journey Client when installed.

HUD Features:

  • Distance display
  • Minimap integration
  • Objective tracking
  • Phase updates

Configuration: config/journey/objective-markers.json (client-side)


Terminal window
# Reload markers
/journey reload markers
# List all markers
/journey marker list
# Teleport to marker
/journey marker tp <marker_id>
# Toggle marker visibility
/journey marker toggle <marker_id>

Use appropriate heights: Place markers 2-3 blocks above targets

Choose right display type:

  • Text: Quest indicators, warnings
  • Item: Collectibles, objectives
  • Block: Landmarks, locations

Reasonable render distance: Don’t set range too high (64-96 is usually enough)

Meaningful visibility conditions: Hide markers when not relevant

Consistent styling: Use similar colors/styles for marker categories

Test visibility: Ensure markers are visible from expected angles

Performance awareness: Too many markers = lag


  • Check position coordinates
  • Verify dimension is correct
  • Check visibility_condition evaluates to 1.0
  • Ensure player is within range
  • Verify Journey Client is installed (if using client features)
  • Adjust scale values (1.0 = normal size)
  • Text: Try 2.0-4.0
  • Items: Try 1.5-2.5
  • Blocks: Try 1.0-2.0
  • Reduce range
  • Limit total marker count
  • Disable bobbing on distant markers
  • Use visibility conditions to hide when not needed

Marker Definitions:

config/journey/markers/<name>.json

Client Configuration:

config/journey/objective-markers.json