NovaSkin icon

NovaSkin -----

NovaSkin is a feature-complete skin & cape management plugin for Paper servers.



# NovaSkin — Complete Skin & Cape Management

**Set any skin. On any player. At any time.**
NovaSkin gives server administrators and players full control over
Minecraft skins and capes — no restarts, no delays, instant results.

---

## ✨ Features

### Skin Management
- Set skins by **Minecraft username**, direct **image URL**, or **Base64 upload**
- Apply skins to **online and offline players** alike
- **Reset** any player to their real Mojang skin instantly
- **Copy** a skin from one player to another in one command
- Per-player **skin history** (last 20 changes with timestamps)
- **Force re-fetch** to refresh a skin from Mojang on demand

### Cape Support
- Capes are **automatically detected and attached** when fetching a
Mojang skin (if that account owns a cape, it comes with it)
- Attach a cape from **any Mojang username** or a **direct URL**
- **Remove a cape** independently without touching the skin
- Skin and cape are always preserved separately — no accidental overwrites

### Storage & Performance
- **SQLite** out of the box — zero setup required
- **MySQL** support with HikariCP connection pooling for larger networks
- **In-memory TTL cache** (configurable, default 6 hours) — skips API
calls entirely on repeated requests
- All API calls, database queries, and skin fetches are **fully async**
— the main thread is never blocked

### ️ Skin Aliases
- Save frequently-used skins as named aliases (`/skin alias set ninja Notch`)
- Apply aliases to any player with one command
- Manage your alias library with list, remove, and apply

### Integrations
- **PlaceholderAPI** — expose skin name, source, cape status, and more
to scoreboards, tab lists, and chat plugins
- **Mineskin API** — generate signed textures from image URLs with
optional API key for higher rate limits
- **Mojang Session API** — fetches full signed profiles including capes

### ️ Admin Controls
- Full **permission node tree** — granular control per group
- **Cooldown system** with bypass permission
- **Audit trail** — every skin change logs who set it and when
- `/skin reload` to hot-reload config and messages without restart

---

## Commands

| Command | Description |
|---|---|
| `/skin set [player] <name>` | Set skin from a Minecraft username |
| `/skin set [player] url:<url>` | Set skin from image URL |
| `/skin reset [player]` | Restore real Mojang skin |
| `/skin copy <from> <to>` | Copy skin between players |
| `/skin cape set <name\|url:URL> [player]` | Attach a cape |
| `/skin cape remove [player]` | Remove cape, keep skin |
| `/skin info [player]` | View skin source, cape, set-by |
| `/skin history [player]` | Last 10 skin changes |
| `/skin alias set/remove/list/apply` | Manage skin aliases |
| `/skin update [player]` | Force re-fetch from Mojang |
| `/skin upload <player>` | Apply skin via Base64 paste |
| `/skin reload` | Reload config & messages |

Aliases: `/skins`, `/skintool`

---

## Permissions

| Node | Description | Default |
|---|---|---|
| `novaskin.use` | Set/reset your own skin | `true` |
| `novaskin.others` | Apply to other players | `op` |
| `novaskin.url` | Use URL skins | `op` |
| `novaskin.cape` | Use cape commands | `op` |
| `novaskin.alias` | Apply aliases | `true` |
| `novaskin.alias.manage` | Create/delete aliases | `op` |
| `novaskin.history` | View own history | `true` |
| `novaskin.history.others` | View others' history | `op` |
| `novaskin.upload` | Base64 upload | `op` |
| `novaskin.reload` | Reload config | `op` |
| `novaskin.admin` | All permissions | `op` |

---

## ⚙️ Requirements

- **Paper** 1.21.x — 26.1.2+
- **Java** 21+
- PlaceholderAPI *(optional)*

---

## PlaceholderAPI Placeholders
Resource Information
Author:
----------
Total Downloads: 35
First Release: Jun 15, 2026
Last Update: Jun 15, 2026
Category: ---------------
All-Time Rating:
0 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings