Skip to main content

[0.3.8] - 2026-06-11

Mod version: 0.3.8 ยท Game version: Hytale 0.5.4 Ko-fi Discord

โœจ Added

  • Block XP blacklist - In mods/Zuxaw_RPGLeveling/RPGLevelingConfig.json, BlacklistedXPBlocks (comma-separated block type IDs) excludes specific blocks from mining/woodcutting XP. Matching is case-insensitive (same style as BlacklistedEntities). Default: Tw_Feed_Carnivore,Tw_Feed_Herbivore (Animal Husbandry feed troughs). Set to "" to allow XP from all eligible blocks. Run /lvl reload to apply.

๐Ÿ”„ Changed

  • Performance (100+ players) - level progress HUD - The XP bar refresh no longer re-encodes its UI data on every refresh; the encoded update is cached and only rebuilt when the content actually changes (level, XP, zone or color).

๐Ÿ› Fixed

  • Console spam from level nameplates - On some server versions, the server console could flood with Failed to run task! and ArrayIndexOutOfBoundsException errors every few ticks. That came from the look-at-a-mob level nameplate feature.
  • Leaderboard โ€œUnknown Playerโ€ - The leaderboard no longer shows โ€œUnknown Playerโ€ for some entries. Names are resolved from online players, player save files (DisplayName / nameplate), and a short session cache when a player has joined this server run. If no name is available yet, the first 8 characters of the player UUID are shown instead.

๐Ÿ”„ Compatibility

  • Hytale server target - Updated minimum server version to 0.5.4.

[0.3.7] - 2026-06-03

Mod version: 0.3.7 ยท Game version: Hytale 0.5.3 Ko-fi Discord

โš ๏ธ Important

  • External database - you are responsible for player data - When database sync is enabled and MirrorDataOnly is false, the shared database can overwrite live progression on join, /lvl syncdb pull, or admin edits. Always back up your database and universe/players before turning on two-way sync, running /lvl syncdb push, editing rows by hand, or any other action that changes stored player data. RPG Leveling does not restore lost progression if a backup was not taken.

โœจ Added

  • External database as source of truth - In mods/Zuxaw_RPGLeveling/DatabaseConfig.json, set MirrorDataOnly to false (with Enabled: true) so a shared MySQL/MariaDB/PostgreSQL/H2 database holds progression across servers. When a player row exists in the DB, join and /lvl syncdb pull apply database level/XP/stats/classes; missing supplemental fields (claimed rewards, language, HUD prefs, class cooldown, etc.) are filled from universe/players and saved back. If there is no row yet, player file data is copied to the database. On first run with an empty database, universe/players JSON files are imported once. The DB stores the same RPG fields as player save files. Default MirrorDataOnly: true keeps one-way mirror (game โ†’ DB only). Admin /lvl syncdb (rpgleveling.command.syncdb) pulls or pushes after manual SQL edits; /lvl syncdb status shows the active JDBC URL. Offline admin commands update the database immediately after writing the player file. See Database sync.
  • XP curve overrides - level cost multiplier - In mods/Zuxaw_RPGLeveling/XPCurveOverridesConfig.json, each override row now supports LevelCostMultiplier (XP needed for the next level in that level range) alongside XpRateMultiplier (XP earned from kills and block break). Example: {"From": 50, "To": 79, "XpRateMultiplier": 2.0, "LevelCostMultiplier": 0.5} doubles XP gains and halves grind to level up at levels 50โ€“79. HUD and /lvl info reflect the scaled cost. Existing Multiplier keys are renamed to XpRateMultiplier on first start after update (config migration 0.3.7). Run /lvl reload to apply. See XP curve overrides config.

๐Ÿ”„ Compatibility

  • Hytale server target - Updated minimum server version to 0.5.3.

๐Ÿ”„ Changed

  • Performance (100+ players) - level nameplates - Looking at a mob or player to see their level uses far less server time when many people are online.

๐Ÿ› Fixed

  • Level progress HUD on join - The XP bar above the hotbar could appear empty, black, or vanish a moment after you join until something updated your XP. It now shows your level and progress reliably as soon as you enter the world.

[0.3.6] - 2026-05-25

Mod version: 0.3.6 ยท Game version: Hytale 0.5.0 Ko-fi Discord

โœจ Added

  • Per-range XP-earned multipliers - New file mods/Zuxaw_RPGLeveling/XPCurveOverridesConfig.json. Add Overrides entries with From, To, Multiplier to multiply XP earned (kills + block break) while the player is in that level range, e.g. {"From": 50, "To": 79, "Multiplier": 2.0} doubles XP gains at levels 50โ€“79. Applied on top of RateExp and ZoneRateExp. Empty by default. Run /lvl reload to apply. See XP curve overrides config.

๐Ÿ”„ Compatibility

  • Hytale server target - Updated minimum server version to 0.5.0 (pre-release patchline).
  • Level progress HUD - Migrated MultipleHUD to Hytaleโ€™s native HUD via the keyed HudManager API
  • MultipleHUD - Removed optional MultipleHUD integration; no longer required or listed in manifest.json.

๐Ÿ”„ Changed

  • Performance (100+ players) - Reduced lag when many players are online: some checks are now cached instead of repeated every tick for every player
  • Max-level HUD / Stats GUI text shows total XP - At the level cap the HUD used to show XP: 3666 / 3666 (MAX), where both numbers were just the same value (there is no โ€œXP needed for next levelโ€ at the cap). It now shows Level: 100 XP: 1003666 (MAX) - the total XP a player has earned since level 1, which is the exact same number the Leaderboard ranks by, so whatโ€™s on your HUD and what determines your rank are now the same thing. The Stats and Rewards GUI player header gets the same treatment (%.1f XP (MAX) showing total XP, instead of %.1f / %.1f XP (MAX)). Translators: the old hud.level_xp_max key is replaced by hud.level_max (one fewer placeholder, default Level: {0} XP: {1} (MAX)) - the next /lvl reload drops the obsolete key and adds the new one in English to every MessagesLanguageMapping_<lang>.json for re-translation.

๐Ÿ› Fixed

  • Random HUD crash (day-one bug) - The long-standing random kick / disconnect caused by HUD layer collisions with other mods is definitively fixed. Our XP bar is now scoped to its own keyed slot (RPGLeveling_LevelProgress) via Hytaleโ€™s native HudManager, so it can no longer overwrite or be overwritten by another modโ€™s HUD.
  • Leaderboard fairness at max level - Players who hit the level cap keep gaining XP from kills, blocks, /lvl addxp, and other mods (instead of being silently capped at the moment of the level-up). The XP/Class leaderboard now ranks max-level players by the total XP they keep earning rather than by the size of the single reward that happened to push them over the cap, so whoever grinds the most ends up on top.

[0.3.5] - 2026-05-08

Mod version: 0.3.5 ยท Game version: Hytale 2026.03.26-89796e57b Ko-fi Discord

โœจ Added

  • Per-player language - Every player can now pick their own language in the Settings โ†’ Language tab of the Stats GUI. The HUD, notifications, level-up titles, zone warnings, kill messages and /lvl info all switch to the chosen language right away. The choice is saved on the player and persists across sessions.
  • Server default language - Server admins can set the default language new players see in mods/Zuxaw_RPGLeveling/RPGLevelingConfig.json via the new DefaultLanguage field (default english). It is also used for server-wide messages with no specific recipient.
  • Drop-in translations - Translation files now live in mods/Zuxaw_RPGLeveling/languages/, one file per language named MessagesLanguageMapping_<language>.json (e.g. MessagesLanguageMapping_french.json). Drop a file in the folder, restart the server (or run /lvl reload), and the language appears in the in-game picker. Each file declares its own display name, so adding a language is purely โ€œdrop the file inโ€.
  • Automatic translation upgrades - When the plugin adds new messages in an update, missing keys are added to your translation files with the English text so your GUI never shows raw keys. Your existing translations are kept untouched.
  • Legacy translation file migration - If you previously used MessagesLanguageMapping.json (single file), it is moved automatically to the new languages/ folder on first start after upgrade. If that old file was not English, rename it to the correct suffix (for example MessagesLanguageMapping_french.json) and set the language display name inside the file, otherwise it will appear as English in the picker.
  • Public API - player language - Other mods can set a playerโ€™s RPG Leveling UI language using the same codes as files in languages/ (for example english). They can target someone by account id or by character name (online player first, otherwise an offline profile file when one exists). Clearing the choice falls back to the server DefaultLanguage in RPGLevelingConfig.json. After you add new language files, /lvl reload picks them up.

๐Ÿ”„ Changed

  • Performance (high player count) - Reduced world-thread overhead by removing repeated per-tick ECS holder allocations in hot player systems and optimizing HUD tick polling, which improves stability when many players are connected.

๐Ÿ› Fixed

  • Rare on-kill passive crash - Fixed a rare severe server error that could happen when multiple on-kill passive buffs triggered at the same time. Those buffs are now handled safely so the world no longer stops from this case.

[0.3.4] - 2026-04-02

Mod version: 0.3.4 ยท Game version: Hytale 2026.03.26-89796e57b Ko-fi Discord

โœจ Added

  • Stats GUI - Settings tab & per-player level HUD - New SETTINGS sidebar tab in the RPG Leveling GUI with Show / Hide level HUD controls. Preference is stored per player in PlayerLevelData (HideLevelProgressHud) and persists across sessions. When the server disables the HUD (EnableHUD), the tab explains that and hides the toggle. LevelProgressHudManager.hideHud now actually removes the custom HUD (so it also works while the stats GUI is open and when the HUD is globally off).
  • Stats GUI - per-player notification toggles - When EnableNotification is on, Settings adds XP / progression and (if EnablePassiveNotifications) class passive rows so players can turn off those toasts for themselves (HideXpProgressNotifications, HidePassiveNotifications on PlayerLevelData). Applies to XP gain, level-up / zone / kill / boost / critical / death penalty lines and passive heal-buff-damage popups (NotificationPreferenceHelper).
  • Command permissions (rpgleveling.command.*) - Admin /lvl subcommands, /classes, and each xprateboost leaf use requirePermission with a dedicated node (see RpgLevelingPermissions). /lvl gui and /lvl info stay open to all players (no node). Wildcard rpgleveling.command.* covers the full admin set. /lvl info shows the admin command list when the sender has any admin node, hytale.command.admin, the wildcard, or OP group. Documented in Commands and MODINFO.md.
  • XP boost end broadcast - When a timed /lvl xprateboost expires on its own, players get the same kind of large on-screen title as at start, saying the boost finished (everyone for a global boost, only that player for a personal boost). clearall, clearplayer, and stop cancel the scheduled end notice so there is no โ€œfinishedโ€ title when an admin stops a boost early. Uses EnableNotification and new message keys notifications.xp_boost_ended_*.

๐Ÿ”„ Changed

  • Chat placeholders - Mods that customize chat with format strings (for example Essentials Plus) may need Placeholder API for %rpglevelling_*% tokens to show level, XP, and class instead of plain text. RPG Leveling connects to Placeholder API automatically when that mod is on the server.

[0.3.3] - 2026-03-30

Mod version: 0.3.3 ยท Game version: Hytale 2026.03.26-89796e57b Ko-fi Discord

API โœจ Added

  • Config Defaults Override API - External mods can now call RPGLevelingAPI.registerConfigDefaults(modId, configurator) in their setup() to override any RPG Leveling config default (scalar values or array appends). Overrides only apply when the on-disk value matches the bundled default (admin-customized values are never overwritten). Supports alsoReplaces for updating previous mod overrides across versions. First mod to register a field wins; conflicts are logged at startup.
  • Player class API - New methods getPlayerClassInfo, getPlayerClassId, getPlayerClassTier, and getPlayerAllClassTiers let external mods read the playerโ€™s selected class, display name, tier (0โ€“4), kills in current tier, and all class progress. Available by UUID (Holder-only) or with PlayerRef + entity Ref + Store for world-thread contexts.

โœจ Added

  • NameplateBuilder (optional) - When Frotty27:NameplateBuilder and its API are on the server, look-at level text is published as nameplate segment rpgleveling_level via register / remove so it composes with other segments; otherwise the plugin keeps using the vanilla Nameplate component as before.
  • Chat placeholders - Server chat formats can use %rpglevelling_level%, %rpglevelling_xp%, %rpglevelling_xp_to_next% / %rpglevelling_xp_to_level%, %rpglevelling_max_level%, %rpglevelling_is_max_level%, and class tokens %rpglevelling_class%, %rpglevelling_class_display%, %rpglevelling_class_name%, %rpglevelling_class_id%, %rpglevelling_class_tier%.
  • Admin timed XP rate boost - /lvl xprateboost (alias /lvl xpmult) sets an extra XP multiplier for a duration in seconds: all <multiplier> <seconds> for every player, player <name> <multiplier> <seconds> for one player (online or resolvable offline), plus clearall, clearplayer <name>, and stop (clears global and all per-player boosts at once). Global and per-player boosts multiply together. The timed multiplier applies after RateExp and zone rates (e.g. RateExp 3 and timed ร—2 โ‡’ 6ร— vs the raw formula baseline, not 5ร—). Applies to kills, block XP, and API XP; /lvl addxp is unchanged. Runtime-only (not persisted). Documented in Commands and Main Plugin Config.
  • Class change cooldown - After you change or clear your selected class in the Stats GUI, a configurable cooldown applies before you can change again (default 5 minutes). ClassChangeCooldownSeconds in Classes/ClassesGlobalConfig.json controls the wait (0 disables the cooldown). While active, SET and UNSET show a remaining time (m:ss) and are disabled; the server also ignores class-change actions during the cooldown.

๐Ÿ”„ Changed

  • Level HUD (without MultipleHUD) - HUD handling when MultipleHUD isnโ€™t installed now avoids full refreshes on every update, so the level bar updates more lightly and performs better.

๐Ÿ› Fixed

  • On-kill timed passives - In rare cases, when a kill triggered several short on-kill buffs at once (for example multiple class passives stacking), the server could hit a severe error and the world had to stop or unload. That situation is now handled safely.
  • Movement Speed stat after water / world change - The game can reset ground MovementManager baseSpeed when you swim, touch water, or change worlds, while RPG stats are only fully re-applied when StatsAppliedMarker is cleared-so Movement Speed bonuses could appear to stick at vanilla until something else refreshed stats. A MovementSpeedReconciliationSystem now compares live baseSpeed to the RPG-expected value (when using the MovementManager path, not the engine stat-map path) and re-applies the stat; it skips while timed movement passives like Overkill are active so kill buffs are not overwritten.

[0.3.2] - 2026-03-26

Mod version: 0.3.2 ยท Game version: Hytale 2026.03.26-89796e57b Ko-fi Discord

๐Ÿ› Fixed

  • Broken world interactions on Release 4 (0.3.1) - After updating the mod for Hytale Release 4, a fault in mining and woodcutting bonuses while you target blocks (the same area of the mod that shows up in logs as MiningDetectionSystem) could trigger repeated severe server errors-for example failed chunk ticking, complaints that the game was busy while loading chunks, or failed chunk loads. The world often did not fully crash, but whole regions could go into a weird state where doors, crafting stations, and other interactions stopped responding. This release fixes that so those areas stay usable.

[0.3.1] - 2026-03-26

Mod version: 0.3.1 ยท Game version: Hytale 2026.03.26-89796e57b Ko-fi Discord

๐Ÿ”„ Compatibility

  • Hytale Release 4 (server) - Mining and woodcutting block bonuses target the current server APIs (block health module and chunk section resolution). Build against the Release 4 server JAR.

๐Ÿ”„ Changed

  • Mining / woodcutting (API migration) - Per-tick block damage while targeting no longer uses removed BlockState / WorldChunk.getState; it now applies via BlockHealthChunk.damageBlock. Chunk refs use ChunkUtil.chunkCoordinate with ChunkStore.getChunkSectionReference so older SDK stubs without getChunkSectionReferenceAtBlock still compile. Swing-time multiplier via DamageBlockEvent is unchanged.

โœจ Added

  • Command /classes - Opens the RPG Leveling GUI directly on the Classes tab (same UI as /lvl gui). If the class system is disabled, shows a short error instead of opening the GUI.
  • Command alias /level - Equivalent to /lvl for the full command tree (e.g. /level gui, /level info, admin subcommands). /lvl info also mentions /classes and /level.
  • Life Steal - flat HP plus percent - The Life Steal passive now restores a fixed amount of HP per hit (HealFlat) in addition to a percentage of damage dealt (HealPercent). Bundled PassivesConfig is version 0.3.1; servers on older passives configs get migration 0.3.1 (flat values per tier, max 2 HP flat at higher tiers). Why: percent-only healing barely moved the needle on weak or low-damage weapons because the heal scaled off tiny hit values; adding flat healing keeps Life Steal meaningful on those weapons. The same 0.3.1 migration batch updates MessagesLanguageMapping.json (version bump + Life Steal template text) only when passives.lifesteal.template still equals the old default English line-custom or translated wording is not overwritten. New migration step option whenCurrentEquals documents this pattern in Config migrations.
  • Admin /lvl resetrewards <player> - Clears claimed level-reward flags for one player (online or offline) so they can reclaim from the Rewards GUI; does not remove items already received. /lvl resetrewardsall does the same for every player. Documented in Commands. Messages: commands.resetrewards.*, commands.resetrewardsall.*, and /lvl info lines cmd_resetrewards / cmd_resetrewardsall.
  • EnablePassiveNotifications (RPGLevelingConfig.json) - When EnableNotification is true, set EnablePassiveNotifications to false to disable only class passive proc popups (heal, buff applied, passive damage line, Hunterโ€™s Mark proc, on-kill buffs such as Overkill). Level-up, XP, critical hit, entity killed, class tier-up subtitle, zone warnings, death penalty, and other non-passive notifications still follow EnableNotification only. Default: true. Documented in Main Plugin Config.

๐Ÿ› Fixed

  • Level rewards & full inventory - Claiming from the Stats GUI Rewards tab no longer marks a level as claimed when the configured item stacks cannot fully fit in the playerโ€™s storage. A red chat message tells the player to free space and try again (gui.rewards.error_inventory_full in messages). Claim All still claims every reward that fits; if any level is skipped for lack of space, the same message is shown once. Rewards with only reset points and/or commands (no items) are unchanged.

[0.3.0] - 2026-03-14

Mod version: 0.3.0 ยท Game version: Hytale 2026.02.19-1a311a592 Ko-fi Discord

โœจ Added

  • Entity override ExactIdMatch (include matching) - Entity overrides in InstanceLevelConfig and ZoneLevelConfig support ExactIdMatch per entry (default true). When set to false, the override applies by โ€œincludeโ€: any NPC whose type ID contains the entryโ€™s EntityId gets that override (e.g. EntityId "skeleton" with ExactIdMatch false applies to all skeleton variants). Longest matching entry wins.
  • Admin command /lvl setclasstier <player> <class> <tier> - Sets a playerโ€™s tier for a specific class (0โ€“4). Example: /lvl setclasstier Zuxaw archery 4. Works for online and offline players. Class name is case-insensitive (e.g. archery, Archery).
  • Movement Speed stat - New allocatable stat that increases player movement speed by a configurable percentage. Config: MovementSpeedStatValuePerPoint (e.g. 0.5 = 0.5% per point), MaxStatPointsMovementSpeed. Icon: Tree Sap item.
  • Mana Regen stat - New stat for mana regeneration; especially relevant for the Arcane class and magical weapons. Config: ManaRegenSpeedValuePerPoint (e.g. 0.18 = 18% per point), MaxStatPointsManaRegenSpeed. Icon: Staff Crystal Ice.

๐Ÿ› Fixed (for beta player)

  • ImpactBuff world crash - Fixed Entity contains component type: ImpactBuff and ComponentType is not in archetype: ImpactBuff when Impact (or Hunterโ€™s Mark / Last Stand) procced multiple times in the same tick. The engineโ€™s removeComponent throws when the entity does not have the component in its archetype, so we now: (1) only call remove when the store already has the buff, and (2) deduplicate adds per player per tick via pending-add sets so at most one add is queued until the store is updated.
  • World crash on Hunterโ€™s Mark usage - Fixed IllegalArgumentException: Entity contains component type: HunterMarkBuff when multiple Hunterโ€™s Mark (or Impact / Last Stand) buffs were applied in the same tick. Buff application now uses remove-then-add so duplicate components are never queued.
  • Class tier display in GUI - Tier label now shows โ€œTier 4/4โ€ at max instead of โ€œTier 4/5โ€ (tiers are 0โ€“4; the denominator was incorrectly 5).

๐Ÿ”„ Changed

  • LifeSteal (passive) - for beta players - Config migration restores pre-beta heal-per-tier values for PassivesConfig (e.g. max 7% โ†’ 12%). If you played during beta and kept the toned-down values, upgrading to 0.3.0 will put LifeSteal back to the original stronger values unless you edit the config after migration.
  • Mana for magical weapons (Arcane) - Thanks to Arcane class passives, mana is now used in Hytale for magical weapons and is really interesting if you play Arcane.
  • Monster HP per level (+30%) - Monster life (HP) per level increased by 30% for all difficulty presets. EASY: 1.5% โ†’ 2%, NORMAL: 2.5% โ†’ 3.25%, HARD: 3.5% โ†’ 4.5%, EXTREME: 5% โ†’ 6.5%. Higher-level monsters are tankier; player damage is unchanged.
  • Stats application improved - Stat bonuses are applied in a way that no longer negatively affects you; fixes and refinements so allocated stats only provide benefits.

๐Ÿ–ฅ๏ธ UI

  • Interface overhaul - Almost the entire UI has been redone for a clearer, more consistent experience.

โš”๏ธ Class system

  • Classes are templates - Classes are just templates and are fully customizable. You can override or replace them to fit your server (e.g. a Jedi class with lightsaber boost for a Star Warsโ€“style mod).
  • Class innate bonuses scale with your level - Class bonuses are based on your global level, so they grow as you level up. No heavy penalty for switching class; your current level still applies.
  • Tier system (T0 โ†’ T4) - The more you play a class, the more you tier it up; each tier unlocks stronger innate bonuses and new passives. Sticking with a class rewards you with better bonuses; you can still change class anytime.
  • 6 classes (default set) - Compatible with modded weapons: add weapons from other mods so they get class bonuses, or define a fully custom class (name, weapons, passives, stats) for any theme.
  • Goal - Reward specialized playstyles and rebalance weapon diversity; passives add variety and fun. Epic animations when passives trigger may come later.

Classes (default set)

ClassWeaponsPassives
HeavyAxe, BattleaxeHighGuard, ThickSkin, Overkill
BluntMace, ClubImpact, Stubborn, LastStand
EdgeSword, Longsword, SpearLifeSteal, DuelFocus, Unscathed, Riposte
FangDagger, ShortbowLifeSteal, Backstab, Executioner
ArcheryShortbow, CrossbowSteadyShot, Opening, HuntersMark
ArcaneStaff, Wand, SpellbookArcaneTransfusion, FullReserve, ManaShield

๐ŸŽฏ Passive system (18 custom passives)

  • Passives per class - Each class has its own passives; they unlock by tier and trigger in combat (damage dealt, damage taken, on kill).
  • Add or swap passives - You can add passives to any class or swap which passives a class has; fully configurable per class and tier.
  • Configurable - Passive names, descriptions, and all values/percentages are configurable per passive and per tier.

Passives (all 18)

PassiveEffect
HighGuard+% damage when your HP is above a threshold.
ThickSkinWhen hit and HP below threshold: chance to heal % of damage taken.
OverkillOn kill: restore % max stamina and gain +% move speed for a short duration.
ImpactOn hit: chance to add +% damage for a duration (refreshes on hit).
StubbornWhen hit and HP below threshold: chance to heal % of damage taken.
LastStandFirst time below % HP: damage reduction + lifesteal for a duration, then cooldown.
DuelFocusWhen only one target hit in the last X seconds: +% damage.
UnscathedVs a target that has not damaged you in the last X seconds: +% damage.
RiposteAfter block or taking damage: next attack within X seconds gains +% damage.
LifeSteal% of damage dealt heals you.
BackstabHitting from behind: +% damage.
ExecutionerWhen target HP is below %: +% damage (cooldown per target).
SteadyShotAfter not moving for X seconds: next projectile +% damage.
OpeningHitting an enemy above % HP: +% damage on that hit.
HuntersMarkHitting the same target X times within X seconds: +% damage from you for X seconds.
ArcaneTransfusionWhen you use stamina on a magical attack, % of max mana is converted to stamina.
FullReserveWhen mana above %: +% spell damage.
ManaShieldUse mana to absorb incoming damage: up to % absorbed, mana cost per damage.

โš™๏ธ Custom config for classes

  • Full configurability - Class names, descriptions, item icons, stat bonuses per class and tier, weapon lists, and passive lists. Disable an entire class or individual passives; tweak every value and percentage.
  • All names in MessagesLanguageMapping - Every display name (classes, passives, stats, etc.) is configurable via MessagesLanguageMapping so you can localize or rename everything without touching class JSON.

[0.2.10] - 2026-02-24

Mod version: 0.2.10 ยท Game version: Hytale 2026.02.19-1a311a592

โœจ Added

  • Config migration system - Config files (RPGLevelingConfig, InstanceLevelConfig, ZoneLevelConfig, LevelRewardsConfig, MessagesLanguageMapping) are now automatically upgraded at startup when their version is older than the latest. A backup (.bak) is created before applying migrations.
  • Pet+ mod compatibility - Pet follower entity roles (Pet_Follower, Pet_Follower_Large, Pet_Follower_Large_Combat) are in the default blacklist so they are excluded from leveling.

๐Ÿ› Fixed

  • DeathDetectionSystem WorldThread crash (stale entity reference) - Fixed a crash that could disconnect all players on a world when an entity was removed from the ECS store while death processing was still using its reference (e.g. NPC despawning, player disconnect).

๐Ÿ”„ Changed

  • Zone HP thresholds (mob level) - Updated HP floor/ceiling used for mob level calculation in zones 1โ€“4 (Zone1: 1โ€“168, Zone2: 8โ€“191, Zone3: 17โ€“146, Zone4: 1โ€“271). Thanks to Taboret (Discord) for the values.

[0.2.9] - 2026-02-17

Mod version: 0.2.9 ยท Game version: Hytale 2026.02.17-255364b8e (Update 3)

๐Ÿ”„ Compatibility

  • Hytale Update 3 - The mod is now compatible with Hytaleโ€™s Update 3. If you were waiting to update the game, you can safely do so with this version installed.

๐Ÿ› Fixed

  • Player join crash (PlayerReadyEvent) - Fixed a crash that could happen when a player joins the server. The error showed as Assert not in thread! in the console. This could affect any server and happened randomly on player connect. Fixed in this version.
  • Profile picture packet error - Fixed a compatibility issue when sending the playerโ€™s profile picture to the client, which could cause an error in the console on join.

๐Ÿ’ฌ Developer note

Starting with this release, the mod and game version will be specified at the top of each changelog entry so you always know which version of Hytale a given release was built and tested against.

[0.2.8] - 2026-02-12

๐Ÿ› Fixed

  • World freeze / world stopping - Fixed an issue where the mod could freeze or stop the world, requiring the mod to be disabled to recover. The problem was caused by changes made to support the new pre-release from yesterday; the mod no longer supports pre-release and release at the same time - that compatibility layer was the root cause. The mod is now working correctly on release. The mod is incompatible with pre-release for now. Update to 0.2.8 if you were affected.

๐Ÿ’ฌ Sorry for the hassle

Sorry about this. In any case, your world data is never corrupted or erased because of a bug like this - the mod does not modify or delete your world saves. If the world seemed stuck, disabling the mod was enough to recover; your data remains intact.

[0.2.7] - 2026-02-12

โœจ Added

  • ๐Ÿ“œ /lvl resetstatsall - Admin command to reset only allocated stats for all players (online and offline). Each player keeps their current level and XP; allocated stats are cleared and available stat points are set to (level โˆ’ 1) ร— StatPointsPerLevel (from StatsLevelConfig). Use when you want everyone to reallocate stats without losing level progress. OP only. See Commands.
  • ๐Ÿ“‹ BlacklistedEntityRoles - Config option to exclude NPC roles from leveling. NPCs whose role name contains a configured string (default: Citizen_) get no level display, no HP/damage scaling, and no XP when killed. Uses the NPCEntity component; ideal for Citizen mod NPCs. Matching is include (contains).

๐Ÿ”„ Changed

  • InstanceLevelConfig - Removed the built-in "default" (1โ€“25) entry. New configs include an example instance Yungs_HyDungeons_Skeleton_Dungeon (55โ€“75); add or edit entries for your instance/dungeon worlds. See Instance Level Config.
  • Instance overrides zone (multiworld) - When a world matches an entry in InstanceLevelConfig, that instanceโ€™s level range and entity overrides override ZoneLevelConfig. Main world can use zones; each dungeon/minigame world can have its own level range. See Instance Level Config.
  • ExactIdMatch per instance - Each instance in InstanceLevelConfig.json can have ExactIdMatch (default: true). When true, world id must match config Id exactly; when false, match by include (game id contains config Id). See Instance Level Config.

๐Ÿ’ฌ Developer note

Release delivery will slow down for a while - Iโ€™ll be busy and may not be able to answer many messages. Iโ€™m currently working on 0.3.0 with a class system. Thank you for your patience and support.

[0.2.6] - 2026-02-09

๐Ÿ› Fixed

  • ๐Ÿ“œ Reward command permissions - Level reward commands (e.g. eco give 1000 {player}) now run as the server console instead of the claiming player. This fixes โ€œyou donโ€™t have permissionโ€ errors when the player lacks permission for the reward command; the console has full privileges so rewards apply correctly.

โœจ Added

  • โš™๏ธ Critical Damage stat - New stat Critical Damage: chance to deal a critical hit (damage ร— random 1.5โ€“2.0). Default 0.2% per point (e.g. 50 points at 0.2 = 10% chance). Config: CriticalDamageStatValuePerPoint (default 0.2), MaxStatPointsCriticalDamage (default 50). In the Stats GUI the stat appears next to Damage and uses the Weapon_Longsword_Adamantite_Saurian icon. On critical hit the player receives a notification with the damage value.
  • โš™๏ธ Per-stat value per point (StatsLevelConfig) - Resource stats (Health, Stamina, Mana, Ammo, Oxygen) now have their own config keys: HealthStatValuePerPoint, StaminaStatValuePerPoint, ManaStatValuePerPoint, AmmoStatValuePerPoint, OxygenStatValuePerPoint (default 1.0 each). See Stats Level Config.

๐Ÿ”„ Changed

  • ๐Ÿ–ผ๏ธ Stats GUI rework - The playerโ€™s head skin is now displayed on both the Stats and Rewards pages (rendered via Hyvatar, Hytale avatar rendering API). The Stats page also shows real values and number of points per stat so you can see exactly how your allocations affect your stats and skills.
  • ๐Ÿ“ˆ StatPointsPerLevel default - Default stat points per level up changed from 3 to 5 in StatsLevelConfig.json and code. New configs and fallbacks use 5. Existing configs keep their current value until you change it.
  • โš™๏ธ Default Damage and Defense (StatsLevelConfig) - Default values for DamageStatValuePerPoint and DefenseStatValuePerPoint are now 1.5 (was 1). Existing configs: set these keys to 1.5 manually to match new defaults.
  • โš™๏ธ Stamina config keys renamed - StaminaConsumptionReductionPerPoint โ†’ StaminaConsumptionValuePerPoint (default 0.01). StaminaRegenSpeedMultiplierPerPoint โ†’ StaminaRegenSpeedValuePerPoint (default 0.18). Rename in JSON or run /lvl reload after plugin migrates on load.

[0.2.5] - 2026-02-08

๐Ÿ› Fixed

  • SLF4J conflict with other mods - Fixed the โ€œmultiple SLF4J bindingsโ€ warning when running alongside other mods (e.g. EcotaleMarket). No more red console messages about duplicate bindings.
  • ๐Ÿ“œ Reward commands (vanilla and other mods) - fix for running vanilla and other modsโ€™ commands from level rewards.
  • ๐Ÿงฉ /lvl gui collision with other mods - When opening the Stats GUI (/lvl gui).

๐Ÿ”„ Changed

  • /lvl reload - Now reloads all config files: RPGLevelingConfig, StatsLevelConfig, and DatabaseConfig are re-read from disk. DatabaseConfig is applied in-memory only; changing JDBC URL or enabling/disabling DB sync still requires a server restart.

[0.2.4] - 2026-02-07

โœจ Added

  • ๐ŸŽ Level Rewards - New config LevelRewardsConfig.json and Rewards tab in the Stats GUI (/lvl gui). Define per-level rewards: items (by Hytale ItemId and Quantity, added to player storage when claimed), reset points, and an optional command run when the reward is claimed. Players claim rewards once per level; status shows Unclaim or Claimed. Claim All appears when there is at least one claimable reward and claims every unclaimed reward the player has reached the level for. See Level Rewards Config. โš ๏ธ Note: When a player uses Claim All, they can claim every reward from level 1 up to their current level in one go. It is recommended to check mods/Zuxaw_RPGLeveling/LevelRewardsConfig.json and ensure the default rewards are suitable for your server. You can edit the JSON to add rewards for specific levels, remove existing reward entries you donโ€™t want, or change items and quantities - see Level Rewards Config for the full format. ๐Ÿ“œ Reward commands - Each reward can have one command: Command (the command string) and optional CommandTitle (label in the Rewards tab); both default to empty and every reward entry includes them in the config. Use the {player} placeholder in Command; it is replaced with the claiming playerโ€™s username. The plugin runs lvl setlevel {player} <level> directly (no server CommandManager required): level applies immediately, leaderboard is updated, and the server stays responsive. Other commands are run via the gameโ€™s CommandManager when available. See Running a command when a reward is claimed in the Level Rewards Config docs.
  • ๐Ÿ”„ Reset points system - Players can earn reset points from level rewards (LevelRewardsConfig.json: ResetPoints per reward). Reset points are displayed on the Stats page (e.g. x5 next to the RESET ALL button). The RESET ALL button (Stats GUI, bottom left) consumes 1 reset point and refunds all allocated stat points; Health/Stamina etc. are clamped to base. Button is disabled when the player has 0 reset points. Data is persisted (store, holder, and external database if enabled).
  • ๐Ÿ“œ /lvl setreset <player> <amount> - Admin command to set a playerโ€™s reset points (e.g. /lvl setreset PlayerName 5). Works for online and offline players. OP only.
  • ๐Ÿ”„ /lvl reload - Admin command to reload config files from disk without restarting the server. Reloads ZoneLevelConfig.json, InstanceLevelConfig.json, LevelRewardsConfig.json, MessagesLanguageMapping.json, RPGLevelingConfig.json, StatsLevelConfig.json, and DatabaseConfig.json (DatabaseConfig: in-memory only; DB connection changes require restart). OP only.
  • ๐ŸŒ Disable plugin per world/instance - In InstanceLevelConfig.json, each instance can have DisableRPGLeveling (default: false). When true, the plugin has no effect in that world: no HUD, no level scaling, no XP, no stat modifiers (damage/defense/mining/stamina), no death reset. Use for minigame worlds or dungeons where you want vanilla gameplay. See How to disable the mod for a specific world/instance.

๐Ÿ”„ Changed

  • โš™๏ธ Nameplate options - EnableNameplateLevelDisplay (default: true): when true, nameplates can show level; when false, no nameplate is modified (players or monsters). EnablePlayerLevelNameplate (default: true): when false, only player nameplates are left unchanged (monster level still shows when you look at them). Both options are in RPGLevelingConfig.json and are written on config save.
  • ๐Ÿ“œ /lvl setlevel - When setting a playerโ€™s level, claimed rewards for levels above the new level are removed (so the player can reclaim those rewards when they reach the level again). Available stat points are set to (level - 1) ร— StatPointsPerLevel (correct total for the new level). Applies to both online and offline targets.
  • ๐Ÿ“œ /lvl resetall - Now also clears claimed reward levels and sets reset points to 0 for every affected player (online and offline). Level and stats reset unchanged (level 1, 0 XP, 0 stat points, no allocations).

๐Ÿ› Fixed

  • โ›๏ธ Mining XP on cracked ore - Fixed: mining cracked ore (e.g. cracked ore variants) no longer grants XP. You will earn no more XP when mining cracked ore; only full ore/mineral/gem blocks award mining XP.
  • ๐Ÿ‘๏ธ Nameplate level display - Console warnings when entities or players disappear while the level nameplate is being updated (e.g. player disconnects or target despawns).
  • ๐Ÿ—„๏ธ Database connection / plugin startup - Fixed error on start when using external database sync (SLF4J).
  • ๐Ÿ—„๏ธ Database sync - External database now stays in sync with player data: sync runs on mod start and again after 10 seconds (so universe/players is available if the server loads it later). Offline admin commands (/lvl setlevel, /lvl setpoints, /lvl setreset) now push the updated player from disk to the DB. /lvl resetall triggers a full sync from disk so offline resets are reflected in the database.

๐Ÿ’ฌ Developer note

Do not hesitate to reach out on my Discord server - especially if you have better ideas for default reward items in LevelRewardsConfig.json. The current defaults are placeholders; suggestions for more fitting or balanced items per level are welcome.

[0.2.3] - 2026-02-03

โœจ Added

  • โ›๏ธ XP for mining and woodcutting - Earn XP when breaking ore/mineral blocks (mining) and log/tree/trunk blocks (woodcutting). XP scales with player level (configurable BlockXPPlayerLevelFactor) and zone level (per-zone BlockXPZoneLevelFactor in ZoneLevelConfig.json). Higher-level players and higher-level zones award more XP per block. Config: EnableBlockXP, BlockXPBaseMining, BlockXPBaseWood, BlockXPPlayerLevelFactor in RPGLevelingConfig.json. API: XPSource.BLOCK_BREAK, BlockBreakContext, addXP(..., sourceContext).
  • ๐ŸŒ ZoneRateExp (per-zone XP multiplier) - In ZoneLevelConfig.json, each zone can have ZoneRateExp (default 1.0). All XP gained in that zone - mob kills and block break - is multiplied by this value. Use 2.0 to double XP in the zone, 0.5 to halve it. See Config Zones and Formulas.

[0.2.2] - 2026-02-02

โœจ Added

  • โš™๏ธ EnableNotification - Main config option in RPGLevelingConfig.json. When true (default), all notifications are sent (XP gain, level up, stat points, death penalty, zone warnings, entity killed). When false, no notifications are sent.
  • โš™๏ธ EnableCurrentZoneHudDisplay - Main config option in RPGLevelingConfig.json. When true (default), HUD shows level and current zone/biome. When false, HUD shows only level and XP progress bar.

๐Ÿ”„ Changed

  • ๐Ÿ‘๏ธ NPC nameplate level display - Level is no longer shown in the nameplate for NPCs that survival players can interact with (trade, dialogue, etc.).

๐Ÿ› Fixed

  • ๐Ÿ’ฅ Server crash on XP gain - Fixed OutOfMemoryError: Requested array size exceeds VM limit when sending XP gain notification. Occurs when xpNeeded for next level is 0 or invalid (e.g. misconfigured LevelBaseXP/LevelOffset). Added guard to avoid division by zero and clamp progress bar length to prevent runaway StringBuilder growth.
  • ๐Ÿ’ฅ World crash (invalid entity Ref) - Fixed world crash when resolving player level data with an invalid entity Ref (e.g. after chunk unload or entity despawn).
  • ๐Ÿ”„ /lvl resetall - Now correctly resets available stat points to 0 (and clears allocated stats). Previously, /lvl resetall and /lvl setlevel 1 would incorrectly add allocated points back to available, leaving players with unspent points after a full reset.

[0.2.1] - 2026-02-01

๐Ÿ› Fixed

  • ๐Ÿ“‹ Leaderboard โ€œUnknown Playerโ€ - Other players in the leaderboard no longer show as โ€œUnknown Playerโ€. Username now read from DisplayName.RawText (Hytaleโ€™s authoritative name) in player JSON files, with fallback to Nameplate.Text when needed.

โœจ Added

  • โš™๏ธ EnablePlayerLevelNameplate - Main config option in RPGLevelingConfig.json. When true (default), player nameplates show level (e.g. โ€œUsername [Lvl. X]โ€). When false, player nameplates are not modified and show the default name only.
  • ๐Ÿ—„๏ธ External database sync - Sync player data (level, XP, stats) to an external database. Configure via DatabaseConfig.json in mods/Zuxaw_RPGLeveling/. Supports H2, MySQL, MariaDB, PostgreSQL via JDBC. Data flows from the game to the DB only - Hytale storage remains the source of truth. See Database Sync.
  • ๐Ÿ“‹ Leaderboard top 3 player name colors - Top 3 players now have colored names in the GUI leaderboard: gold (1st), silver (2nd), bronze (3rd). Current player stays highlighted in blue when viewing.

๐Ÿ”„ Changed

  • โš”๏ธ Difficulty balance - Monsterโ†’player damage per level reduced for all presets: Easy 0.5%, Normal 1%, Hard 2%, Extreme 4%.

[0.2.0] - 2026-01-31

Summary: 0.2.0 is a major update. Everything that changed between 0.1.10 and 0.2.0 is listed below. If you are upgrading from 0.1.10, you must manually migrate config from mods/RPGLeveling/ to mods/Zuxaw_RPGLeveling/ - see Configuration.

โœจ Added

  • ๐Ÿ“Œ Instance Level Config (InstanceLevelConfig.json) - Config file in mods/Zuxaw_RPGLeveling/ for instances and dungeons (where zone/biome are unknown). Define level ranges and per-entity overrides per instance. See Configuration โ†’ Instance Level Config.
  • ๐ŸŽฎ Monster-level XP - XP from mob kills based on monster level (not max health). Higher-level monsters give more base XP.
  • ๐Ÿ“Š Level-difference multipliers - How close the monsterโ€™s level is to yours affects XP. Same-level or ยฑ5 = best; much easier or much harder = reduced XP.
  • ๐ŸŒ Zones - 6 zones (Emerald Grove, Howling Sands, Borea, Devastated Lands, Skylands, Poisonlands) with different monster level ranges.
  • ๐Ÿ‘๏ธ HUD zone display - HUD shows current zone name and color: green = good match (ยฑ25 levels), white = too easy (โˆ’26+), orange/red/purple = too hard (+26+).
  • ๐ŸŽฒ Monster level variation - ยฑ5 levels per monster in a zone for variety.
  • โš”๏ธ Difficulty scaling - Monster damage and HP scale with level. Level-gap penalties when underleveled. See Difficulty Scaling.
  • ๐ŸŽš๏ธ Difficulty presets - Easy, Normal, Hard, Extreme via difficultyPreset in RPGLevelingConfig.json.
  • โš™๏ธ EnableGapLevelXpReducer - When true (default), XP is reduced when you are underleveled. When false, full XP from higher-level monsters.
  • โš™๏ธ EnableGapLevelDefense - When true (default), level-gap defense applies. When false, gap defense disabled. See Difficulty Scaling.
  • โš™๏ธ EnableGapLevelDamageToPlayer - When true (default), level-gap damage applies. When false, no bonus damage from gap. See Difficulty Scaling.
  • โš™๏ธ EnableMonsterLevelScale - Master toggle. When true (default), damage/HP per level, gap damage/defense, level-based XP. When false, XP falls back to HP-based; level display still works.
  • ๐Ÿ“Œ ZoneLevelConfig entity overrides - EntityOverrides in ZoneLevelConfig.json: force specific NPC type IDs to a fixed level, optional DisableLevelScaling, or precise XP per entity. See Configuration.
  • ๐Ÿ”Œ Public API for mod developers - Add XP, listen for level ups, get player level. See API.
  • ๐Ÿ‘ค Offline player support for admin commands - /lvl setlevel, /lvl setpoints, /lvl resetstats work for offline players. Success shows (offline). /lvl resetall already supported both.
  • ๐Ÿ”„ /lvl resetall - Reset level and stats for all players (online and offline). OP only.
  • ๐Ÿ‘๏ธ Entity info display (player nameplates) - When you look at another player, nameplate shows โ€œUsername [Lvl. X]โ€.
  • ๐Ÿ“‹ BlacklistedEntities - Comma-separated entity type IDs. Blacklisted entities give no XP and no level display.
  • โš”๏ธ EnablePVPXp - When true, killing a player awards XP; when false (default), no XP from PvP.
  • โš™๏ธ Config Management - Configs in mods/Zuxaw_RPGLeveling/. Improved handling, backups on modify.

๐Ÿ”„ Changed

  • ๐Ÿ“ Configuration file structure - Now 5 files in mods/Zuxaw_RPGLeveling/: RPGLevelingConfig.json, StatsLevelConfig.json, MessagesLanguageMapping.json, ZoneLevelConfig.json, InstanceLevelConfig.json. Stat-related settings moved to StatsLevelConfig.json. Messages file renamed from messages.json.
  • ๐Ÿ”Œ API: getPlayerLevelInfo(playerRef, store) - store now required - The overload without store was removed. Use getPlayerLevelInfo(playerRef, store) from the world thread. UUID overload unchanged.
  • ๐Ÿ“Š Underleveled XP penalties - Reduced. Now 50% (26โ€“30 levels higher), 60% (31โ€“40), 70% (41โ€“50), 80% (51+). Disable via EnableGapLevelXpReducer: false.
  • โš”๏ธ Gap defense (player โ†’ monster) - Reworked tiers. See Difficulty Scaling.
  • ๐Ÿ”‹ HP-based toughness - Monsters scale health with level. Higher-level mobs have more HP.
  • ๐ŸŒ Early zone ranges - Default zone levels adjusted: Emerald Grove 1โ€“15 (was 1โ€“25), Howling Sands 15โ€“50 (was 25โ€“50).
  • โš ๏ธ Manual migration - When updating from 0.1.9/0.1.10, manually migrate config from mods/RPGLeveling/ to mods/Zuxaw_RPGLeveling/. Plugin generates new defaults on first run.

๐Ÿ› Fixed

  • ๐Ÿ“Œ Config version in RPGLevelingConfig and StatsLevelConfig - Version now always written on save so config files stay in sync with the plugin.
  • ๐ŸŒ Monster level when crossing zones - Monster level is locked when it first appears; no drop when luring into a lower zone.
  • ๐Ÿ‘๏ธ Monster nameplate - Works on pre-release without white screen/crash; shown only when looking at a monster for performance.
  • ๐Ÿ‘๏ธ Monster nameplate not showing - Level is now shown using Nameplate component only; custom nameplates from other mods are not overwritten.
  • ๐Ÿ‘๏ธ Monster nameplate level jump on death - Spawn-level cache cleared when entity is removed, so level stays correct on corpse until despawn.
  • ๐Ÿ“Š HUD and GUI XP bar sync - LevelingService persists PlayerLevelData to store after XP/level-up so HUD and GUI stay in sync.
  • ๐Ÿ‘ฅ Nameplate collision with NPC/Pet mods - Level display detects existing nameplates and does not replace them.
  • ๐Ÿ“Š Level progression in /lvl gui - Progress bar and % now use same data source as HUD (API with store).
  • โš”๏ธ XP rewards and level gap - Player level correctly read from entity store; XP and gap penalties use actual level.
  • ๐ŸŽฏ Monster level caching - Monster levels cached on spawn in MobLevelData for consistent XP and display.
  • ๐Ÿ’ฐ Trivial XP penalty - Removed harsh 90% penalty for monsters 25+ levels below; low-level mobs now give full base XP (1.0x).
  • ๐Ÿ‘๏ธ Player level on nameplate - Level read from Store; โ€œUsername [Lvl. X]โ€ always shown for online players.
  • ๐Ÿ“‹ Leaderboard player names - Username stripped from nameplate overlay so leaderboard shows real usernames.
  • ๐Ÿ‘๏ธ Player level above head - Level read from entity Store instead of Holder.
  • ๐Ÿ“‹ BlacklistedStats - Now respected in all systems. Blacklisted = hidden in GUI, no allocation, no effect.
  • โ›๏ธ Mining crash - Fixed critical crash during mining.
  • ๐ŸŒ Zone config biome remap - MissingZoneIds replaced with MissingBiomeIds in ZoneLevelConfig.json; biomeโ†’zone remapping reliable, no world crash.
  • ๐Ÿ’€ ResetLevelOnDeath - Now correctly detects deaths and resets level, XP, and stat allocations when enabled.

๐Ÿ’™ Thank you

A huge thank you to everyone who supported the mod on Ko-fi - Benzitczo, Epickeks, aic - itโ€™s really encouraging and means a lot. Thanks too to everyone who has downloaded the mod, tested the beta, shared feedback, and helped others on Discord. Youโ€™re all part of this adventure, and thatโ€™s what gives me the strength to keep going.

[0.1.10] - 2026-01-26

๐Ÿ› Fixed

  • โ›๏ธ Mining crash fix - Fixed a critical issue that could cause random crashes during mining sessions.

โœจ New

  • ๐Ÿค PartyPro Compatibility - PartyPro - RPG Leveling Integration is now 100% compatible with RPG Leveling thanks to the excellent work of Tsumori, its developer. PartyPro allows you to share XP within a party/group, making cooperative gameplay even more rewarding!

๐Ÿ’ฌ Developer Note

๐Ÿš€ 0.2.0 Beta is here! Iโ€™ve been working hard on a massive rework of the mod, and the beta is now available for testing. Version 0.2.0-beta-5 introduces zones, monster-level XP, difficulty scaling, and much more. Your feedback during this beta phase is crucial to help me polish everything before the stable release. Check out the full changelog below for all the exciting new features!

[0.1.9] - 2026-01-24

๐Ÿ“– Documentation

  • Full documentation live - We now have docs to help with config issues and give you maximum detail on the mod. Before asking a question (in comments or on Discord): please read the docs first. 90% of the time the answer is already there. Iโ€™m alone answering everyone, and itโ€™s tough when people donโ€™t take the time to read the basics - so check the docs, itโ€™ll save us both time. ๐Ÿ’™

๐Ÿ› Fixed

  • ๐Ÿงฉ /lvl gui crash - Fixed the /lvl gui command crash caused by Hytaleโ€™s latest update. This should also fix the /lvl gui crash for some of you who had it even before the Hytale update.

๐Ÿ”œ Whatโ€™s next

  • v0.2.0-beta-5 - Beta available. Underleveled XP reducer, API store required, config version fix, monster level lock, nameplate fix. Switch to 0.2.0-beta-5 in the version selector for beta docs.

[0.1.8] - 2026-01-21

๐Ÿ› Fixed

  • ๐Ÿงฉ HUD/GUI compatibility - Opening /lvl gui no longer hides then re-shows the Level HUD. Toggling the HUD caused full HUD re-renders (including other HUD mods) and could crash/disconnect some users.

โšก Performance

  • ๐Ÿฒ Monster kills / combat - Reduced lag when mobs die by simplifying the kill-handling flow and removing heavy/spammy debug output during fights.
  • ๐Ÿ† Leaderboard - Opening the leaderboard is much smoother thanks to caching + background refresh; also updates instantly after admin /lvl setlevel.
  • ๐Ÿช“ Mining & woodcutting - Improved block-hit performance by avoiding repeated expensive lookups on every hit.
  • ๐Ÿงฉ HUD - Reduced unnecessary HUD work with smart updating + throttling to keep things stable on busy servers.
  • ๐Ÿ“ Logging - Removed non-essential / laggy logs and enforced using DebugLogger everywhere.

[0.1.7] - 2026-01-20

๐Ÿ”„ Changed

  • ๐ŸŽฏ Complete HUD Management Rework - Completely redesigned HUD system architecture for maximum compatibility.
  • โš”๏ธ Damage stat balance (low-damage weapons) - Rebalanced Damage stat scaling to be fairer for low base-damage weapons (e.g. daggers) while keeping high-damage weapons in check (hybrid scaling instead of pure % scaling).

โœจ Added

  • ๐Ÿงญ Wayfinder Compatibility - Full compatibility with Wayfinder mod by Alexr03.
    • โš ๏ธ Important: Wayfinder and EyeSpy are NOT compatible with each other.

โš ๏ธ Other

  • โš ๏ธ Performance Warning - EyeSpy can cause performance issues on servers with multiple HUD mods installed. EyeSpy forces all HUD mods/plugins to re-render, which can lead to significant lag on busy servers. They are working on it.

โšก Performance

  • ๐Ÿ–ฅ๏ธ Server-side performance improvements - Massive optimizations to reduce lag spikes during combat and on busy servers.
  • ๐Ÿš€ HUD Performance Improvements - Massive performance optimizations for HUD system (credit to Alexr03, creator of Wayfinder).

๐Ÿ’ก Developer Notes

  • Thanks to Alexr03 (creator of Wayfinder) for the inspiration and insights that led to the HUD performance improvements.

[0.1.6] - 2026-01-20

๐Ÿ”„ Changed

  • ๐Ÿ“Š BaseXP default - Changed default from 10.0 to 3 for more balanced XP gain from mob kills.
  • โš”๏ธ Damage stat - Replaced flat damage bonus with a multiplicative formula to be less cheated.
  • ๐Ÿ›ก๏ธ Defense stat - Replaced flat reduction with percentage-based, diminishing returns (e.g. 50 pts, 1.0 โ†’ ~40% reduction; always at least 20% of damage gets through).
  • ๐Ÿ“ˆ StatPointsPerLevel default - Changed default from 5 to 3 stat points per level up.

๐Ÿ› Fixed

  • ๐Ÿ† Leaderboard - Leaderboard was showing and sorting by XP on the current level only (e.g. 200/450). It now shows and sorts by total XP earned since the beginning (cumulative).
  • ๐Ÿ“œ AddXP command - /lvl addxp <player> <xp> was crashing with Assert not in thread!.

โœจ Added

  • ๐Ÿ’€ Death Penalty System - New configurable feature that resets player level to 1 upon death.
    • Disabled by default - Set ResetLevelOnDeath: true in config to enable.
    • When enabled, players who die will: level reset to 1, lose all XP, have all stat allocations cleared, available stat points reset to 0.
    • Prominent death notification shown when reset occurs.
    • Configuration: "ResetLevelOnDeath": false is added automatically to RPGLevelingConfig.json on next plugin load.

๐Ÿ’ฌ How to Enable Death Penalty

  1. Open mods/RPGLeveling/RPGLevelingConfig.json
  2. Find "ResetLevelOnDeath" (added automatically if missing)
  3. Change false to true
  4. Restart the server or reload the plugin

[0.1.5] - 2026-01-19

โœจ Added

  • ๐ŸŒ Translation Support - The plugin now supports multiple languages! Server messages, notifications, and GUI elements can be translated.
    • Fully customizable via messages.json at mods/RPGLeveling/messages.json
    • Easy to create and share community translations
    • English included by default
    • Translation file is automatically generated on first server start
    • See Translation for the full guide

๐Ÿ’ฌ Community Note

Donโ€™t worry if youโ€™re one of those people who break into a cold sweat at the mere thought of speaking English - now you can panic in your native language instead! ๐Ÿ˜…

[0.1.4] - 2026-01-19

โœจ Added

  • ๐Ÿ† Leaderboard System - New leaderboard page in the GUI showing all players (including offline) ranked by level and XP.
    • Top 100 players with rank, username, level, and XP
    • Highlights your own position
    • Special colors for top 3 (Gold, Silver, Bronze)
  • ๐ŸŽจ Navigation System - Completely redesigned GUI with modern sidebar navigation.
    • Sidebar with โ€œStats Managementโ€ and โ€œLeaderboardโ€ tabs
    • Active tab highlighting, smooth tab switching
  • ๐Ÿ› Debug Configuration - New Debug config option.
    • Debug: false (default) - clean console, no GUI/leaderboard spam
    • Debug: true - detailed debug logging for troubleshooting
    • Automatically added to existing config on server restart

๐Ÿ› Fixed

  • ๐Ÿ“ Console Spam - Fixed excessive logging from GUI and leaderboard. All debug logs now respect the Debug config.
  • ๐Ÿ‘๏ธ HUD Visibility - Level progress HUD no longer stays visible when opening Stats GUI; HUD hides/shows correctly with improved state management.

[0.1.3] - 2026-01-18

๐Ÿ› Fixed

  • ๐Ÿ›ก๏ธ Defense stat - Defense could reduce damage to 0 at high points. Now caps at 80% reduction; at least 20% of damage always gets through.
  • โš”๏ธ Damage stat - DamageStatValuePerPoint and DefenseStatValuePerPoint now load correctly from config at startup (workaround for Hytale Config). Default for both: 1.

๐Ÿ”„ Changed

  • ๐Ÿ“‹ BlacklistedStats default - No stats blacklisted by default. Default is "" instead of "StaminaRegenDelay".
  • ๐Ÿ›ก๏ธ DefenseStatValuePerPoint default - Raised from 0.5 to 1.
  • โš™๏ธ Default config - Full default RPGLevelingConfig.json documented in MODINFO (Configuration section).

[0.1.2] - 2026-01-17

๐Ÿ› Fixed

  • โš™๏ธ MaxStatPoints Params - Max stat point configuration now works correctly. All limits are properly applied and enforced.
  • ๐Ÿ”ซ Ammo Stat - Fixed ammo stat functionality; players can properly allocate points to increase ammo capacity.

๐Ÿ”„ Changed

  • โšก Stamina System Rework - Replaced StaminaRegenDelay with two stats:
    • StaminaRegenSpeed - How fast stamina regenerates
    • StaminaConsumption - How much stamina is consumed during activities
  • ๐ŸŒ Exploration Balance - New stamina stats make exploration more engaging and balanced.
  • ๐Ÿ“ BlacklistedStats Configuration - Fully modifiable in config; admins can customize which stats are hidden.
  • โš™๏ธ Default Configuration Values - Updated: MaxStatPointsAmmo 50โ†’4, new MaxStatPointsStaminaRegenSpeed 50, MaxStatPointsStaminaConsumption 50, BlacklistedStats โ†’ โ€œStaminaRegenDelayโ€ only.

๐Ÿ—‘๏ธ Removed

  • โœจ MagicCharges Stat - Removed for now due to bugs. May return in a future update.

[0.1.1] - 2026-01-17

๐Ÿ› Fixed

  • ๐Ÿชต Woodcutting/Mining Stat Separation - Woodcutting no longer affected mining blocks and vice versa. Mining and woodcutting are now properly separated.
  • โš–๏ธ Damage Calculation Formula - Reworked from flat addition to percentage-based multiplier: damage = baseDamage * (1.0 + statLevel * statValuePerPoint / 25).
  • ๐Ÿ“Š Stat Scaling Balance - Adjusted so blocks donโ€™t break too easily at low levels; level 50 with 50 woodcutting can break trees in 1โ€“2 hits.
  • ๐Ÿ”ข Zero Stats Handling - Zero points in a stat has no negative effect; base performance without penalties.

๐Ÿ”„ Changed

  • ๐Ÿ“ Mining/Woodcutting Calculation - Switched to percentage-based multipliers instead of flat damage addition.

[0.1.0] - 2026-01-17

โœจ Added

  • โš”๏ธ Damage Skill - Increases damage dealt to NPCs.
  • ๐Ÿ›ก๏ธ Defense Skill - Reduces damage taken from NPCs/entities.
  • ๐Ÿชจ Mining Skill - Increases damage to stone and ore blocks; mine faster.
  • ๐Ÿชต Woodcutting Skill - Increases damage to wood blocks; chop trees faster.
  • โš™๏ธ Maximum Stat Points Configuration - Per-stat limits (MaxStatPointsHealth, Stamina, Mana, Ammo, Oxygen, StaminaRegenDelay, MagicCharges, Immunity, Damage, Mining, Woodcutting, Defense). Default: 50 per stat.
  • ๐Ÿšซ BlacklistedStats Configuration - BlacklistedStats option (comma-separated) to blacklist specific stats. Default: Ammo, Immunity, MagicCharges, StaminaRegenDelay.

๐Ÿ”„ Changed

  • โšก HUD Performance Optimization - LevelProgress HUD reworked to use Hytaleโ€™s native CustomUIHud; better performance and stability.
  • ๐ŸŽจ UI Assets Rework - All UI assets updated for improved visuals and consistency.

๐Ÿ› Fixed

  • ๐Ÿ“ Log Error Fix - Fixed spam log errors on server start when players didnโ€™t have levelup data yet; proper initialization for new players.

[0.0.3] - 2026-01-16

๐Ÿ› Fixed

  • ๐Ÿšจ Critical HUD crash fix - Fixed critical HUD crashes with incremental updates, removed immediate updates, added proper change detection.

โœจ Added

  • ๐Ÿ‘๏ธ EnableHUD configuration option - Admins can disable the HUD display if desired.

๐Ÿ”„ Changed

  • โšก Optimized HUD updates - HUD updates only when data actually changes; fewer unnecessary updates, better performance.

[0.0.2] - 2026-01-16

๐Ÿ”„ Changed

  • ๐ŸŽจ HUD Reorganization - Level progress bar moved to center of screen, just above life and stamina bars for better visibility.
  • โŒจ๏ธ Command Prefix Rebranding - Rebranded from rpglvl to lvl for a shorter, cleaner command.

๐Ÿ› Fixed

  • ๐ŸŸซ Dirt Block Recipe Bug - Removed unintended dirt block crafting recipe (10 dirt โ†’ 1 dirt in pocket crafting).
  • ๐Ÿงฉ CustomUI HUD Crashes - Fixed โ€œCustomUI HUDโ€ crashes during gameplay.
  • ๐Ÿ“Š XP Progress Display Bug - Fixed HUD stuck at 0% XP progress; now shows actual XP percentage.

๐Ÿ“Œ Notes

  • ๐Ÿงฉ MultipleHUD Requirement - When using other HUD mods, install MultipleHUD; otherwise the level progress HUD wonโ€™t be visible.

[0.0.1] - Initial Release

โœจ Added

  • ๐ŸŽ‰ Initial release of the RPG Leveling plugin
  • ๐Ÿ“ˆ Basic leveling system
  • ๐Ÿ‘๏ธ HUD display for level and XP progress
  • โš™๏ธ Configuration system