🧍 Skin Restorer
Skin Restorer fetches and applies real Minecraft skins for players on offline-mode servers. Skins are injected on join (no relog needed) and cached locally to reduce Mojang API calls.
To enable: set
enableSkinRestorer: true in general.json. Automatically disabled in online-mode.
Jump to
⚙️ How it works
- Player joins — Voidium checks if the player has a cached skin
- Cache hit — If the skin is cached and not expired, it’s applied immediately
- Cache miss — Voidium queries the Mojang API:
- First: resolve player name → official UUID via
api.mojang.com - Then: fetch skin texture data (value + signature) via
sessionserver.mojang.com
- First: resolve player name → official UUID via
- Injection — The skin is applied to the player’s game profile on login (early join injection — no relog required)
- Cache save — The skin data is stored in
skin-cache.jsonwith a timestamp
Smart features
- Auto-disabled in online mode — When the server is in online mode, real skins are already available
- Webhook integration — When chat bridge uses webhooks, the correct skin avatar is resolved even for offline-mode players
📝 Configuration
The Skin Restorer is configured via general.json:
| Field | Type | Default | Description |
|---|---|---|---|
enableSkinRestorer |
boolean | true |
Master switch |
skinCacheHours |
int | 24 |
How long to keep cached skins before re-fetching (hours, min 1) |
Cache file
Skins are cached in config/voidium/storage/skin-cache.json. Each entry contains:
- Player name → skin texture value + signature + timestamp
- Entries older than
skinCacheHoursare re-fetched on next join
Tip: Set
skinCacheHours higher (e.g. 48) to reduce Mojang API calls, or lower (e.g. 6) if players frequently change skins.
⌨️ Commands
| Command | Permission | Description |
|---|---|---|
/voidium skin <player> |
OP | Force-refresh an online player’s skin |
The command re-fetches the skin from Mojang API immediately, updating both the cache and the player’s in-game appearance.