File Details
mysticnametags-1.1.6.jar
- R
- Mar 2, 2026
- 20.77 MB
- 272
- Early Access
File Name
mysticnametags-1.1.6.jar
Supported Versions
- Early Access
🏷 MysticNameTags v1.1.6
🧩 Server Compatibility
- Target Server Version:
>= 2026.1.0 - Tested against Hytale server builds
2026.1.x. - Fully compatible with v1.1.5 configs and data (tags, settings, storage).
🔥 Major Additions
1️⃣ Reliable Playtime Requirements + Zib’s Playtime Integration
Playtime-based tag requirements are now fully functional and no longer rely on broken/legacy API calls.
New Playtime Backend
Playtime is now provided via a dedicated PlaytimeService:
- Ticks online time at a configurable interval (default 60s).
- Persists playtime using the same
storageBackendas tags:FILE,SQLITE, orMYSQL.
- Exposed through
IntegrationManagerviaPlaytimeProvider.
Tags that use:
"requiredPlaytimeMinutes": 60
now correctly check against this service.
Configurable playtime provider
settings.json gained a playtimeProvider mode:
"playtimeProvider": "AUTO"
Supported values:
"AUTO"– Prefer Zid’s Playtime mod if present, otherwise fallback to internal stats."INTERNAL"– Always use MysticNameTags’ internalPlaytimeService."ZIB_PLAYTIME"– Force Zib’s Playtime; logs a warning and falls back if the mod isn’t found."NONE"– Disable playtime requirements (they always pass).
Zib’s Playtime as Optional Depend
If Zid’s Playtime is installed:
- MysticNameTags automatically wires a
ZibPlaytimeProviderthroughIntegrationManager. - Playtime requirements read directly from Zib’s API.
- If the mod is missing or the API misbehaves:
- MysticNameTags now fails cleanly and falls back to the internal provider instead of throwing.
TL;DR – Playtime requirements work, don’t crash, and can be swapped between internal and Zib’s Playtime via config.
2️⃣ EndlessLeveling Stat Requirements
Tags can now depend on EndlessLeveling stats using special requiredStatKey prefixes.
New behavior in IntegrationManager#getStatValue:
- Keys starting with
endlessleveling.are routed through EndlessLevelingStatBridge. - If that succeeds, the result is used as the stat value.
- If EndlessLeveling is missing or throws, the system logs at
FINElevel and continues with internal stats (no hard failure).
Examples in tags.json:
"requiredStatKey": "endlessleveling.level",
"requiredStatValue": 30
"requiredStatKey": "endlessleveling.xp",
"requiredStatValue": 15000
"requiredStatKey": "endlessleveling.skill.archery",
"requiredStatValue": 10
The tag requirements panel now renders these nicely via resolveStatDisplayName:
endlessleveling.level→ “Endless Level” (localized)endlessleveling.xp→ “Endless XP” (localized)endlessleveling.skill.<Attr>→ “Skill Level: <Pretty Name>` or a localized string where provided.
This lets you build progression tags like “Endless Wanderer”, “Archery Adept”, or “Level 50 Founder” against the EndlessLeveling progression curve.
3️⃣ Settings System Quality-of-Life Overhaul
settings.json has been cleaned up and made far more self-documenting, without breaking compatibility.
Grouped sections with inline descriptions
Instead of a pile of _comment_* fields, the file is now grouped by section:
"_": "MysticNameTags settings.json – edit & reload/restart to apply changes.",
"_core": "Core nameplate settings. nameplateFormat = layout (tokens: {rank}, {name}, {tag})...",
"nameplateFormat": "{rank} {name} {tag}",
"stripExtraSpaces": true,
"language": "en_US",
"tagDelaysecs": 60,
"__storage": "Storage backend for tag ownership data...",
"storageBackend": "FILE",
"sqliteFile": "playerdata.db",
"mysqlHost": "localhost",
...
Sections include:
_core– nameplate format, cooldown, language_storage– FILE/SQLITE/MYSQL + connection details_nameplates– master toggle + default tag behavior_endless– EndlessLeveling nameplate/race options_placeholders– WiFlow / helpch PlaceholderAPI toggles_economy– economySystemEnabled, coin mode, physical coin mode, permission gate_rpg– RPGLeveling nameplate hooks_playtime– playtime provider mode +/tags ownedtoggle_other– any unknown/future settings
New/updated settings
tagDelaysecsConfigurable equip cooldown in seconds before a player can equip a different tag. Used by the UI equip throttle & notification.playtimeProvider(See Playtime section above.)economySystemEnabled,useCoinSystem,usePhysicalCoinEconomyClarified roles, with better inline documentation:economySystemEnabledis the master flag – iffalse, the Tags UI showsN/Abalance and tag purchases don’t attempt any economy backend, even if EcoTale/HyEssentialsX/VaultUnlocked/etc. are present.
ownedTagsCommandEnabledControls whether/tagsowned+ the owned-only UI path are available.
Existing fields like language, RPGLeveling toggles, and default tag behavior remain unchanged but are now much easier to understand for server owners.
4️⃣ Tag UI & Nameplate QoL Improvements
In addition to the v1.1.5 requirements panel, v1.1.6 adds further polish and control.
Equip Cooldown & Feedback
- New equip throttle using
Settings.getTagEquipDelaySeconds():- When a player tries to equip a different tag too quickly, MysticNameTags:
- Cancels the action.
- Sends a localized notification (via
MysticNotificationUtil) showing the remaining cooldown seconds.
- When a player tries to equip a different tag too quickly, MysticNameTags:
- Cooldown does not apply to:
- Unequips.
- Equipping the same tag again.
- Internal ownership changes.
Smarter Requirements Panel (extended)
The hover panel now:
- Shows playtime progress using a dedicated translation key:
- Example:
Playtime: 32 / 60 minutes
- Example:
- Includes a block for placeholder-based requirements (for integrations that use placeholder conditions in
tags.json):- Uses readable
placeholder operator valuelines.
- Uses readable
- Uses better rank & tag color detection for the Current Nameplate preview:
- Tries rank prefix color first.
- Falls back to tag’s primary color if needed.
All of this is wired through MysticNameTagsTagsUI and the buildRequirementsBody(...) / resolveStatDisplayName(...) helpers, and is fully localization-friendly.
⚙ Improvements
- Playtime integration is now centralized and pluggable via
PlaytimeService+PlaytimeProvider, instead of scattered or broken API calls. - EndlessLeveling integration is no longer nameplate-only:
- You can now use Endless stats directly in
requiredStatKey.
- You can now use Endless stats directly in
- Settings are easier to read and reason about, with grouped sections and short in-file docs for each group.
- IntegrationManager:
- Clean separation between:
- Internal stats (PlayerStatManager).
- EndlessLeveling stats via
EndlessLevelingStatBridge. - Playtime providers (internal vs Zib’s Playtime).
- More defensive logging around stat/placeholder/item handlers.
- Clean separation between:
🚀 Performance
- Playtime tracking piggybacks on the existing ECS + timer infrastructure:
- No per-tick bloat; updates occur at the configured interval.
- EndlessLeveling stat lookups:
- Only happen when a tag actually needs an
endlessleveling.*stat. - Fail fast and defer to internal stats if the bridge throws.
- Only happen when a tag actually needs an
- Requirements hover panel:
- Only builds content when actually hovering a tag with requirements.
- Uses cached
canUsewhere possible to avoid repeated expensive checks.
🐛 Bug Fixes
- Fixed broken or outdated playtime API calls, which previously caused:
- Playtime requirements to silently fail or never unlock.
- Occasional errors when external playtime mods were missing.
- Ensured that Zid’s Playtime being absent no longer spams stack traces:
- Integration is now truly optional and safely probed via reflection.
- Fixed edge cases where missing or malformed
requiredStatKey/requiredPlaytimeMinutesvalues intags.jsoncould cause NPEs or incorrect lock states. - Improved resilience of:
- Item requirement handlers – unexpected inventory API issues now log and fail safe, instead of bricking tags.
- Stat providers – bad or unknown stat keys no longer break the UI and are handled gracefully.
- Resolved minor UI inconsistencies between:
- Economy dashboard reporting and tag menu “balance N/A”.