Skip to content

A Spigot toolkit to create interactable skin customization interfaces in Minecraft

License

Notifications You must be signed in to change notification settings

jensjeflensje/skin-customizer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

Demo

Demo video

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 :).

About

A Spigot toolkit to create interactable skin customization interfaces in Minecraft

Topics

Resources

License

Stars

Watchers

Forks

Languages