Feature update adding optional MythicMobs and LevelledMobs event support, plus a tool to re-enable a claimed level reward.
| Added - Added optional MythicMobs events for custom mob kills, pre-spawn, and spawn triggers. - Added optional LevelledMobs events for levelled mob kills, mob levelling, and summoned mob levelling. - Example use in exp-events.yml: MYTHIC_MOBS_KILL:ID=SkeletalKnight rewards kills of that MythicMob, while LEVELLED_MOBS_KILL:LEVEL=10-25 applies to levelled mobs between levels 10 and 25. - Added /xlv rewards reset <player> <system> <level>, allowing administrators to reset a player's reward claim so it can be claimed again. - Added the XenoLevels.admin.rewards.reset permission for access to this command.
| Notes / Recommendations - MythicMobs and LevelledMobs events are available only when the respective plugin is installed and enabled. - No configuration migration is required; add the new event expressions to exp-events.yml when needed. - Restart your server after updating. - Use reward claim resets carefully: resetting a claim allows the configured reward to be granted again.
Hotfix focused on counted EXP events so repeated player actions now count correctly toward the configured reward requirement.
| Fixed - Fixed counted direct EXP events not building progress correctly across repeated actions. - Counted KILL_MOB, KILL_PLAYER, BREAK_BLOCK, and similar event rules should now reward players once they reach the configured count.
| Notes / Recommendations - No configuration changes are required. - Restart your server after updating. - This update is recommended if you use counted EXP event rules in exp-events.yml.
Small hotfix focused on Anti-Abuse block checks and placed-block tracking for EXP events.
| Changed - Updated the bundled XenoEventEngine dependency to improve event handling used by XLV.
| Fixed - Fixed player-placed block Anti-Abuse checks not matching the player-placed-blocks setting correctly. - Fixed blocks placed through XLV event handling not being tracked as player-placed blocks. - Fixed crop Anti-Abuse checks so immature crops are handled correctly when natural crops are not included.
| Notes / Recommendations - No configuration reset is required. - Restart your server after updating. - If your setup rewards BREAK_BLOCK or PLACE_BLOCK events, this update is recommended.
Bugfix update focused on XLV boosters, Anti-Abuse rules, and more accurate booster GUI information.
| Changed - Updated the bundled runtime used by XLV. - Booster lists now focus on boosters that are actually active and applicable for the player.
| Fixed - Fixed Anti-Abuse rules not respecting event-specific criteria correctly. - Fixed Anti-Abuse cooldown checks so remaining cooldown time is handled correctly. - Fixed nearby-player booster requirements, including setups that use minimum nearby players without a required group. - Fixed booster stacking checks so configured booster IDs are matched more reliably. - Fixed the Boosters GUI showing boosters as active when they were not actually applicable to that player.
| Notes / Recommendations - Restart your server after updating. - No configuration reset is required. - If you use Anti-Abuse or custom booster rules, review them after updating because they should now apply more accurately.
Maintenance update focused on refreshing the bundled CyberCore runtime dependency.
| Changed - Refreshed the bundled CyberCore 2.0.0 library used by XLV. - Updated the bundled CyberCore build with the latest Takion 1.6.1 alignment.
| Notes / Recommendations - No configuration changes are required. - Recommended: restart your server after updating. - This is a maintenance/dependency refresh release.
Maintenance update focused on XenoEventEngine 0.2.0 compatibility.
| Changed - Updated XenoEventEngine from 0.1.3 to 0.2.0. - Aligned XLV event integration imports and internals with the new XenoEventEngine 0.2.0 package structure.
| Fixed - Fixed leaderboard synchronization to keep XLV leaderboards in sync. - Fixed database user synchronization for XLV users. - Fixed TIMED_EXP expression handling by validating expressions before payout.
| Added - Added AxBoosters support, including active lookup integration. - Added a new `integrations.axboosters` config section. - Added `enabled` as the master toggle for the AxBoosters bridge. - Added `import-external-multipliers` to import active AxBoosters multipliers into XenoLevels XP calculations. - Added `export-internal-boosters` to export active internal XenoLevels event boosters as personal AxBoosters API boosters. - Added `show-in-gui` to enable GUI placeholders such as `{external_booster_multiplier}` and `{external_booster_ids}`. - Added `show-in-placeholders` to enable PlaceholderAPI and message placeholders for AxBoosters-specific values. - Added `export-booster-type` as the fallback AxBoosters Booster Type for exported internal boosters. - Added `export-booster-types` for optional per-system Booster Type export overrides.
| Changed - Simplified the internal AxBoosters hook for cleaner and more reliable integration.
| Fixed - Fixed AxBoosters bridge calls to better align with its integration flow.
AxBoosters integration update with new bridge controls and improved reliability.
Update focused on better event filtering, EXP messaging improvements, rewards reliability, data safety, and message rendering across versions. Recommended: Back-up any player data before updating.
| Added - Added NAME_CONTAINS and NAME_EXACT arguments for KILL_MOB and DAMAGE_MOB events to validate mob names. - Added internal placeholder {exp_event} for exp.gained messages in lang.yml to display the event that granted EXP. - Added exp.events section to translate event names used by the {exp_event} placeholder. - Added compatibility so EXP stacking combo can show the last EXP event using {exp_event}. - Added MiniMessage support to all messages.
| Changed - Adjusted internal methods to use the new RequirementTracker. - Improved internal database methods for better reliability and consistency. - Reworked shortcut options to better match the most used commands: - Old: show-menu-in-main-command: false - New: - command-shortcuts.xlv: false - command-shortcuts.prestige: false - General improvements across the internal codebase.
| Fixed - Fixed an issue where players were not receiving their rewards (with or without prestige). - Fixed /xlv delete not allowing players to regain previously earned rewards. - Fixed rewards not being granted when using the Auto Claim feature. - Fixed a major issue where player data could be lost after a reload or restart. - Fixed some compiling issues. - Fixed titles not working on 1.8. - Fixed gradients not working on any messages.
| Notes / Recommendations - Recommended: Back-up any player data before updating. - Review your config and migrate old shortcut options to the new command-shortcuts section if needed.
| Added - Added command to force stop any/chosen boosters. Use /xlv booster stop/stopall <arguments> (XenoLevels.admin.booster.stop & XenoLevels.admin.booster.stopall) - Added more placeholders to show more info about player's boosters or any booster | Changed - Reworked the BaseSystem code structure: each feature now has its own dedicated class (This is an internal improvement only — end users will not be affected).
| Fixed - An issue where anti-abuse checks couldn't properly prevent users from gaining EXP.
| Fixed - Reloading XLV after getting exp/levels shouldn't reset/remove/add random exp values. - /xlv addexp and /xlv info now works correctly with offline players. - Rewards triggered for offline players won't send messages to global chat now.
| Added - Added a PERMISSION EventType to parse players only with a specific permission, mainly on level requirements. Eg: PERMISSION:custom.permission. - Added a config option to enable or disable offline user data loading when tab complete called tab-complete.load-offline-users. - Added support for legacy versions (1.8.X to 1.15.X). If XLV is on any of those versions, the GUI will be disabled entirely. - New option on config.yml called show-menu-in-main-command. When true, running /xlv with no arguments opens the main system menu (disabled by default). You can add it manually if this option wasn't added automatically.
| Changed - Update Database libraries to newer versions, as well, updated its methods to support async data handling. - Update Scheduler management to support abstract runnables to easier task cancellations. - Update Formula Expression management in order to use another more efficient open source formula library. - Now setlevel, removelevel and removeexp bypass prevent-level-down option to always remove levels if requested.
| Fixed - Error when databases try to manage a lot of data at once. - Level placeholders not updated correctly. - Exp stacking message not updating correctly if enabled. - Error loading data on legacy servers. - Not loading on Folia or forks of it (like Canvas). - Multiple NPE on player messages. - Overflow option not working at all. - User data not being saved at all. - Placeholder {progress_bar} not being parsed. - Levels not being removed correctly.
| Added - RivalHarvesterHoes and RivalPickaxes support. Events are RIVAL_HARVESTER_HOES or RHH and RIVAL_PICKAXES or RPX, follows same arguments as BREAK_BLOCK. - the [op] prefix for command execution to dispatch commands as OP.