This commit is contained in:
@@ -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.
|
||||
Reference in New Issue
Block a user