HD skins and animated GIF capes for NeoForge 1.21.1
Release / release (push) Has been cancelled

This commit is contained in:
Nghtly
2026-07-04 17:43:21 +03:00
commit d404d7bf0b
23 changed files with 1717 additions and 0 deletions
+72
View File
@@ -0,0 +1,72 @@
# SkinsG
Client-side Minecraft mod that adds **HD skins** (up to 2048×2048) and **animated GIF capes**
(with HD & transparency), driven by a launcher/site asset API keyed on player UUID.
Currently targets **NeoForge 1.21.1**. Fabric/Forge and 1.20.1 / 1.19.2 are planned — the core
(GIF decoder, cape state, mixins) is written to be loader/version agnostic.
## Features
- HD skins: the legacy-skin conversion is rescaled so 128/256/…/2048-wide skins render correctly.
- GIF capes: decoded once, then played back by copying a pre-composited frame per tick — no
per-frame decoding, no AWT, so it doesn't cost FPS. Playback speed comes from the GIF itself.
- HD PNG capes fall through to the vanilla renderer untouched.
- Per-player control and persistence (see below).
## Install
Drop `skinsg-x.y.z.jar` into your `mods/` folder on a NeoForge 1.21.1 client. Client-side only.
## Configuration
On first launch the mod writes `config/skinsg.json` with an **empty** `baseUrl`. Nothing is
fetched until you set it.
```json
{
"baseUrl": "https://your.host",
"mode": "ALL",
"enabled": [],
"blocked": [],
"globalSpeed": 100,
"speed": {}
}
```
- `baseUrl` — root of your asset API. The mod requests `"<baseUrl>/api/minecraft/cape/<uuid>?gif"`;
if the response is a GIF it is animated, otherwise the vanilla cape is kept.
- `globalSpeed` — playback speed in percent (`100` = the GIF's own timing).
- The rest is managed by the in-game commands and shouldn't be edited by hand.
Edit `baseUrl`, then restart the client (or rejoin).
## Commands
`/skinsg` (client-side, tab-completes online players and `@a`):
| Command | Effect |
| --- | --- |
| `/skinsg playgif` | Turn animated capes off (frees memory) |
| `/skinsg playgif @a` | Animate everyone |
| `/skinsg playgif <player>` | Animate only listed players |
| `/skinsg stopgif` | Same as `playgif` with no target — off |
| `/skinsg stopgif @a` | Off for everyone |
| `/skinsg stopgif <player>` | Stop a specific player (works even in `@a` mode) |
| `/skinsg self` | Animate only your own cape |
| `/skinsg speed @a <percent>` | Global speed override |
| `/skinsg speed <player> <percent>` | Per-player speed override |
All settings persist in `config/skinsg.json`.
## Building
```
./gradlew build
```
Output: `build/libs/skinsg-<version>.jar`. Requires JDK 21.
## License
All rights reserved.