Overview
BetterModel uses BlockBench Generic models (.bbmodel files) to render 3D models in Minecraft Java Edition. This guide walks you through creating, exporting, and configuring models for the plugin.
Prerequisites
- BlockBench installed (free 3D modeling software)
- Basic understanding of 3D modeling concepts
- BetterModel plugin installed on your server
Creating Your First Model
Name your groups clearly (e.g.,
head, body, left_arm). These names are used in the API to reference specific parts.walk, attack, idle)Directory Structure
Place your exported model files in the BetterModel plugin directory:models/: General models that can be attached to entities and savedplayers/: Player-specific limb models (12-limb animation system)
Model Types
General Models
General models are used for entities, NPCs, and standalone objects. They support:- Full save/load functionality
- Entity binding and tracking
- Custom hitboxes
- Damage animations and tinting
Player Limb Models
Player limb models are designed for the 12-limb player animation system:- Head, Body, Arms, Legs
- Left/Right Arm Layers, Left/Right Leg Layers
- Cape support
- No persistent saving
Best Practices
Naming Conventions
Use descriptive, consistent names for bones and groups:Bone Tags
BetterModel recognizes special bone tags for automatic behavior:head: Applies head rotation trackinghitbox: Automatically creates a hitbox for this bonetag: Creates a nametag displayshadow: Adds a shadow underneath the model
Pivot Points
Set correct pivot points for natural rotation:- Arms should pivot at the shoulder
- Legs should pivot at the hip
- Head should pivot at the base of the neck
Texture Resolution
Animation Length
Consider the purpose of each animation:- Idle: 2-4 seconds (loop)
- Walk: 0.5-1 second (loop)
- Attack: 0.3-0.6 seconds (once)
- Death: 1-2 seconds (once)
Testing Your Model
EntityTracker tracker = BetterModel.model("demon_knight")
.map(r -> r.create(BukkitAdapter.adapt(entity)))
.orElse(null);
Common Issues
Model doesn’t appear
- Check console for loading errors
- Verify the
.bbmodelfile is in the correct directory - Ensure texture files are accessible
- Reload the plugin after making changes
Animations are broken
- Check that bone names match between BlockBench and your code
- Verify animation loop settings
- Ensure pivot points are correctly positioned
Textures are missing
- Keep texture files in the same directory as the
.bbmodel - Use relative paths in BlockBench
- Check file permissions
Advanced Techniques
Custom Model Properties
Create a model configuration file to customize behavior:Molang Expressions
BetterModel supports Molang expressions in animations for dynamic behavior based on game state.Multiple Texture Variants
Create texture variants by duplicating the model with different texture references for customization.Next Steps
Spawning Entities
Learn how to spawn and bind models to entities
Playing Animations
Control animations programmatically
