HDSkinSupportGravit

Client-side Minecraft mod that adds HD skins (up to 2048×2048) and, importantly, animated GIF cape support — including HD and transparent GIFs — on top of a UUID-keyed asset API. Built for GravitLauncher setups but backend-agnostic.

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: animated capes decoded from GIF (HD, transparency, per-frame timing). 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 (overridable per player).
  • HD PNG capes fall through to the vanilla renderer untouched.
  • Per-player control and persistence.

Backend integration (easy)

The mod talks to your existing site/launcher backend over plain HTTP — no server-side plugin needed. Set one value (baseUrl) in the config and the mod requests:

GET <baseUrl>/api/minecraft/cape/<uuid>?gif

If the response is a GIF it is animated; anything else (PNG / 404) keeps the vanilla cape. This maps cleanly onto most launcher-site engines (DLE-based sites, custom backends, etc.) — you just expose that one endpoint returning the player's GIF cape by UUID. HD skins use the normal skin URL your launcher already serves, so they need no extra endpoint.

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.

{
  "baseUrl": "https://your.host",
  "mode": "ALL",
  "enabled": [],
  "blocked": [],
  "globalSpeed": 100,
  "speed": {}
}
  • baseUrl — root of your asset API (no hardcoded host in the mod).
  • 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

Free to use and modify for any purpose. Commercial use must credit the author (Nghtly). See LICENSE.

S
Description
No description provided
Readme
194 KiB
Languages
Java 100%