Overview

The Creator is an advanced character creation system that uses a mouse cursor-like interface for players to customize their character. It supports:

Important: This cursor-based creator is now the primary and recommended character creation system. The older hotbar-based creator (/clothes create, /clothes stage, /clothes exit) is deprecated and will be removed in a future update.

Preview

Add cursor-demo.mp4 to assets/videos/

Quick Setup

  1. Create a dedicated area/world for character creation
  2. Stand where you want the camera to be and run /clothes cursor setcamera
  3. Add your overlay PNGs to the creator folders (see structure below)
  4. Run /clothes cursor reload to regenerate the config
  5. Test with /clothes cursor start

Overlay Folder Structure

The creator auto-detects overlays from these folders:

Folder Structure
plugins/ClothesPlus/overlays/
├── hairs/
│   └── creator/
│       ├── female/           # Gender-specific folder
│       │   ├── Ponytail.png
│       │   └── Long_Hair.png
│       └── male/
│           ├── Buzz_Cut.png
│           └── Spiky.png
├── shirts/
│   └── creator/
│       ├── female/
│       │   └── Blouse.png
│       └── male/
│           └── Tshirt.png
├── skin-colours/
│   └── creator/
│       ├── steve-skin-1.png  # Unisex (no gender folder)
│       ├── steve-skin-2.png
│       └── steve-skin-3.png
└── eyes/
    └── creator/
        ├── female/
        │   ├── 1.png         # File name becomes option ID
        │   └── 2.png
        └── male/
            ├── 1.png
            └── 2.png
Auto-Detection: File names become display names. Use underscores for spaces (e.g., Long_Hair.png → "Long Hair")

cursor_creator.yml Configuration

Basic Settings

YAML
# Enable/disable the cursor creator system
enabled: true
debug: false

First-Join Configuration

When enabled, new players see a "Create Character" button on first join:

YAML
# First-join character creation settings
first-join:
  # Enable first-join character creation
  enabled: true

  # Delay in ticks before showing the UI after player joins (20 ticks = 1 second)
  delay-ticks: 40

  # Camera position for first-join UI
  # Use /clothes cursor setjoincamera to set this to your current position
  camera:
    enabled: true
    world: world
    position:
      x: 0.0
      y: 100.0
      z: 0.0
    rotation:
      yaw: 0.0
      pitch: 0.0

  # The "Create Character" button shown to new players
  button:
    text: '<green><bold>✦ Create Character ✦</bold></green>'
    hover-text: '<dark_green><bold>✦ Create Character ✦</bold></dark_green>'
    x: 0.0
    y: 0.5
    z: 0.5
    scale: 1.0

  # Commands to execute when player clicks "Create Character"
  commands: []

Cursor Settings

Customize the cursor appearance and behavior:

YAML
# Cursor appearance and behavior
# Supports Nexo, ItemsAdder, or Oraxen custom items
cursor:
  material: PAPER
  custom-model-data: 10007
  # Custom item from Nexo/ItemsAdder/Oraxen (optional)
  # Formats: ':item_id:', ':nexo:item_id:', ':ia:item_id:', ':oraxen:item_id:'
  custom-item-id: ''
  scale: 0.2
  sensitivity:
    x: 0.5
    y: 0.5
  max-bounds:
    x: 4.0
    y: 5.5
  glow: false
  brightness:
    enabled: true
    block-light: 15
    sky-light: 15
  # Click effect - changes cursor appearance when clicking
  click-effect:
    enabled: true
    custom-model-data: 10008
    duration-ticks: 3
    particle:
      enabled: true
      type: DUST_COLOR_TRANSITION
      count: 2
      color:
        r: 255
        g: 215
        b: 0

Camera Settings

Set with /clothes cursor setcamera command:

YAML
# Main creator camera position
camera:
  world: Novigrad
  position:
    x: 861.0556013815336
    y: 83.0
    z: 1115.5568421039548
  rotation:
    yaw: 119.73687
    pitch: -0.8999923
  distance: 3.5

NPC Preview Settings

YAML
# NPC Preview during character creation
npc-preview:
  enabled: true
  distance: 4.0
  height-offset: -0.6
  auto-spin: true
  spin-speed: 2.0

  # Zoom mode: "multiplier" or "fixed"
  zoom-mode: fixed
  zoom-multiplier: 0.6
  zoom-position:
    x: -0.3
    y: -0.8
    z: 2.5

  # Drag-to-spin feature
  drag-to-spin:
    enabled: true
    sensitivity: 1.8
    min-drag-threshold: 0.2
    hitbox-width: 1.2
    hitbox-height: 1.9

  # Drag cursor - shown while dragging to spin
  drag-cursor:
    material: PAPER
    custom-model-data: 10009
    scale: 0.2
    glow: false

  # Hover cursor - shown when hovering over NPC (indicates draggable)
  hover-cursor:
    enabled: true
    material: PAPER
    custom-model-data: 10010
    scale: 0.2
    glow: false

  # Zoom hint text
  zoom-hint:
    text: '<black>Press <green>Q</green> to zoom in/out</black>'
    position:
      x: 2.35
      y: 0.5
      z: 0.0
    scale: 0.4
New Features:
  • Hover Cursor: Cursor changes when hovering over the NPC to indicate it can be dragged to spin
  • Race & Class System: Optional race and class selection with filtering
  • Multi-Command Support: Commands can be chained with semicolons and include delays

Race and Class System

The optional Race and Class system allows for more advanced character creation. Races are detected from subfolders in non-clothing categories (eyes, skin-colours, hairs). Classes are detected from subfolders in clothing categories (shirts, outfits).

Selection Flow

Race → Class → Gender → Customization

Folder Structure for Races

FOLDER
overlays/
├── eyes/creator/
│   ├── male/
│   │   ├── human/Blue_Eyes.png    ← Race "human"
│   │   └── elf/Glowing_Eyes.png   ← Race "elf"
├── skin-colours/creator/
│   ├── male/
│   │   ├── human/Fair_Skin.png
│   │   └── elf/Pale_Skin.png

Folder Structure for Classes

Classes are detected from subfolders in clothing categories. By default: shirts, outfits, clothes. This is configurable!

YAML
# Customize which categories have CLASS subfolders
class-outfit-categories:
  - shirts
  - outfits
  - clothes
  - armor    # Add your own!
FOLDER
overlays/
├── shirts/creator/          ← Listed in class-outfit-categories
│   ├── male/
│   │   ├── warrior/Plate_Armor.png  ← Class "warrior"
│   │   ├── mage/Wizard_Robe.png     ← Class "mage"
│   │   └── rogue/Leather_Vest.png   ← Class "rogue"
├── eyes/creator/            ← NOT listed → subfolders = races
│   ├── male/
│   │   ├── human/Blue_Eyes.png      ← Race "human"
│   │   └── elf/Glowing_Eyes.png     ← Race "elf"

Race Configuration

YAML
# Restrict which classes each race can use
race-configurations:
  human:
    display-name: "Human"
    allowed-classes:
      - warrior
      - mage
      - rogue
  elf:
    display-name: "High Elf"
    allowed-classes:
      - mage
      - ranger    # Elves can be rangers
  orc:
    display-name: "Orc"
    allowed-classes:
      - warrior   # Orcs can only be warriors

Class Configuration

YAML
# Restrict which races can use each class
class-configurations:
  warrior:
    display-name: "Warrior"
    allowed-races:
      - human
      - orc
  mage:
    display-name: "Arcane Mage"
    allowed-races:
      - human
      - elf
  ranger:
    display-name: "Forest Ranger"
    allowed-races:
      - elf       # Only elves can be rangers
Automatic Detection:

Running /clothes cursor regenerate will automatically detect races and classes from your folder structure and generate the appropriate sections.

Gender Section with Multi-Commands

Gender cycle options support multiple commands separated by semicolons. Use delay:XX to add a delay in ticks (20 ticks = 1 second). Running /clothes cursor regenerate will auto-generate these commands based on your overlay folder structure.

YAML
# Gender section with auto-generated commands
gender:
  title: <gradient:#FF69B4:#4169E1>━━ ⚥ Gender ━━</gradient>
  cycle-enabled: true
  show-navigation: true
  cycle-options:
    - id: gender_female
      display: <light_purple>♀ Female
      # Multi-command: reset skin, wait 1 second, apply first overlay from each category
      command: 'clothes reset %player%; delay:20; clothes wear %player% eyes/creator/female/Black_Eyes,hairs/creator/female/Chestnut_Long,shirts/creator/female/White_Gown_Dress,skin-colours/creator/female/Dark_Skin'
    - id: gender_male
      display: <aqua>♂ Male
      command: 'clothes reset %player%; delay:20; clothes wear %player% eyes/creator/male/Blue_Eyes,hairs/creator/male/Buzzcut_Black,shirts/creator/male/Black_Knight,skin-colours/creator/male/Dark_Skin'
  buttons:
    confirm:
      text: <green>✓ Confirm
      action:
        type: SET_GENDER
Multi-Command Format:

Commands are separated by ; (semicolon). Use delay:XX to wait XX ticks before the next command.

Example: clothes reset %player%; delay:20; clothes wear %player% path1,path2

HUD Settings

YAML
# Hide HUD elements during creator for immersion
hud:
  hide-exp-bar: true
  hide-hotbar: true
  hide-boss-bars: true
  hide-chat: true

Custom Items Integration

The creator supports custom items from Nexo, ItemsAdder, and Oraxen for UI elements:

YAML
# Nexo custom item format
cursor:
  custom-item-id: ':nexo:cursor_item:'
  # or auto-detect: ':cursor_item:'
YAML
# ItemsAdder custom item format
cursor:
  custom-item-id: ':ia:namespace:cursor_item:'
  # or with default namespace: ':ia:cursor_item:'
YAML
# Oraxen custom item format
cursor:
  custom-item-id: ':oraxen:cursor_item:'
Auto-Detection: Using format :item_id: will try Nexo first, then ItemsAdder, then Oraxen.

Creator Commands

Command Description
/clothes cursor start Start the creator for yourself
/clothes cursor stop Stop your creator session
/clothes cursor reload Reload cursor_creator.yml and regenerate from overlays
/clothes cursor setcamera Set main camera to your current position
/clothes cursor setjoincamera Set first-join camera to your current position
/clothes cursor resetplayer <name> Reset a player's creator data (triggers first-join again)
/clothes cursor resetall Reset all players' creator data
/clothes cursor triggerjoin [player] Manually trigger the first-join UI for a player

Tips & Best Practices

Troubleshooting

Cursor not appearing?

  • Make sure enabled: true in cursor_creator.yml
  • Check if the custom-model-data matches your resource pack
  • If using custom items, verify the plugin is installed and item exists

Options not showing?

  • Check folder structure - overlays must be in category/creator/gender/
  • Run /clothes cursor reload to regenerate config
  • Check console for any error messages

First-join not triggering?

  • Player data is stored in cursor_data.yml
  • Use /clothes cursor resetplayer <name> to reset
  • Or use /clothes cursor triggerjoin <name> to manually trigger

Skin resets to Mojang default on rejoin?

  • ClothesPlus automatically reapplies your skin 1 second after joining, and again at 3 seconds as a backup
  • If using SkinsRestorer or similar plugins, they may conflict - ensure ClothesPlus loads after them
  • Check if overlays are stored in database (if MySQL is enabled) or in data/overlays/ folder
  • The skin cache system stores recently used combinations - try /clothes cache clear if experiencing issues
  • Run /overlays to manually reapply your skin if needed