Skip to main content

Overview

BetterModel provides a sophisticated 12-limb player animation system that allows you to create custom player models with full-body animations while maintaining compatibility with armor, elytra, and player skins.

Understanding Player Limbs

The 12-Limb System

BetterModel’s player models consist of 12 independent limbs:
  1. Head
  2. Body
  3. Left Arm
  4. Right Arm
  5. Left Leg
  6. Right Leg
  7. Left Arm Layer (outer layer)
  8. Right Arm Layer (outer layer)
  9. Left Leg Layer (outer layer)
  10. Right Leg Layer (outer layer)
  11. Cape
  12. Elytra (when equipped)
This structure mirrors the vanilla player model with additional layer support for advanced customization.

Player Model Directory

Place player limb models in the players/ directory:
Player limb models are not saved persistently. They must be recreated when a player joins the server.

Creating Player Models

BlockBench Setup

In BlockBench, structure your player model with proper limb names:
Use the exact limb names above for automatic recognition and proper synchronization with player movements.

Limb Tags

Tag specific limbs for automatic behavior:
  • player_tag: Always visible nametag
  • head: Head rotation tracking
  • head_with_children: Head rotation including child bones

Loading Player Models

Basic Loading

Load a player limb model from the API:

Applying to Players

Create a player tracker:

Simplified Player Animation API

Use the ModelManager for quick player animations:

Player Tracking and Movement

Body Rotator

Player trackers use EntityBodyRotator in player mode for correct body/head rotation:

Automatic Synchronization

Player models automatically sync with:
  • Position: Follows player location
  • Rotation: Matches player head and body rotation
  • Animations: Syncs with player movements
  • Potion effects: Applies invisibility and other effects

Working with Player Skins

Using Player Skin Textures

Apply a player’s skin to a model:

Custom Skin Profiles

Use a custom skin profile:

Skin Parts Control

Control which skin parts are visible:

Player Animations

Standard Player Animations

Create animations for common player actions:
  • idle: Standing still
  • walk: Walking
  • run: Sprinting
  • sneak: Sneaking
  • swim: Swimming
  • jump: Jumping
  • attack: Attacking/mining
  • use: Using items
  • bow_draw: Drawing a bow
  • throw: Throwing items

Playing Player Animations

Animation State Management

Implement player animation states:

Player Model Events

Creating Player Tracker Event

Player Join/Leave Handling

Armor and Equipment

Armor Rendering

BetterModel integrates with the ArmorModel library to render armor on custom player models:

Equipment Slots

Handle equipment changes:

Advanced Player Model Features

Custom Player Hitboxes

Add interactive hitboxes to player models:

Dynamic Player Model Switching

Switch between different player models:

Per-Player Model Visibility

Show different models to different players:

Best Practices

Performance Considerations:
  • Player models are computationally intensive
  • Limit the number of simultaneous player models
  • Use sightTrace in TrackerModifier to reduce rendering
  • Cache tracker references
  • Clean up trackers on player disconnect
Common Pitfalls:
  • Player models don’t persist across restarts
  • Limb names must match exactly for proper synchronization
  • Armor rendering requires correct bone structure
  • Player models require the players/ directory, not models/

Model Organization

Example: RPG Class System

Next Steps

Per-Player Animation

Advanced per-player animation techniques

Resource Pack Generation

Understand automatic resource pack creation