Cape Provider
Provides you with capes! You can choose from various providers or add your own
Cape Provider
<img align="right" src="https://raw.githubusercontent.com/litetex-oss/mcm-cape-provider/refs/heads/dev/src/main/resources/assets/icon.png" width=192 />
Provides you with capes!
You can choose from various providers or add your own.
Improved/Reworked version of the "Capes" mod: * Improved and easier cape provider integration * Allows ordering providers * Support for custom providers * More options to fine tune how capes are applied * Written only in Java (no Kotlin needed) * Various fixes and improvements
Creating a custom cape provider
<img align="right" src="https://raw.githubusercontent.com/litetex-oss/mcm-cape-provider/refs/heads/dev/assets/config-2.avif" width=360 />
The mod provides many different ways how a provider can be added.
The following possibilities are sorted by simplicity:
Simple Local Provider
> Recommended for: > * Users that just want a customizable cape > * Modpacks (using `config/cape-provider/simple-custom`)
The simplest way to display a cape is by going into the `config/cape-provider` directory and creating a cape texture file named `cape.png`.
Additionally there are the following optional files: * `owners.txt` - Determines which player names or UUIDs will get the cape displayed. If this file is not present then all players will display with the cape. * `name.txt` - To override the display name of the provider
You can also add more providers by creating corresponding directories in `config/cape-provider/simple-custom`.<br/>Example: `config/cape-provider/simple-custom/my-super-cool-provider/cape.png`
Remote Provider in configuration
> Recommended for: > * Users that want to add a custom remote provider
This demo showcases how to apply the capes inside ``custom-cape-demo``.
1. Open the config file located in ``config/cape-provider/config.json`` 2. In the ``remoteCustomProviders`` section add the following entry: ```jsonc { "id": "cp1", "name": "CustomProvider1", // You can replace uuid with $id, $name or $idNoHyphen to customize the cape per Player "uriTemplate": "https://raw.githubusercontent.com/litetex-oss/mcm-cape-provider/refs/heads/dev/custom-cape-demo/uuid.png" } ```
Example for SkinMC
```jsonc { "id": "skinmc", "name": "SkinMC", "uriTemplate": "https://skinmc.net/api/v1/skinmcCape/$id" } ```
3. Restart the game and activate the provider
For more details have a look at RemoteCustomProvider and RemoteCustomProviderConfig
NOTE: Texture resolvers can be selected using the `textureResolverId` attribute (see below for details).
via Mods
> Recommended for: > * Mods
If you are a mod developer and want to e.g. display a cape for supporters or contributors of your mod, you can provide it using the mod's resources and/or metadata in ``fabric.mod.json``. The overall behavior is similar to how ``modmenu`` handles this.
##### Local/Simple (Recommended)
This approach requires no network communication and is the recommended way. It works by reading metadata and resources from the `cape` directory.
Here is an example: 1. Add the following mod metadata: ``fabric.mod.json`` ```json5 { ... "custom": { "cape": "Contributors" } } ``` 2. Create a `cape` directory inside `resources` 3. Add the cape texture in `cape/cape.png` 4. Add the players that should be given the cape in `cape/owners.txt` with their UUIDs or names
Note: There is also a more detailed variant
``fabric.mod.json`` ```json5 { "custom": { "cape": { "name-extra": "Contributors", "owners": { // You can also used UUIDs "names": [ "Notch" ] } } } } ```
The mod uses this strategy itself. See the `fabric.mod.json` or `cape` directory for details.
##### Remote
Here's an example implementation that shows how a remote cape provider can be added:
``fabric.mod.json`` ```json5 { ... "custom": { "cape": "https://raw.githubusercontent.com/litetex-oss/mcm-cape-provider/refs/heads/dev/custom-cape-demo/uuid.png" } } ```
Here's a more detailed variant
``fabric.mod.json`` ```json5 { "custom": { "cape": { // Gives everyone a christmas cape // You can also use variables here, like $uuid. See above for more details // You may have to escape the $ with or you can alternatively use § instead of $ // Alternative: "uriTemplate" "url": "https://example.org/textures/§uuid.png", "changeCapeUrl": "https://...", "rateLimitedReqPerSec": 20 // Default is 20 } } } ```
Programmatic
You can also create a programmatic cape provider.
Further notes
Maximum size
Images/Textures should not exceed 10MB. Otherwise they might be ignored.
Texture resolvers / Animated textures
The following resolvers are currently built-in:
| Resolver-ID | Animated | Format | Example | Notes | | --- | --- | --- | --- | --- | | `default` / null | ❌ | PNG | uuid.png | | | `sprite` | ✔ | Stacked PNG | animated.png | | | `gif` | ✔ | GIF | animated.gif | Usage not recommended<br/>GIFs require more resources when compared to more modern formats like PNG. |
Please note that animated textures can be frozen or completely disabled in the settings.