Skip to content

Server Models

Overview

Server model files define the physical and behavioural properties of an entity’s visual representation on the server: hitbox dimensions, eye height, scale variation, bone-targeted camera tracking, and the full library of named animation sets used by the AI and physics systems. They are separate from client-only visual assets — the server needs hitbox and animation metadata to run collision, AI, and sound logic. Models support inheritance via a Parent field.

File Location

Assets/Server/Models/
Beast/
Bear_Grizzly.json
Bear_Polar.json
Cactee.json
Boss/
Critter/
Deployables/
Elemental/
Flying_Beast/
Flying_Critter/
Flying_Wildlife/
Human/
Mannequin.json
Player.json
Intelligent/
Instances/
Livestock/
Pets/
Projectiles/

Schema

Top-level

FieldTypeRequiredDefaultDescription
ModelstringYesPath to the .blockymodel file defining the visual mesh.
TexturestringNoPath to the default texture applied to the model.
ParentstringNoID of a parent model definition to inherit unset fields from.
EyeHeightnumberYesHeight in units from the entity’s feet to its eye position. Used for camera placement and line-of-sight.
CrouchOffsetnumberNo0Vertical offset applied to the eye position when the entity is crouching.
HitBoxHitBoxYesAxis-aligned bounding box used for collision and hit detection.
MinScalenumberNo1Minimum random scale applied to this entity on spawn.
MaxScalenumberNo1Maximum random scale applied to this entity on spawn. Scale is chosen uniformly between min and max.
DefaultAttachmentsobject[]No[]List of item attachments present on the entity by default (e.g. held weapons).
CameraCameraConfigNoBone-targeted camera tracking configuration.
AnimationSetsobjectYesMap of animation set name → AnimationSet. See below.
IconPropertiesIconPropertiesNoCamera parameters used when rendering the entity’s inventory icon.

HitBox

FieldTypeRequiredDefaultDescription
MinVector3YesMinimum corner of the AABB relative to the entity’s origin (feet).
MaxVector3YesMaximum corner of the AABB relative to the entity’s origin.

Vector3

FieldTypeRequiredDefaultDescription
XnumberYesX component.
YnumberYesY component (vertical).
ZnumberYesZ component.

CameraConfig

FieldTypeRequiredDefaultDescription
PitchCameraAxisNoPitch tracking configuration.
YawCameraAxisNoYaw tracking configuration.

CameraAxis

FieldTypeRequiredDefaultDescription
AngleRange.MinnumberYesMinimum angle in degrees the camera can track on this axis.
AngleRange.MaxnumberYesMaximum angle in degrees the camera can track on this axis.
TargetNodesstring[]YesBone names the camera aims at when tracking.

AnimationSet

An animation set is a named group of one or more animation clips. The engine plays one clip from the group (randomly or in sequence depending on context).

FieldTypeRequiredDefaultDescription
AnimationsAnimationEntry[]YesOne or more animation clips in this set.

AnimationEntry

FieldTypeRequiredDefaultDescription
AnimationstringYesPath to the .blockyanim animation file.
SpeednumberNo1Playback speed multiplier.
BlendingDurationnumberNo0Time in seconds to blend from the previous animation into this one.
LoopingbooleanNotrueWhether the animation loops. Set to false for one-shot animations.
SoundEventIdstringNoSound event triggered when this animation plays (e.g. footstep sounds).

IconProperties

FieldTypeRequiredDefaultDescription
ScalenumberNoZoom level used when rendering the icon.
Rotation[number, number, number]NoEuler rotation [X, Y, Z] in degrees applied to the model for icon rendering.
Translation[number, number]No2D [X, Y] offset in pixels applied to centre the model in the icon frame.

Standard Animation Set Names

The engine expects specific named sets. Custom sets can be added for scripted use.

NamePurpose
IdleStanding still
Walk / WalkBackwardWalking forward/backward
RunRunning
Crouch / CrouchWalk / CrouchWalkBackwardCrouched states
Jump / JumpWalk / JumpRunJump variants
FallFalling
Swim / SwimIdle / SwimFast / SwimBackwardSwimming states
Fly / FlyIdle / FlyFast / FlyBackwardFlying states
Hurt / DeathDamage reactions
AlertedAggro trigger
Sleep / Laydown / WakeRest cycle
SpawnSpawn-in animation
Roar / Search / EatFlavour animations

Example

Grizzly Bear (Assets/Server/Models/Beast/Bear_Grizzly.json, condensed):

{
"Model": "NPC/Beast/Bear_Grizzly/Models/Model.blockymodel",
"Texture": "NPC/Beast/Bear_Grizzly/Models/Texture.png",
"EyeHeight": 1.5,
"CrouchOffset": -0.3,
"HitBox": {
"Max": { "X": 0.8, "Y": 1.8, "Z": 0.8 },
"Min": { "X": -0.8, "Y": 0.0, "Z": -0.8 }
},
"MinScale": 0.9,
"MaxScale": 1.25,
"DefaultAttachments": [],
"Camera": {
"Pitch": {
"AngleRange": { "Max": 45, "Min": -45 },
"TargetNodes": ["Head"]
},
"Yaw": {
"AngleRange": { "Max": 45, "Min": -45 },
"TargetNodes": ["Head"]
}
},
"AnimationSets": {
"Idle": {
"Animations": [
{ "Animation": "NPC/Beast/Bear_Grizzly/Animations/Default/Idle.blockyanim", "Speed": 0.6 }
]
},
"Run": {
"Animations": [
{ "Animation": "NPC/Beast/Bear_Grizzly/Animations/Default/Run.blockyanim", "SoundEventId": "SFX_Bear_Grizzly_Run", "Speed": 1 }
]
},
"Death": {
"Animations": [
{ "Animation": "NPC/Beast/Bear_Grizzly/Animations/Damage/Death.blockyanim", "Looping": false, "SoundEventId": "SFX_Bear_Grizzly_Death" }
]
}
}
}

Mannequin (Assets/Server/Models/Human/Mannequin.json) — uses Parent inheritance:

{
"Model": "NPC/MISC/Mannequin/Models/Model.blockymodel",
"Texture": "NPC/MISC/Mannequin/Models/Model_Default.png",
"EyeHeight": 1.6,
"HitBox": {
"Max": { "X": 0.3, "Y": 1.8, "Z": 0.3 },
"Min": { "X": -0.3, "Y": 0.0, "Z": -0.3 }
},
"MinScale": 1,
"MaxScale": 1,
"Parent": "Player",
"DefaultAttachments": [],
"AnimationSets": {
"Hurt": {
"Animations": [
{ "Animation": "Characters/Animations/Damage/Default/Hurt.blockyanim", "BlendingDuration": 0.1, "Looping": false },
{ "Animation": "Characters/Animations/Damage/Default/Hurt2.blockyanim", "BlendingDuration": 0.1, "Looping": false }
]
}
}
}