
vJourney
vJourney transforms Minecraft's native advancement screen into a configurable achievement and quest-tree system for minecraft servers.
Instead of opening a custom GUI, players use the familiar advancements menu, but with your own categories, icons, descriptions, progression, sounds and unlock conditions.
Support the Project
vJourney is developed and maintained with a lot of care as part of the vPlugins project. If the plugin helps your server, consider making a donation to support future updates, bug fixes, documentation and new vPlugins projects.
Community & Support
Need help configuring quests, want to report a bug, or suggest a feature? Join our community or check the documentation:
Preview



Main Features
- Create independent advancement tabs using simple
.ymlcategory files. - Build achievement trees with parents, branches, hidden nodes and multi-parent progression.
- Use custom icons with
materialandmodel_data. - Configure lore for blocked, progress and completed states.
- Show live progress in item hover text with
%current%. - Emit local chat, global chat and native Minecraft toast notifications.
- Store persistent progress in SQLite by default or MySQL when configured.
- Reload categories with
/vjourney reloador/vjr reload.
Triggers
vJourney supports several trigger types, including:
- Vanilla mob kills
- MythicMobs kills
- Armor equipped
- Item held
- Blocks broken
- World visits
- WorldGuard region entry
- Permissions
- PlaceholderAPI values
- BetonQuest tags and points
- Enchanting progress
- vBestiary discovery progress
Numeric triggers support flexible values:
value: 10 # exactly 10
value: <10 # 10 or less
value: 10> # 10 or more
Ченджлог
1.3.1Релиз26.1, 26.1.1, 26.1.2 · 14 июня 2026 г.
v1.3.1
- Fix: Advancement-screen protection now intercepts delayed vJourney advancement packets that were already queued by UltimateAdvancementAPI, preventing frequent trigger checks from closing the open advancements screen.
- Compatibility: The delayed-packet guard works through PacketEvents or ProtocolLib and only defers vJourney advancement updates until the player closes the screen.
- Fix: Player data can no longer be wiped when a periodic or quit save runs before the asynchronous load finishes, when the load fails, or when a player reconnects before a previous load completes. Player sessions now use a load-state machine (LOADING/LOADED/FAILED) with a session token, and only fully loaded sessions are ever saved.
- Fix: Progress earned while a player's data is still loading is now merged with the loaded data instead of being overwritten, and a failed load retries up to three times before the session is marked non-savable for that session.
- Fix: A delayed load that completes after the player disconnects no longer recreates stale in-memory data for the offline player.
- Storage: Auto-save, shutdown, and database migration now persist only loaded players that have unsaved changes, and concurrent saves are de-duplicated by sequence so an older snapshot can never overwrite newer data.
- Fix: Trigger evaluation is now paused during
/vjourney reloadand resumed only after the advancement tabs are rebuilt, preventing an async evaluation cycle from racing against a half-rebuilt state. The polling task is also cancelled before any restart so reloads cannot leak a timer. - Fix: Non-persistent achievements are no longer briefly revoked and then re-granted while a player's data is still loading, since count-based triggers temporarily read zero during that window.
- Fix:
permissiontriggers are now resolved during the main-thread snapshot phase, so LuckPerms/Bukkit permission lookups no longer run on the async evaluation thread. - Performance: BetonQuest tag and point lookups now cache the resolved reflection methods instead of re-scanning the API on every evaluation cycle.
- Performance: WorldGuard
region_enterchecks now resolve all configured regions with a single query per player per cycle instead of one query per region. - Validation: Achievement keys longer than 191 characters now log a warning at load time, since they could otherwise silently fail to save to the database.
1.3.0Релиз26.1, 26.1.1, 26.1.2 · 13 июня 2026 г.
v1.3.0
- Feature: Added optional advancement-screen protection through PacketEvents or ProtocolLib. PacketEvents is preferred when both plugins are installed.
- Feature: Added full MiniMessage support, including modern sprite components, to trigger lore, category text, achievement names, and language messages while preserving legacy
&colors. - Fix: Achievement lore refreshes, grants, and revokes are deferred while the player has the advancements screen open, preventing live progress updates from closing the screen.
- Performance: Deferred advancement changes are deduplicated and flushed once the player closes the screen.
1.2.0Релиз26.1, 26.1.1, 26.1.2 · 29 мая 2026 г.
v1.2.0
- Feature: Added the
deathtrigger for achievements based on how many times a player dies. - Feature: Added the
player_killtrigger for achievements based on how many other players a player kills. - Feature: Added the
vaulttrigger withaction: spend,action: gain, andaction: balancefor Vault economy achievements. - Feature: Added vanilla triggers:
item_craft,fishing,tame_mob,consume_item, andlevel_reach. - Feature: Added
%required%support in achievement lore, using the target configured invalueoramount. - Feature:
cmdcan now be used inprogresstriggers and runs once when the achievement enters the progress state. - Config: Added
auto_save_intervalto periodically save player progress and reduce data loss after crashes. - Config: Updated the PT/EN example categories with all non-external triggers,
%required%, and progress-command documentation. - Performance: Cached PlaceholderAPI source collection and skips Vault balance checks when no Vault trigger is configured.
- Fix: Permission achievements no longer complete only because the player is OP or has a wildcard; the configured permission node must be granted directly or inherited through LuckPerms.
- Fix: Added warnings for achievements that reference missing parents, improved namespaced/custom sound playback, and made
/vjr completematch online player names exactly while ignoring capitalization.
v1.1.3
- Command: Added
/vjourney complete <player> <category> <achievement> [true/false]to manually complete one achievement, with announcements enabled by default and optional silent completion. - Command: Added
/vjourney complete <player> <category>to silently complete every currently configured achievement in a category for the player, including hidden child achievements, without making future achievements auto-complete. - Storage: Manual completions are stored per achievement in the database, so command-granted achievements stay completed even when their trigger is not currently active.
1.1.2Релиз26.1, 26.1.1, 26.1.2 · 26 мая 2026 г.
v1.1.2
- Fix: Event counters no longer double-count when
progressandcompletedshare the same mob, MythicMob, block, or enchant trigger. - Fix: Event-based counters now respect
require_parent; locked child achievements no longer accumulate progress before their required parent achievements are completed. - Fix: MythicMobs no longer count toward vanilla
mob_killachievements just because their base Bukkit entity type matches. Usemythicmob_killfor MythicMob-specific achievements.
1.1.1Релиз26.1, 26.1.1, 26.1.2 · 24 мая 2026 г.
v1.1.1
- Storage: Added SQLite/MySQL player data storage using the same Paper
librariesapproach as vBestiary. SQLite stores data inplugins/vJourney/data/database.db. - Storage: Global first-completed announcement state is now stored in the database instead of
first_completed.yml. - Command: Added
/vjourney migrateto copy the active SQLite database data to the configured MySQL database, with localized aliases/tab completion forreloadandmigrate. - Config:
config.ymlnow uses inline comments and rewrites those comments in the configured language on reload without resetting current values. - Config: The bundled
exemple.ymlcategory is regenerated from the configured language template when the language changes on reload. - Compatibility: vBestiary triggers now use the English
categorykey, while the oldercategoriekey remains accepted as a compatibility alias. - Fix: PlaceholderAPI trigger and lore-refresh values are now resolved during the main-thread snapshot phase instead of the async evaluation phase.
- Fix: Advancement toasts are now emitted only on the actual grant action, preventing vBestiary/polling refreshes from showing a separate or repeated notification.
- Performance: Reduced duplicate enchant diff scans, filters command-based enchant snapshots by target player when possible, and made the first-completed announce cache thread-safe.
- Cleanup: Removed deprecated
ChatColor.stripColor()usage from enchant GUI title detection.
1.0.10Релиз26.1, 26.1.1, 26.1.2 · 22 мая 2026 г.
v1.1.0
- Feature: Added optional vBestiary integration through the new
vBestiarytrigger. It can complete achievements by discovered mob count, by a specific discovered mob, or by full category completion. - Feature: Improved enchant tracking compatibility, including vanilla enchanting,
/enchant, anvil book usage, and vEnchant/plugin-style enchant flows that apply real Bukkit enchantments to the item. - Feature: Added flexible numeric targets for supported trigger values:
value: 10requires the exact value,value: <10accepts 10 or less, andvalue: 10>accepts 10 or more. This applies to PlaceholderAPI values, BetonQuest points, count-based triggers, enchantamount, and vBestiary discovered counts. - Config: Added
model_datasupport to the root category icon and updated the PT/EN example categories with the new options and comments. - Fix: Fixed
bqpointtarget lookup for bothpackage.pointandpackage>point, and prevented missing point targets from being treated as0. - Fix: Fixed a reload issue where achievement tabs could disappear or fail to refresh correctly after
/vjr reload. - Performance: Added faster trigger lookups, cached PlaceholderAPI availability, async player data handling with dirty-state checks, and safer enchant inventory snapshots.
1.0.9Релиз26.1, 26.1.1, 26.1.2 · 20 мая 2026 г.
v1.0.9
- Fix: Fixed a bug where placeholders in the category root lore (e.g.
%betonquest_yggdrasil:point.Yggdrasil.amount%) would not update dynamically. The value would stay frozen until a new achievement was completed. Now the display refreshes automatically whenever the placeholder value changes, following the sametrigger_check_intervalcycle.
v1.0.8
- Fix: Fixed a bug where
PLACEHOLDERand count-based triggers (mob_kill,block_break) would not visually update thelorein the advancements GUI without the player typing/vjr reload. The display now correctly refreshes live when the placeholder value or counter changes.
v1.0.7
- Feature: Added
cmdfield to trigger sections (blocked,progress,completed). Accepts a list of console commands executed when the trigger fires. Supports%player%placeholder (replaced with the player's name at runtime).
v1.0.6
- Feature: Added
xandyfields to the category configuration. Controls the position of the root icon (the first node shown in the advancement tree). Supports negative values (e.g.x: -2.0).
1.0.5Релиз26.1, 26.1.1, 26.1.2 · 17 мая 2026 г.
v1.0.5
- Fix: Vanilla advancement toasts (e.g. "Duro de matar") flooding the screen. The old Bukkit-level
PlayerAdvancementDoneEventlistener was revoke-based (too late — UAAPI had already captured the grant). Replaced with UAAPI's nativedisableVanillaAdvancements()+disableVanillaRecipeAdvancements()API calls, which block vanilla advancements at the packet level before they are ever processed. - Fix:
disable_vanilla_advancements: truein vJourney now also syncs with UAAPI automatically — no need to manually edit UAAPI'sconfig.yml. - Removed:
AdvancementListener.java— obsolete since UAAPI handles vanilla blocking natively. - Cleanup: Removed stale code comments, unused imports, and translated remaining Portuguese log messages to English for consistency across the codebase.
Комментарии
Загружаем…