Create, customize, save, and manage your character appearances with an easy-to-use Avatar Editor and Outfit System for Hytale.
SupOutfit lets players customize their character directly in-game, create different appearances, save them as outfit presets, and switch between them whenever needed.
Create different looks for exploration, roleplay, events, factions, or any situation where you want to quickly change your character's appearance.
SupOutfit includes a fully integrated Avatar Editor that allows players to customize their character without leaving the server.
The Avatar Editor works directly with Hytale's cosmetic system, allowing players to create complete character appearances using the game's available cosmetics.
Save your customized appearances as outfit presets and switch between them whenever you want.
-, and _ in outfit namesSupOutfit adds a dedicated Custom Wardrobe block designed specifically for character customization and outfit management.
The Outfit Browser provides a compact and easy-to-use interface for managing saved outfits.
SupOutfit currently supports:
Commands, command descriptions, UI elements, buttons, messages, and Avatar Editor categories are localized where supported.
SupOutfit provides a configurable config.json file.
Configuration is stored in:
mods/SupOutfit/config.json
`
maxOutfits
Maximum number of outfits each player can save.
Default:
"maxOutfits": 10
changeByCommandEnabled
Controls whether players can change outfits through the outfit commands.
Default:
"changeByCommandEnabled": false
When disabled:
/supoutfit save remains availableleftSideUI
Controls whether the Outfit Browser and Avatar Editor are moved to the left side of the screen.
Default:
"leftSideUI": false
When enabled, the UI is positioned on the left side of the screen, leaving the center of the screen unobstructed so the player's character remains visible.
{
"maxOutfits": 10,
"changeByCommandEnabled": false,
"leftSideUI": false
}
| Command | Description |
|---|---|
/supoutfit browser | Opens the wardrobe interface |
/supoutfit save | Saves your current appearance as an outfit |
/supoutfit set | Switches to a saved outfit |
/supoutfit list | Lists your saved outfits |
/supoutfit delete | Deletes a saved outfit |
/supoutfit rename | Renames a saved outfit |
/supoutfit help | Shows the available commands |
/supoutfit info | Shows plugin information |
| Command | Description |
|---|---|
/supoutfit open | Opens the outfit browser for yourself |
/supoutfit open | Opens the target player's outfit browser |
The admin open command can be used to manage another player's wardrobe without requiring the player to use the command themselves. It also opens your own outfit browser even when outfit changing through commands is disabled.
The main command can also be accessed using:
/outfit/soConfiguration is stored in:
mods/SupOutfit/config.json
Outfits are stored per player as JSON files in:
mods/SupOutfit/Outfits//
SupOutfit provides a public API that allows other Hytale plugins to integrate with its avatar customization and outfit systems.
Plugins can open the Avatar Editor or Outfit Browser directly from their own systems without requiring players to use SupOutfit commands.
The API also provides access to outfit management operations such as creating, applying, renaming, and deleting outfits.
SupOutfitAPI api = SupOutfitAPI.get();
if (api == null) {
// SupOutfit is not installed or not yet initialized
return;
}
The public contract is versioned independently from the plugin version:
int version = api.getApiVersion(); // equals SupOutfitAPI.API_VERSION
openAvatarEditor(PlayerRef player) — opens the Avatar Editor for a playeropenOutfitBrowser(PlayerRef player) — opens the Outfit Browser for a playergetOutfitNames(UUID playerId) — lists the player's saved outfitshasOutfit(UUID playerId, String name) — checks whether an outfit existsgetOutfit(UUID playerId, String name) — retrieves a saved outfitgetMaxOutfits() — returns the configured outfit limitsaveOutfit(UUID playerId, String name, PlayerSkin skin) — saves or overwrites an outfitdeleteOutfit(UUID playerId, String name) — deletes an outfitrenameOutfit(UUID playerId, String oldName, String newName) — renames an outfitapplyOutfit(PlayerRef player, String name) — applies an outfit asynchronouslyApplying an outfit runs on the target player's world thread. The API schedules the operation and returns a CompletableFuture that completes with the actual result once the skin has been applied:
api.applyOutfit(player, "Knight")
.thenAccept(applied -> {
if (applied) {
// outfit applied successfully
}
});
All operations are safe to call from any thread. UI and skin operations are scheduled internally on the target player's world thread, and the API never exposes Store, Ref, or any internal SupOutfit class. Outfit management operations only touch disk I/O and may run from any thread. OutfitData is an immutable record that always returns defensive copies of PlayerSkin.
The API is available from the end of SupOutfit's setup(). Obtain it at runtime (e.g. in your plugin's start() method), never during plugin setup, since plugin load order is not guaranteed.
This makes SupOutfit suitable for integration with:
SupOutfit is useful for:
Create different appearances for different roles, factions, events, or adventures and switch between them whenever needed.
Planned features: