Creator guide

Make a cosmetic

Orbit cosmetics are ordinary Blockbench models. If you can model in Blockbench, you can make one; no code, no resource packs.

Start from the template

  1. In game, press O to open the Cosmetic Manager and click Create.
  2. Orbit writes orbit/templates/orbit_template.bbmodel and opens it in Blockbench.
  3. Model inside the body part groups (below). The locked REFERENCE_PLAYER body shows where the player is; it is never drawn in game.
  4. Save the finished model into the orbit folder itself (not templates), with textures embedded.
  5. Click Reload in the manager, select your cosmetic and click Load.
Editing? Save in Blockbench, then click Reload. You don't need to restart the game.

Body parts

Put geometry inside groups with these exact names (capital letters). Each one follows that part of the player, including when they nod, swing their arms or sneak.

GroupFollowsPivot in Blockbench
HEADHead: where the player looks0, 24, 0
BODYTorso0, 24, 0
RIGHT_ARMRight arm5, 22, 0
LEFT_ARMLeft arm-5, 22, 0
RIGHT_LEGRight leg1.9, 12, 0
LEFT_LEGLeft leg-1.9, 12, 0
anything elseThe player's position and body turn only0, 0, 0 (between the feet)

Keep each group's origin on its pivot (the template already does) and what you see on the reference player in Blockbench is what you get in game. One pixel in Blockbench is one pixel on the player.

Not drawn in game: the REFERENCE_PLAYER group, anything with Export turned off, faces without a texture, locators and null objects.

Animations

Make animations in Blockbench's Animate tab as usual: rotation, position and scale keyframes with linear, step, smooth or bezier curves, and Molang expressions. Then select the cosmetic in the manager and click Animations.

Animation settings in game for a walk animation and a random animation.
SettingWhat it does
PlaysIdle, Walk, Sprint, Jump, Fall, Sneak, Crouch, Swim, Fly, Always, Random or Never
ModeLoop; Once (then back to rest); Hold (stay on the last frame)
Min / max waitFor Random: the pause between plays, picked at random in this range (up to 120 s)
Speed0.1× to 4×
PriorityWhen two animations move the same part, the higher one wins
InterruptWhile playing, pauses this cosmetic's lower-priority animations

Name your animations IDLE, WALK, SPRINT, JUMP, FALL, SNEAK, CROUCH, SWIM, FLY or RANDOM (or animation.hat.walk, run, fidget and similar) and they are set up automatically.

Movement physics

In the Animations screen, Advanced makes parts react to movement: a cape that lifts when running, a tail that swings when turning, ears that bounce when jumping. It works with or without animations.

Physics settings for one part in game.

Click Add part…, choose a group from the tree of your model's parts, and set any of position X/Y/Z and rotation X/Y/Z (Blockbench axes):

SettingWhat it does
Moves withForward (backward is negative), Sideways, Vertical, Any speed or Turning
StrengthPixels or degrees per block per second of movement; negative reverses it
MaximumThe furthest it can move, in pixels or degrees
Resistance0 reacts instantly; close to 1 reacts late and settles smoothly

Up to 8 parts per cosmetic. A good start for a cape: rotation X, Forward, strength 8, maximum 40°, resistance 0.6.

Sharing your cosmetic

Your animation and physics settings are saved in a .json file with the same name as the model, for example top_hat.bbmodel and top_hat.json. Send both files and others get your cosmetic exactly as you set it up; dropping the model onto the manager brings the settings along.

Add your name and a description to that file; they show up in the manager:

{
  "orbitCosmetic": 1,
  "model": "top_hat.bbmodel",
  "name": "Top hat",
  "author": "Your name",
  "description": "A tall hat with a swinging brim.",
  "animations": { ... },
  "physics": { ... }
}

On a server, the cosmetics you wear are shared automatically with other Orbit players. You don't need to send files to anyone.

Limits

To keep everyone's game fast, models are checked before they are used. The default limits:

File size2 MiB (1 MiB to share through Orbit Cloud)
Cubes and meshes1,024
Faces6,144
Groups256, nested up to 16 deep
Textures8, each up to 512 × 512
Animations32

Servers can set lower limits, and can choose which body parts are allowed. The manager tells you which limit a model goes over.

Tips