Skin Customizer (Spigot Library)
1.0.1A Spigot toolkit to create interactable skin customization interfaces in Minecraft
Skin Customizer
A Spigot plugin/toolkit to create interactable, realtime skin customization interfaces inside Minecraft itself. It features a variety of different components (hair styles, eyes, shirts...) and colors to work with.
Dependencies
This project depends on Citizens to create the skin preview, and SkinsRestorer to actually apply the skin to the player. Under the hood, the project uses MineSkin to upload the generated skin textures to Mojang and jens.skin (my project) to render a collection of chosen options to an actual skin.
Getting started
To test the plugin, make sure you install all dependencies and run the /customizer command as an operator. The customizer will spawn.
Developer guide
Start using this project as a dependency by including it in your pom.xml like this:
<!-- Repository (if not already present) -->
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
<!-- Dependency -->
<dependency>
<groupId>com.github.jensjeflensje</groupId>
<artifactId>skin-customizer</artifactId>
<version>1.0.1</version>
<scope>provided</scope>
</dependency>
Please refer to this readme for the developer guide on creating customizers using Java code.
Structure
The project is focused around the SkinCustomizer class, which can be instantiated with a Bukkit location to summon the customizer. The customizer consists of:
- The skin preview using a Citizens NPC (SkinPreview)
- The UI to customize the skin
- Scrolling buttons to scroll through components for a specific category (e.g. hair styles)
- Color options for each category
- The button to apply the skin
UI elements (buttons)
The UI is based on display entities containing skulls, with an interaction entity acting as a hitbox for the button. Every other element ( apply button, scrolling buttons, color button ) is based on one or multiple instances of this base button, InteractableButton.
Customization
Most element of the skin customizer are customizable in the config.yml file, like the different categories, options within that category, and color options. These options come together to form the SkinCustomizerOptions object, which can also be replaced by a custom one and given to SkinCustomizer's constructor.
Caveats
This system of constantly uploading new skins to Mojang can be quite slow. The plugin tries to relieve this by caching the skin using the combination of components as a cache key, but this doesn't apply to newly made combinations.
Motivation
I created jens.skin a while ago and I thought it would be fun to make a version that's inside Minecraft itself. Even though it's not perfect, I'm still quite proud of it :).
Similar projects
Plugin →Let Me Despawn
Improves performance by tweaking mob despawn rules. Say bye to pesky unintentional persistent mobs.
25MSueta
JourneyMap
Real-time map used for mapping in-game or your browser as you explore.
14.7MSueta
Emotecraft
Create your own emotes in Minecraft.
7.5MSueta
Simple Tpa
A simple tpa plugin which sends requests
5.4MSueta
Common Network
Forge and Fabric Unified Networking Solution
3.9MSueta
Set Home
A lightweight plugin for players to set their homes.
3.8MSueta