Client-side privacy masking for Minecraft player names, skins, and capes.
Nick Hider masks player identity details in common vanilla client rendering and text paths.
- Local player: replace your shown name, skin, and cape.
- Other players: replace names with a template and swap skins/capes from configured source accounts.
- FTB heads: when FTB Library-based UIs are present (including FTB Teams/Chunks), player heads follow Nick Hider skin masking rules.
- UUID masking: masked identities use deterministic Minecraft-style UUIDs derived from the final displayed name (
OfflinePlayer:<name>). - Global switch: instantly enable or disable all masking behavior.
- Download the jar for your exact Minecraft + loader combination from Releases.
- Put the jar in your Minecraft
modsfolder. - Launch the game and open settings from Mod Menu (Fabric + Mod Menu), Mod List (Forge/NeoForge), keybind
Open Nick Hider Settings(default unbound), or command/nickhider. - First-time setup suggestion: enable
Hide Local Name,Hide Local Skin, andHide Local Cape, then setLocal Replacement Nameto a neutral alias. - Join a world/server and verify your own name and skin/cape are masked; enable
Hide Other Names/Skins/Capesif you also want to mask other players. - After config save/reload, Nick Hider automatically refreshes skin/cape sources in the background.
| Area | Behavior |
|---|---|
| Local name | Replaces your local displayed name |
| Local skin | Replaces your local rendered skin |
| Local cape | Replaces your local cape and cape-based elytra texture |
| Other names | Template-based replacement with [ID] token support |
| Other skins/capes | Shared configured source usernames |
| UUID masking | Deterministic UUID generated from final displayed name |
| FTB player heads | FaceIcon-based heads respect local/other skin toggles |
| External fallback | Optional mineskin.eu + api.capes.dev (default: off) |
| Runtime toggle | Global Enable Nick Hider on/off switch |
| Open config | Keybind + /nickhider command |
| Refresh behavior | Automatic source refresh (no manual refresh button) |
| Diagnostics | NH-* runtime codes with throttled warnings |
- Supported Minecraft versions:
1.20.1and1.21.1 - Loader support policy:
1.20.1: Fabric, Forge1.21.1: Fabric, NeoForge
- Artifacts declare exact Minecraft version compatibility (
1.20.1or1.21.1), not open-ended ranges. - On Forge/NeoForge, Nick Hider declares an optional
ftblibrarydependency withordering="BEFORE"to initialize head masking hooks as early as possible when FTB Library is installed.
Short matrix:
1.20.1: Fabric, Forge1.21.1: Fabric, NeoForge
For exact jar availability per release, use GitHub Releases.
- Hide local: name, skin, cape
- Hide others: names, skins, capes
- Global master toggle:
Enable Nick Hider - Optional switch:
Enable External Skin/Cape Fallbacks(default: off)
- Local replacement name
- Local skin source username
- Local cape source username
- Other players name template
- Other players skin source username
- Other players cape source username
- Replacement usernames must be empty or match
[A-Za-z0-9_]{3,16}. - Local replacement name must match
[A-Za-z0-9_]{3,16}. - UUID masking uses
UUID.nameUUIDFromBytes("OfflinePlayer:<final_displayed_name>")and does not query Mojang APIs. - UUID masking follows name toggles (
Hide Local Name,Hide Other Names). - UUID masking also covers shortened UUID prefixes commonly shown by some mods (for example only the first 8 hex chars).
- FTB head masking follows skin toggles (
Hide Local Skin,Hide Other Skins) whenFaceIcon-based UIs are present. - FTB
FaceIconhead textures are enforced ongetFace(...), after FTB async skin callbacks, and right beforeFaceIcon.draw(...), so later async updates do not restore original heads while masking is enabled. - When FTB provides a
GameProfilewithout a usable player name, Nick Hider resolves the name by UUID and still masks the head profile. - If cape masking is enabled but no valid cape source resolves, cape rendering is hidden instead of showing the original cape.
- External fallbacks are queried only after official skin/cape lookups fail.
- Saving or reloading config clears runtime cache and starts an automatic source prefetch.
- Skin/cape runtime diagnostics use stable
NH-*codes (for exampleNH-SKIN-FETCH,NH-SKIN-RECOVERED,NH-HOOK-FAIL). - Repeated identical failures are throttled per source user to avoid console spam.
- Hook failures log the first incident as warning, and subsequent repeats as debug.
Nick Hider is aggressive on vanilla client paths, but masking is still best-effort. Third-party mods or custom render/UI pipelines can display unmasked data outside covered paths.
FTB integration is implemented through optional FaceIcon hooks. If a mod does not use FaceIcon for player heads, Nick Hider cannot enforce head masking there.
Requirements:
- Java 21
- Git
Build:
./gradlew clean buildRun tests:
./gradlew testLicensed under the GNU Affero General Public License v3.0 (AGPLv3).
See LICENSE.
- Author:
przxmus - Source: GitHub Repository
- Issues: GitHub Issues