Changelog
Journey Changelog
Section titled “Journey Changelog”Journey Client (Optional Mod)
Section titled “Journey Client (Optional Mod)”Journey Client is now available as an optional companion mod that enhances the player experience with HUDs and rendering features.
Party HUD:
- Real-time party member display with health, armor, and hunger
- Player face rendering from skins
- Dimension indicators showing where party members are
- Distance to party members
- Pokémon display for party members
- Offline members shown in grey
- Configurable health display (hearts/bars/both)
- Heart rendering with all status types (poisoned, withered, frozen, absorbing)
- Absorption hearts shown as yellow hearts
- Compact display for health over 20 (shows as 10 hearts + bonus)
- Customizable HUD position, scale, and visibility
Global Task HUD:
- Server-wide task progress tracking
- Real-time updates when players contribute
- Contributor count display
- Compact mode option
- Configurable position and scale
Zone Rendering:
- Visual zone boundaries in-world
- Configurable opacity and fade distances
- Different colors based on zone type
- Toggle zones on/off
- Distance-based fading
Path Rendering:
- Visualize NPC patrol paths
- Preview paths before assigning to NPCs
- Real-time path editor (press
Zto toggle) - See waypoints and wait points
Levelable XP HUD:
- XP progress ribbon replacing boss bars
- Level-up animations
- XP gain popups with fade effects
- Configurable position
Buff Display:
- Buff icons with duration timers
- Scrollable buff list
- Tooltip with buff details
- Shows in-game and inventory
Notification System:
- Toast notifications in corner
- Large announcement banners
- Action buttons in notifications
- Multiple notifications simultaneously
Objective Rendering:
- Quest markers as beacons in world
- HUD markers for objectives
- Toggle beacons and markers separately
Client Commands:
Configure Journey Client features with /journeyclient commands:
# Global Task HUD/journeyclient globaltask toggle # Enable/disable/journeyclient globaltask compact # Compact mode/journeyclient globaltask position <x> <y> # Set position/journeyclient globaltask scale <scale> # Adjust scale
# Party HUD/journeyclient party toggle # Enable/disable party HUD/journeyclient party healthstyle <mode> # Switch between hearts/bar/both/journeyclient party anchor <position> # Position HUD (top-left, top-right, bottom-left, bottom-right)/journeyclient party scale <value> # Adjust HUD scale (0.1-3.0)/journeyclient party offset <x> <y> # Set position offset/journeyclient party armor # Toggle armor display/journeyclient party hunger # Toggle hunger display/journeyclient party distance # Toggle distance display/journeyclient party dimension # Toggle dimension indicator/journeyclient party info # Show current settings
# Zone Rendering/journeyclient zone opacity <value> # Base opacity/journeyclient zone fadestart <distance> # Fade start distance/journeyclient zone fadeend <distance> # Fade end distance/journeyclient zone toggle # Enable/disable
# Objective Rendering/journeyclient objective beacons # Toggle beacons/journeyclient objective markers # Toggle HUD markers
# Edit Modes/journeyclient editmode path # Toggle path edit/journeyclient editmode zone # Toggle zone editPerformance:
- Distance culling for far objects
- Frustum culling for off-screen objects
- Configurable render distances
- Minimal FPS impact
- Optimized party updates with efficient change detection
- Reduced network traffic
- Fast 0.25 second update interval for responsive syncing
New Systems & Features
Section titled “New Systems & Features”Global Task System: Create server-wide tasks that all players contribute to together. Perfect for community events, server milestones, and collaborative goals.
- All players contribute to the same task simultaneously
- Track individual contribution amounts per player
- Active participant count displayed
- Subtask system for multi-stage goals
- Optional boss bars for progress display
- Cross-server support via NATS messaging
- Progress persists through server restarts
- Event-driven updates (not tick-based)
- Automatic notifications when tasks start, progress, and complete
- Real-time HUD with Journey Client
- Configure in
config/journey/global_tasks/
Party System: Team up with other players to track each other’s status and location.
- Create and manage parties with
/partycommands - Party invite notifications with Accept/Decline buttons (30 second expiration)
- Join/leave notifications to all party members
- Real-time health, position, and armor synchronization
- Pokémon team sharing within party
- Offline member tracking - see when party members disconnect
- Immediate status updates when members join or leave
- Configurable party GUI in
assets/journey/guis/party.json
Buff System: Apply temporary or permanent buffs/debuffs to players with full customization.
Four buff types available:
- Attribute Buffs: Modify player stats (health, speed, attack, etc.)
- Potion Effects: Apply vanilla status effects
- Script Buffs: Use MoLang scripts on apply/tick/remove events
- Shiny Chance Buffs: Increase shiny Pokémon encounter rates
Features:
- Tick-based duration countdown (-1 for permanent)
- Stackable with configurable max stacks
- Hidden buffs for secret effects
- Supports debuffs (negative effects)
- Visual icons with duration timers (Journey Client)
- Buff rewards from tasks
- Configure in
config/journey/buffs/
Commands:
/journey buff give <player> <buff_id> [duration] [stacks] # Give buff/journey buff remove <player> <buff_id> # Remove buff/journey buff clear <player> # Clear all buffs/journey buff list [player] # List active buffsQuest Item System - Backpack: Separate inventory for quest items so they don’t clutter player inventories.
- Dedicated quest item storage (default 54 slots, configurable)
- Separate from player inventory
- Full NBT support (stores custom items with lore, names, custom model data)
- Items persist through death (configurable)
- Prevent dropping/trading (configurable)
- Stacking support for matching items
- Auto-collection option
- Open with
/journey backpackor configurable keybind - Configurable GUI in
assets/journey/guis/backpack.json
Quest Item System - Task Items: Tasks can require collecting specific items to complete.
- Item-based task requirements with counts
- Auto-detects items in inventory AND backpack
- Consumption options: consume on complete or return on failure
- NBT matching support for custom items
- Visual progress tracking
- Configure in task
requiredItemsfield
Contract System: Player-to-player agreement system allowing players to create custom quests for each other.
- In-game contract builder GUI for creating custom contracts
- Contract items that can be traded between players
- Custom terms: task completion, item delivery, zone visits, battles
- Fulfillments: define rewards for completion
- Penalties: consequences for failure
- Multiple participant types
- Escrow support for safe item trading
- Event-driven progress tracking
- Expiration system with time limits
- Repeatable contracts option
Use cases:
- Player bounties: “Pay 1000 coins to defeat 20 Rattata”
- Resource commissions: “Need 64 diamonds - will trade shiny Charmander”
- Event contracts: “First to complete parkour gets rare items”
Commands:
/journey contract create # Open contract builder/journey contract list [player] # List active contracts/journey contract accept <id> # Accept a contract/journey contract complete <id> # Complete a contract/journey contract abandon <id> # Abandon a contractBounty Boards: Physical boards displaying rotating pools of pre-configured server tasks.
- Rotating task pools from server-configured tasks (NOT player-created)
- Schedule-based rotation (daily/weekly/custom intervals)
- Display limited number of tasks at once
- Task unlock conditions via MoLang
- Deterministic rotation with optional seeds
- Permission-based board access
- Physical board locations in world
- Configure boards in
config/journey/bounty_boards/ - Configure task pools with weighted selection
Example board config:
{ "id": "town_board", "name": "Town Bulletin Board", "taskPool": [ "journey:rattata_hunt", "journey:ore_gathering", { "taskId": "journey:advanced_quest", "unlockCondition": "q.player.level >= 10" } ], "displayedTasks": 5, "rotationInterval": 24000, "requiredPermission": "journey.bountyboard.town"}Marker System: Add quest markers to the world with particles, beacons, and HUD indicators.
Features:
- Quest markers for specific locations
- Quest areas with 3D boundaries (box, sphere, cylinder)
- Multi-phase support (markers change during quest progression)
- Particle effects with configurable types and counts
- Beacon rendering with Journey Client
- HUD markers showing direction and distance
- Per-player visibility via MoLang conditions
- Activation radius for triggering events
Configuration:
Markers in config/journey/markers/:
Simple marker:
{ "id": "merchant_location", "name": "Friendly Merchant", "position": {"x": 100, "y": 64, "z": 200}, "icon": "minecraft:emerald", "activationRadius": 5.0, "particle": {"type": "END_ROD", "count": 10}, "visibilityCondition": "q.has_completed_task('intro_quest')"}Commands:
/journey marker create <id> # Create marker/journey marker remove <id> # Remove marker/journey marker list # List all markersNPC Visibility System: Control which players can see specific NPCs for phased quest content.
- Per-player NPC visibility control
- MoLang conditions for show/hide rules
- Global conditions (apply to all players)
- Per-player overrides (specific player rules)
- Periodic checks with configurable intervals
- Perfect for quest progression and phasing
- Configure in NPC configs
Configurable GUI System: Fully customize all Journey GUIs with JSON configuration.
18 widget types available:
- Button, Display, ProgressBar, Slider, Toggle, TextInput
- BackpackSlots, BountyTaskList, PartyMemberList, PartySettings
- PokemonTeam, SkillList, SubtaskList, TaskList, ObjectiveList
- Navigation, InviteList, Tracking
Features:
- Conditional visibility using MoLang
- Placeholder text support
- Color customization
- Click actions
- Hover tooltips
- Dynamic content updates
- Multi-page support
- Configure in
assets/journey/guis/*.json
Available GUIs:
journal.json- Quest journaltask_detail.json- Task detailsparty.json- Party managementparty_create.json- Party creationparty_invites.json- Party inviteslevelable.json- Levelable skillsbackpack.json- Quest item backpackbounty_board.json- Bounty boardteam_select.json- Team selection
Renewable Resources: Weighted loot pools for interactable resource nodes.
- Defines resources with weights for random selection
- Full ItemStack support with NBT
- Integrates with renewable interactables
- Perfect for gathering quests and resource nodes
- Configure in
config/journey/renewables/
Quest Packages: Organize quests into folders and categories with hierarchical structure.
- Group quests into packages (folders) with metadata
- Nested sub-packages for better organization
- Enable/disable entire packages at once
- Requirements to unlock packages (level, tasks, permissions, MoLang)
- Package metadata: author, version, icon, category, tags
- Seasonal/event packages with date ranges
- Priority ordering for display
- Filter quests by category or tags
- Auto-generated packages from folder structure
- Configure with
_package.jsonin quest directories
NPC Pathing: Create custom patrol routes for NPCs with visual path editor.
- Create custom NPC patrol routes
- NPCs follow paths automatically
- Resumes after server restarts
- Visual path editor with
/journey pathmanagerGUI - Preview paths before assigning
- Edit and duplicate existing paths
- Assign paths to NPCs in-game
- Live path visualization with Journey Client (toggle on/off)
- Configure paths in
config/journey/paths/
Interactables: Create custom interactable entities with scripting.
- Custom interactable entities
- Configure hitbox sizes, display models, and behavior
- MoLang scripting for click interactions and visibility
- Per-player cooldowns and visibility conditions
- Custom display models (blocks or items)
- Use for: healing shrines, fast travel points, puzzle elements, quest triggers
Commands:
/journey interactable summon <type> <x> <y> <z> # Summon an interactable/journey interactable remove <id> # Remove an interactable/journey interactable list # List all interactables/journey interactable reload # Reload configsImprovements to Existing Systems
Section titled “Improvements to Existing Systems”Task System:
- Item-based task requirements with auto-completion
- Better progress tracking with timestamps
- Per-subtask progress display
- Contribution tracking for each player
- Completion timestamps and attempt counters
- New event types: battle actions, item collection, NPC interactions
- Improved repeat system: daily, weekly, or custom intervals
- Daily reset at configured time
- Weekly reset on specific day
- Custom interval resets
- Track completion count
Zone System:
- New zone events: enter, exit, inside, area-based
- New zone functions:
disable_pvp,disable_mob_spawning,regenerate_health - Hot-reload zone configs without restarting server
- Better handling of zone tags and functions
- Zone rendering with Journey Client
- Configure in
config/journey/zones/
Example zone config:
{ "id": "safe_zone", "name": "Safe Zone", "shape": { "type": "sphere", "center": {"x": 0, "y": 64, "z": 0}, "radius": 100 }, "functions": [ "disable_pvp", "disable_mob_spawning", "regenerate_health" ], "tags": ["safe", "town"]}Path System:
- NPC path data persists through server restarts
- Hot-reload support
- Path validation on load
- Visual preview with Journey Client
Example path config:
{ "id": "town_patrol", "nodes": [ { "position": {"x": 0, "y": 64, "z": 0}, "waitTime": 100, "actions": ["animation:wave"] } ], "loop": true, "reverse": false}Commands:
/journey pathmanager # Open path manager GUI/journey path create <id> # Create new path/journey path assign <npc> <path_id> # Assign path to NPC/journey path preview <id> # Preview pathLevelable System:
- Journey Client: XP ribbon HUD (replaces boss bars)
- Level-up animations
- XP gain popups with fade effects
Commands:
/journey levelable give <player> <levelable> # Give levelable/journey levelable progress <player> <levelable> <xp> # Add XP/journey levelable respec <player> <levelable> # Reset levelable/journey levelable switch <player> <levelable> # Switch active/journey levelable gui [player] # Open GUIPerformance Improvements
Section titled “Performance Improvements”Zone System (70% Faster):
- Massive optimization to zone tick processing
- Reduced server lag from zone checks
- Better handling of players across different dimensions
- Faster detection for players entering/exiting zones
- Batched player checks per dimension
- Optimized shape calculations
- Early exit for distant players
Memory Management:
- Automatic cache cleanup every 5 minutes
- Player data properly cleared on disconnect
- Prevents memory from growing indefinitely on long-running servers
- Improved handling of offline player data
- Fixed unbounded memory growth in task caches
Sidebar & UI:
- Sidebars only update when something changes (no more constant rebuilds)
- Smoother HUD updates
- Reduced CPU usage for quest tracking display
Task System:
- Removed constant background script checking
- Task events now trigger only when needed
- Better performance on servers with many active tasks
- Now event-driven instead of per-tick execution
Bug Fixes
Section titled “Bug Fixes”Zone System:
- Fixed memory leak that accumulated zone listeners
- Fixed duplicate damage/hunger/attack prevention events
- Fixed zone tracking causing crashes when players logout
- Fixed zones not properly cleaning up when removed
- Fixed duplicate events when reloading zone configs
- Zone removal now properly deletes config files
- Fixed zone player tracking with stale UUIDs
Task System:
- Fixed task UI crashes when icons are missing (now shows barrier icon as fallback)
- Fixed sequential tasks skipping optional steps incorrectly
- Fixed tracked tasks not removing from sidebar properly
- Fixed login rewards not granting correctly
- Fixed crash loops when task scripts are missing
- Fixed MoLang error spam in console
Levelable System:
- Fixed XP calculation errors with multiple levelables
- Fixed active levelable not persisting through logout
Path System:
- Fixed path data not persisting through server restart
- Fixed NPC path assignments being lost
- Fixed NPC positions drifting over time
Configuration:
- Cleaner error messages for malformed configs
- Reduced redundant warning messages in console
New Commands
Section titled “New Commands”Party Commands:
/party create # Create a new party/party invite <player> # Invite a player/party kick <player> # Kick a party member/party leave # Leave current party/party promote <player> # Promote member to leader/party disband # Disband the partyBuff Commands:
/journey buff give <player> <buff_id> [duration] [stacks] # Give buff/journey buff remove <player> <buff_id> # Remove buff/journey buff clear <player> # Clear all buffs/journey buff list [player] # List active buffsBackpack Commands:
/journey backpack [player] # Open backpack GUIPath Management:
/journey pathmanager # Open path management GUI/journey path create <id> # Create new path/journey path assign <npc> <id> # Assign path to NPC/journey path preview <id> # Preview pathInteractables:
/journey interactable summon <type> <x> <y> <z> # Summon an interactable/journey interactable remove <id> # Remove an interactable/journey interactable list # List all interactables/journey interactable reload # Reload configsLevelables:
/journey levelable give <player> <levelable> # Give levelable/journey levelable progress <player> <levelable> <xp> # Add XP/journey levelable respec <player> <levelable> # Reset levelable/journey levelable switch <player> <levelable> # Switch active/journey levelable gui [player] # Open GUINew MoLang Functions
Section titled “New MoLang Functions”Global Tasks:
query.global_task_active(task_id)query.global_task_progress(task_id, subtask_id)query.global_task_contributors(task_id)Party:
query.party_size()query.in_party()query.party_leader_name()Buffs:
query.has_buff(buff_id)query.buff_duration(buff_id)query.buff_stacks(buff_id)Task Items:
query.task_item_count(task_id, item)query.task_item_required(task_id, item)query.task_item_progress(task_id, item)Backpack:
query.backpack_count(item)query.backpack_has(item)Zones:
query.in_zone(zone_id)query.zone_time_inside(zone_id)Levelables:
query.levelable_level(levelable_id)query.levelable_xp(levelable_id)query.active_levelable()Configuration System
Section titled “Configuration System”Messages Configuration:
New assets/journey/messages.json for all notification text with placeholder support.
Example:
{ "globalTasks": { "started": "&6[Global Task] &aStarted: {task_name}", "completed": "&6[Global Task] &eCompleted: {task_name}!", "progress": "&6[Global Task] &b{task_name}: {progress}%" }, "party": { "invite": "&aYou've been invited to {leader}'s party!", "joined": "&a{player} joined the party!", "left": "&c{player} left the party." }}Configuration Locations:
- Global Tasks:
config/journey/global_tasks/ - Zones:
config/journey/zones/ - Paths:
config/journey/paths/ - Buffs:
config/journey/buffs/ - Bounty Boards:
config/journey/bounty_boards/ - Renewables:
config/journey/renewables/ - Packages:
config/journey/packages/ - GUIs:
assets/journey/guis/*.json - Messages:
assets/journey/messages.json
Hot-Reload Support:
- Interactables and paths load automatically on startup
- Journal settings save per-player
- Visualization toggles persist through logout
- Most configs can be reloaded without restart
Configuration Migration
Section titled “Configuration Migration”Task Configuration:
- Task items now use
requiredItemsarray instead ofitems - Repeat types simplified - check
RepeatTypeenum values - New reward type:
"type": "buff"for buff rewards
Zone Configuration:
- Zone functions and tags now merged in single
functionsarray - Shape configuration slightly changed for consistency
Messages:
- Global task messages moved to
messages.json - Party messages moved to
messages.json - Use placeholders like
{player_name}instead of%player%
Removals
Section titled “Removals”- Removed per-task MoLang execution from server tick (now event-driven)
- Removed fake entity system (replaced with better alternatives)
- Removed “per-player structures” feature. To be replaced with a more robust system in future.
- Removed deprecated path manager commands (use
/journey pathmanagerGUI instead)
License
Section titled “License”Journey is a closed-source mod.