# Name Tag - v1.0.6 ## Name & Skin Collision Fix, Ghost Tab Cleanup, and Data Safety ### PLUGIN UPDATES - **UUID Spoofing** — Wired up the `should_spoof_uuid` config key to the existing UUID spoofing logic. This is still an experimental feature, I wouldn't recommend enabling this. - The code was reading `change_uuids` but config.yml defined `should_spoof_uuid`, so the feature never activated. - Added config migration for v3/v4 configs to include the new key. ### PLUGIN FIXES - **Fixed custom skin and custom names colliding** — When a player gets nicked with a custom name alongside a custom skin, upon rejoin, it nicks the user with the custom name rather than applying the custom skin. - **Fixed ghost tab entries from UUID spoofing** — When a player's UUID was spoofed, the old tab entry was never removed because `hidePlayer` tried to remove the *new* UUID instead of the old one. The player is now hidden *before* the UUID changes so the correct entry is removed. - **Fixed ghost tab entries on player quit** — The 1-tick delayed `showPlayer` call inside the refresh mechanism could fire after a player disconnected, re-adding them as a ghost entry. All delayed `showPlayer` calls now check `player.isOnline()` first. - **Fixed default skin after UUID spoof** — `setUniqueId` was calling `forcePlayerUpdate()` immediately, refreshing the player before their skin had been fetched. The refresh now only happens after the UUID is fully resolved and set. - **Fixed `setNickname()` premature refresh** — When UUID spoofing is enabled, `refreshPlayer()` was called before the async `setUniqueId` resolved. The refresh is now deferred to `setUniqueId` completion when spoofing is active. - **Fixed silent data loss on corrupted `data.yml`** — `YamlConfiguration.loadConfiguration()` silently swallows parse errors and returns an empty config. The next save would then overwrite the corrupted file with only one player's data. Switched to `config.load()` which throws the exception, allowing the backup/recovery logic to properly trigger. - **Player cache cleanup on quit** — Player data is now removed from the in-memory cache after saving on quit, preventing stale entries. ### INTERNAL UPDATES - Bumped version to `1.0.6`.