Skip to content

Types, enums and constants

Status: Implemented (API 1.24). Generated from client/clight/idl/clight_api.json by tools/docs/gen_api_reference.py; do not edit by hand.

Explanations: Core types and Conventions. Lua spells enum values in lower case without the prefix ("survival", "all").

Constants

C name Type Value
CL_API_VERSION_MAJOR uint32_t 1
CL_API_VERSION_MINOR uint32_t 24
CL_PRIORITY_FIRST int32_t -2000
CL_PRIORITY_EARLY int32_t -1000
CL_PRIORITY_NORMAL int32_t 0
CL_PRIORITY_LATE int32_t 1000
CL_PRIORITY_LAST int32_t 2000
CL_PRIORITY_MONITOR int32_t 10000
CL_BLOCK_UNLOADED uint32_t 4294967295

Aliases

C name C type
cl_result int32_t
cl_ident uint32_t
cl_holder uint32_t
cl_block_state uint32_t
cl_block_id uint32_t
cl_item_id uint32_t
cl_entity_type_id uint32_t
cl_event_type uint32_t
cl_color uint32_t
cl_mixin_target uint32_t
cl_accessor uint32_t

Handles

A handle is a struct with one 64-bit number (.h); 0 is the null handle (CL_IS_NULL(h)).

C type C++ class Owned (release) Notes
cl_level clight::Level
cl_entity clight::Entity
cl_item_stack clight::ItemStack cl_stack_release
cl_text clight::Text cl_text_release
cl_buf clight::Buf cl_buf_release
cl_sub clight::SubHandle
cl_task clight::Task
cl_keybind clight::Keybind
cl_config clight::Config
cl_cmd_ctx clight::CmdCtx
cl_gui clight::Gui A draw context. Valid only inside the render callback it was passed to.
cl_hud_layer clight::HudLayer
cl_screen clight::Screen
cl_widget clight::Widget
cl_rml_doc clight::RmlDoc
cl_menu clight::Menu A server-side container menu opened for one player. It uses a vanilla menu type, so vanilla clients and clients without the mod see and use it normally (the chest-GUI pattern of server plugins).
cl_sound clight::Sound A sound playing on this client (from cl_sound_play_local / cl_sound_play_ui). 0 = none.
cl_mixin clight::Mixin
cl_cmd_node clight::CmdNode
cl_audio_bus clight::AudioBus An effect bus (an EFX auxiliary effect slot) and a mod PCM stream. 0 = none.
cl_audio_stream clight::AudioStream An effect bus (an EFX auxiliary effect slot) and a mod PCM stream. 0 = none.
cl_model clight::Model
cl_snapshot clight::Snapshot cl_snapshot_release
cl_path clight::Path cl_path_release
cl_goal clight::Goal
cl_post_pass clight::PostPass
cl_http_req clight::HttpReq HTTPS requests behind the net.http:<host> capability: the mod lists “net.http:api.example.com” (or “net.http:.example.com", or "net.http:”) in its manifest “permissions” or “optional_permissions”, and the player allows it on the mod’s Permissions screen. Plain http:// only for localhost / 127.0.0.1 / [::1] (still with the capability). Redirects are followed only to hosts the mod may reach, never from https to http.
cl_emitter clight::Emitter A particle emitter on an entity: every interval ticks it spawns s (s.pos is an offset: blocks along the bone’s right / up / forward axes with a bone, else along the world axes from the entity’s feet; s.vel / spread / speed / count / colour / scale as level_particle) at the entity, or at a bone of its glTF model (“” = the entity). Client handles: only this client sees it; server handles: sent like level_particle (vanilla clients get the fallback). The emitter ends with the entity, with emitter_remove, or when the mod unloads.
cl_hud_element clight::HudElement A HUD element: a part of the HUD the player can move, scale and hide in the HUD editor and in Appearance > HUD.
cl_ui_page clight::UiPage An Appearance page of a mod (Appearance > Mods): rows the player edits like the built-in pages.
cl_view clight::View A component tree shown on a screen (view_open) or inside a mod screen (view_mount).
cl_ui_feature clight::UiFeature A feature card in the Features screen (title, pause menu and Settings open it with one click).

Enums and flags

cl_err

C name Value Lua
CL_OK 0 "ok"
CL_E_UNKNOWN -1 "e_unknown"
CL_E_INVALID_ARGUMENT -2 "e_invalid_argument"
CL_E_INVALID_HANDLE -3 "e_invalid_handle"
CL_E_STALE_HANDLE -4 "e_stale_handle"
CL_E_WRONG_TYPE -5 "e_wrong_type"
CL_E_NOT_FOUND -6 "e_not_found"
CL_E_ALREADY_EXISTS -7 "e_already_exists"
CL_E_WRONG_PHASE -8 "e_wrong_phase"
CL_E_WRONG_THREAD -9 "e_wrong_thread"
CL_E_WRONG_SIDE -10 "e_wrong_side"
CL_E_PERMISSION_DENIED -11 "e_permission_denied"
CL_E_BUFFER_TOO_SMALL -12 "e_buffer_too_small"
CL_E_OUT_OF_MEMORY -13 "e_out_of_memory"
CL_E_NOT_LOADED -14 "e_not_loaded"
CL_E_UNSUPPORTED -15 "e_unsupported"
CL_E_VERSION -16 "e_version"
CL_E_PARSE -17 "e_parse"
CL_E_LIMIT -18 "e_limit"
CL_E_CANCELLED -19 "e_cancelled"
CL_E_TIMEOUT -20 "e_timeout"
CL_E_CONFLICT -21 "e_conflict"
CL_E_DEPENDENCY -22 "e_dependency"
CL_E_IO -23 "e_io"
CL_E_NETWORK -24 "e_network"
CL_E_TRAPPED -25 "e_trapped"
CL_E_DISCONNECTED -26 "e_disconnected"
CL_E_BUSY -27 "e_busy"

cl_context

C name Value Lua
CL_CTX_ANY 0 "any"
CL_CTX_MAIN 1 "main"
CL_CTX_TICK 2 "tick"
CL_CTX_RENDER 3 "render"
CL_CTX_ASYNC 4 "async"
CL_CTX_NET 5 "net"
CL_CTX_PARALLEL 6 "parallel"

cl_side

C name Value Lua
CL_SIDE_BOTH 0 "both"
CL_SIDE_SERVER 1 "server"
CL_SIDE_CLIENT 2 "client"

cl_env

C name Value Lua
CL_ENV_CLIENT 1 "client"
CL_ENV_DEDICATED_SERVER 2 "dedicated_server"

cl_phase

C name Value Lua
CL_PHASE_CONSTRUCT 0 "construct"
CL_PHASE_REGISTER 1 "register"
CL_PHASE_FROZEN 2 "frozen"
CL_PHASE_SETUP 3 "setup"
CL_PHASE_RUNNING 4 "running"
CL_PHASE_SHUTDOWN 5 "shutdown"

cl_log_level

C name Value Lua
CL_LOG_TRACE 0 "trace"
CL_LOG_DEBUG 1 "debug"
CL_LOG_INFO 2 "info"
CL_LOG_WARN 3 "warn"
CL_LOG_ERROR 4 "error"

cl_direction

C name Value Lua
CL_DIRECTION_DOWN 0 "down"
CL_DIRECTION_UP 1 "up"
CL_DIRECTION_NORTH 2 "north"
CL_DIRECTION_SOUTH 3 "south"
CL_DIRECTION_WEST 4 "west"
CL_DIRECTION_EAST 5 "east"

cl_hand

C name Value Lua
CL_HAND_MAIN 0 "main"
CL_HAND_OFF 1 "off"

cl_interaction_result

C name Value Lua
CL_RESULT_PASS 0 "pass"
CL_RESULT_SUCCESS 1 "success"
CL_RESULT_CONSUME 2 "consume"
CL_RESULT_FAIL 3 "fail"

cl_override

C name Value Lua
CL_OVERRIDE_CALL_ORIGINAL 0 "call_original"
CL_OVERRIDE_HANDLED 1 "handled"

cl_event_flags

Flags (combine with |).

C name Value Lua
CL_EVF_CANCELLABLE 1 "cancellable"
CL_EVF_HAS_RESULT 2 "has_result"
CL_EVF_CLIENT 4 "client"
CL_EVF_ASYNC 8 "async"

cl_sub_flags

Flags (combine with |).

C name Value Lua
CL_SUB_RECEIVE_CANCELLED 1 "receive_cancelled"
CL_SUB_ONCE 2 "once"
CL_SUB_DEFERRABLE 4 "deferrable"

cl_render_layer

C name Value Lua
CL_LAYER_SOLID 0 "solid"
CL_LAYER_CUTOUT_MIPPED 1 "cutout_mipped"
CL_LAYER_CUTOUT 2 "cutout"
CL_LAYER_TRANSLUCENT 3 "translucent"
CL_LAYER_TRIPWIRE 4 "tripwire"

cl_push_reaction

C name Value Lua
CL_PUSH_NORMAL 0 "normal"
CL_PUSH_DESTROY 1 "destroy"
CL_PUSH_BLOCK 2 "block"
CL_PUSH_IGNORE 3 "ignore"
CL_PUSH_PUSH_ONLY 4 "push_only"

cl_block_flags

Flags (combine with |).

C name Value Lua
CL_BLOCK_NO_COLLISION 1 "no_collision"
CL_BLOCK_NO_OCCLUSION 2 "no_occlusion"
CL_BLOCK_REQUIRES_CORRECT_TOOL 4 "requires_correct_tool"
CL_BLOCK_RANDOM_TICKS 8 "random_ticks"
CL_BLOCK_REPLACEABLE 16 "replaceable"
CL_BLOCK_AIR 32 "air"
CL_BLOCK_IGNITED_BY_LAVA 64 "ignited_by_lava"
CL_BLOCK_LIQUID 128 "liquid"
CL_BLOCK_FORCE_SOLID_ON 256 "force_solid_on"
CL_BLOCK_FORCE_SOLID_OFF 512 "force_solid_off"
CL_BLOCK_NO_LOOT_TABLE 1024 "no_loot_table"
CL_BLOCK_DYNAMIC_SHAPE 2048 "dynamic_shape"
CL_BLOCK_OFFSET_XZ 4096 "offset_xz"
CL_BLOCK_OFFSET_XYZ 8192 "offset_xyz"
CL_BLOCK_EMISSIVE_RENDERING 16384 "emissive_rendering"

cl_set_block_flags

Flags (combine with |).

C name Value Lua
CL_SET_UPDATE_NEIGHBORS 1 "update_neighbors"
CL_SET_UPDATE_CLIENTS 2 "update_clients"
CL_SET_ALL 3 "all"

cl_payload_dir

C name Value Lua
CL_PAYLOAD_TO_CLIENT 1 "to_client"
CL_PAYLOAD_TO_SERVER 2 "to_server"
CL_PAYLOAD_BOTH_WAYS 3 "both_ways"

cl_key_context

C name Value Lua
CL_KEYCTX_IN_GAME 0 "in_game"
CL_KEYCTX_GUI 1 "gui"
CL_KEYCTX_ANY 2 "any"

cl_config_scope

C name Value Lua
CL_CONFIG_CLIENT 0 "client"
CL_CONFIG_COMMON 1 "common"
CL_CONFIG_SERVER 2 "server"

cl_mouse_action

C name Value Lua
CL_MOUSE_PRESS 0 "press"
CL_MOUSE_RELEASE 1 "release"
CL_MOUSE_DRAG 2 "drag"
CL_MOUSE_MOVE 3 "move"

cl_menu_kind

C name Value Lua
CL_MENU_CHEST_9X1 0 "chest_9x1"
CL_MENU_CHEST_9X2 1 "chest_9x2"
CL_MENU_CHEST_9X3 2 "chest_9x3"
CL_MENU_CHEST_9X4 3 "chest_9x4"
CL_MENU_CHEST_9X5 4 "chest_9x5"
CL_MENU_CHEST_9X6 5 "chest_9x6"
CL_MENU_DISPENSER_3X3 6 "dispenser_3x3"
CL_MENU_HOPPER 7 "hopper"

cl_click_type

net.minecraft.world.inventory.ClickType

C name Value Lua
CL_CLICK_PICKUP 0 "pickup"
CL_CLICK_QUICK_MOVE 1 "quick_move"
CL_CLICK_SWAP 2 "swap"
CL_CLICK_CLONE 3 "clone"
CL_CLICK_THROW 4 "throw"
CL_CLICK_QUICK_CRAFT 5 "quick_craft"
CL_CLICK_PICKUP_ALL 6 "pickup_all"

cl_sound_category

net.minecraft.sounds.SoundSource (the volume sliders).

C name Value Lua
CL_SOUND_MASTER 0 "master"
CL_SOUND_MUSIC 1 "music"
CL_SOUND_RECORDS 2 "records"
CL_SOUND_WEATHER 3 "weather"
CL_SOUND_BLOCKS 4 "blocks"
CL_SOUND_HOSTILE 5 "hostile"
CL_SOUND_NEUTRAL 6 "neutral"
CL_SOUND_PLAYERS 7 "players"
CL_SOUND_AMBIENT 8 "ambient"
CL_SOUND_VOICE 9 "voice"
CL_SOUND_UI 10 "ui"

cl_mixin_at

C name Value Lua
CL_AT_HEAD 0 "head"
CL_AT_RETURN 1 "return"
CL_AT_POINT 2 "point"
CL_AT_VALUE 3 "value"
CL_AT_CALL 4 "call"
CL_AT_WRAP 5 "wrap"
CL_AT_OVERWRITE 6 "overwrite"

cl_mixin_flags

Flags (combine with |).

C name Value Lua
CL_MXF_RECEIVE_CANCELLED 1 "receive_cancelled"
CL_MXF_OPTIONAL 2 "optional"
CL_MXF_EXCLUSIVE 4 "exclusive"
CL_MXF_ONCE 8 "once"

cl_target_flags

Flags (combine with |).

C name Value Lua
CL_MXT_CANCELLABLE 1 "cancellable"
CL_MXT_INVOKABLE 2 "invokable"
CL_MXT_PREDICTED 4 "predicted"
CL_MXT_RNG 8 "rng"
CL_MXT_DEPRECATED 16 "deprecated"
CL_MXT_INERT 32 "inert"
CL_MXT_ALIAS 64 "alias"
CL_MXT_ADVANTAGE 128 "advantage"
CL_MXT_HOT 256 "hot"

cl_game_mode

C name Value Lua
CL_GAMEMODE_SURVIVAL 0 "survival"
CL_GAMEMODE_CREATIVE 1 "creative"
CL_GAMEMODE_ADVENTURE 2 "adventure"
CL_GAMEMODE_SPECTATOR 3 "spectator"

cl_text_style

Flags (combine with |).

C name Value Lua
CL_STYLE_BOLD 1 "bold"
CL_STYLE_ITALIC 2 "italic"
CL_STYLE_UNDERLINED 4 "underlined"
CL_STYLE_STRIKETHROUGH 8 "strikethrough"
CL_STYLE_OBFUSCATED 16 "obfuscated"

cl_click_action

C name Value Lua
CL_TEXT_CLICK_OPEN_URL 0 "open_url"
CL_TEXT_CLICK_RUN_COMMAND 1 "run_command"
CL_TEXT_CLICK_SUGGEST_COMMAND 2 "suggest_command"
CL_TEXT_CLICK_COPY_TO_CLIPBOARD 3 "copy_to_clipboard"

cl_audio_filter_type

EFX’s filter family. LOWPASS uses gain and gain_hf, HIGHPASS gain and gain_lf, BANDPASS all three.

C name Value Lua
CL_FILTER_NONE 0 "none"
CL_FILTER_LOWPASS 1 "lowpass"
CL_FILTER_HIGHPASS 2 "highpass"
CL_FILTER_BANDPASS 3 "bandpass"

cl_audio_categories

Categories for default routes (0 = every world category: weather, blocks, hostile, neutral, players, ambient, voice).

Flags (combine with |).

C name Value Lua
CL_AUDIO_MASTER 1 "master"
CL_AUDIO_MUSIC 2 "music"
CL_AUDIO_RECORDS 4 "records"
CL_AUDIO_WEATHER 8 "weather"
CL_AUDIO_BLOCKS 16 "blocks"
CL_AUDIO_HOSTILE 32 "hostile"
CL_AUDIO_NEUTRAL 64 "neutral"
CL_AUDIO_PLAYERS 128 "players"
CL_AUDIO_AMBIENT 256 "ambient"
CL_AUDIO_VOICE 512 "voice"
CL_AUDIO_UI 1024 "ui"

cl_audio_fluid

C name Value Lua
CL_FLUID_NONE 0 "none"
CL_FLUID_WATER 1 "water"
CL_FLUID_LAVA 2 "lava"

cl_distance_model

How a sound fades with distance. LINEAR is vanilla (silent at the range). INVERSE and EXPONENTIAL fall off like real sound (reference distance 1 block; the level stops falling at the range).

C name Value Lua
CL_DISTANCE_LINEAR 0 "linear"
CL_DISTANCE_INVERSE 1 "inverse"
CL_DISTANCE_EXPONENTIAL 2 "exponential"

cl_audio_material

Acoustic materials (by block sound type), as the Sound Physics settings name them.

C name Value Lua
CL_MATERIAL_AIR 0 "air"
CL_MATERIAL_STONE 1 "stone"
CL_MATERIAL_WOOD 2 "wood"
CL_MATERIAL_WOOL 3 "wool"
CL_MATERIAL_GLASS 4 "glass"
CL_MATERIAL_DIRT 5 "dirt"
CL_MATERIAL_SAND 6 "sand"
CL_MATERIAL_METAL 7 "metal"
CL_MATERIAL_SNOW 8 "snow"
CL_MATERIAL_FOLIAGE 9 "foliage"
CL_MATERIAL_NETHER 10 "nether"
CL_MATERIAL_OTHER 11 "other"
CL_MATERIAL_WATER 12 "water"
CL_MATERIAL_LAVA 13 "lava"

cl_voice_kind

Simple Voice Chat (the built-in client). PROXIMITY: a nearby player, WHISPER: whispering, GROUP: a group (not positional), LOCATION: a sound at a position (server plugins), STATIC: listener-relative.

C name Value Lua
CL_VOICE_PROXIMITY 0 "proximity"
CL_VOICE_WHISPER 1 "whisper"
CL_VOICE_GROUP 2 "group"
CL_VOICE_LOCATION 3 "location"
CL_VOICE_STATIC 4 "static"

cl_entity_kind

MOB: a living mob (health, attributes, gravity, the mob tick; no AI goals of its own: the mod drives it). MISC: a plain entity (gravity, collisions, no health). PROJECTILE: flies with gravity and drag, stops at blocks.

C name Value Lua
CL_ENTITY_KIND_MOB 0 "mob"
CL_ENTITY_KIND_MISC 1 "misc"
CL_ENTITY_KIND_PROJECTILE 2 "projectile"

cl_entity_type_flags

SILENT: no sounds of the fallback type (the mod plays its own); PERSISTENT: never despawns.

Flags (combine with |).

C name Value Lua
CL_ENTITY_FIRE_IMMUNE 1 "fire_immune"
CL_ENTITY_NOT_SUMMONABLE 2 "not_summonable"
CL_ENTITY_NO_GRAVITY 4 "no_gravity"
CL_ENTITY_SILENT 8 "silent"
CL_ENTITY_PERSISTENT 16 "persistent"

cl_pose

Entity poses (vanilla Pose ids). The pose is synced: clients animate it (crouching, swimming, sleeping, …).

C name Value Lua
CL_POSE_STANDING 0 "standing"
CL_POSE_FALL_FLYING 1 "fall_flying"
CL_POSE_SLEEPING 2 "sleeping"
CL_POSE_SWIMMING 3 "swimming"
CL_POSE_SPIN_ATTACK 4 "spin_attack"
CL_POSE_CROUCHING 5 "crouching"
CL_POSE_LONG_JUMPING 6 "long_jumping"
CL_POSE_DYING 7 "dying"
CL_POSE_CROAKING 8 "croaking"
CL_POSE_USING_TONGUE 9 "using_tongue"
CL_POSE_SITTING 10 "sitting"
CL_POSE_ROARING 11 "roaring"
CL_POSE_SNIFFING 12 "sniffing"
CL_POSE_EMERGING 13 "emerging"
CL_POSE_DIGGING 14 "digging"
CL_POSE_SLIDING 15 "sliding"
CL_POSE_SHOOTING 16 "shooting"
CL_POSE_INHALING 17 "inhaling"

cl_remove_reason

DISCARDED: gone without a trace (Entity#discard). KILLED: like /kill (living entities die: loot, xp, death event).

C name Value Lua
CL_REMOVE_DISCARDED 0 "discarded"
CL_REMOVE_KILLED 1 "killed"

cl_model_flags

NO_SHADOW: no round shadow under the entity and no shader-pack shadow. NEAREST: pixel-art textures (nearest filtering, no mipmaps; default: linear with mipmaps). DOUBLE_SIDED: draw back faces even where the material does not ask for it. NO_DEATH_TILT: dying entities do not fall over (play a death clip instead).

Flags (combine with |).

C name Value Lua
CL_MODEL_NO_SHADOW 1 "no_shadow"
CL_MODEL_NEAREST 2 "nearest"
CL_MODEL_DOUBLE_SIDED 4 "double_sided"
CL_MODEL_NO_DEATH_TILT 8 "no_death_tilt"

cl_entity_query_flags

NO_PLAYERS: leave players out. LIVING: only living entities (mobs and players). SPECTATORS: include players in spectator mode (left out by default, like vanilla’s EntitySelector.NO_SPECTATORS). DEAD: include dying entities. NEAREST: sort by distance to the box centre (nearest first; default: the level’s entity order).

Flags (combine with |).

C name Value Lua
CL_QUERY_NO_PLAYERS 1 "no_players"
CL_QUERY_LIVING 2 "living"
CL_QUERY_SPECTATORS 4 "spectators"
CL_QUERY_DEAD 8 "dead"
CL_QUERY_NEAREST 16 "nearest"

cl_attribute_op

AttributeModifier.Operation: ADD_VALUE adds to the base, ADD_MULTIPLIED_BASE adds base x amount, ADD_MULTIPLIED_TOTAL multiplies the total by (1 + amount).

C name Value Lua
CL_ATTRIBUTE_ADD_VALUE 0 "add_value"
CL_ATTRIBUTE_ADD_MULTIPLIED_BASE 1 "add_multiplied_base"
CL_ATTRIBUTE_ADD_MULTIPLIED_TOTAL 2 "add_multiplied_total"

cl_synced_type

The value kinds of synced entity data.

C name Value Lua
CL_SYNCED_NONE 0 "none"
CL_SYNCED_BOOL 1 "bool"
CL_SYNCED_NUMBER 2 "number"
CL_SYNCED_STRING 3 "string"

cl_damage_scaling

DamageScaling: whether the difficulty scales the damage to players.

C name Value Lua
CL_DAMAGE_SCALING_WHEN_CAUSED_BY_LIVING_NON_PLAYER 0 "when_caused_by_living_non_player"
CL_DAMAGE_SCALING_NEVER 1 "never"
CL_DAMAGE_SCALING_ALWAYS 2 "always"

cl_damage_effects

DamageEffects: the hurt sound players hear.

C name Value Lua
CL_DAMAGE_EFFECTS_HURT 0 "hurt"
CL_DAMAGE_EFFECTS_THORNS 1 "thorns"
CL_DAMAGE_EFFECTS_DROWNING 2 "drowning"
CL_DAMAGE_EFFECTS_BURNING 3 "burning"
CL_DAMAGE_EFFECTS_POKING 4 "poking"
CL_DAMAGE_EFFECTS_FREEZING 5 "freezing"

cl_spawn_placement

Where a natural spawn may stand (SpawnPlacementTypes). DEFAULT: by category (water categories IN_WATER, else ON_GROUND; a vanilla type keeps its own).

C name Value Lua
CL_SPAWN_PLACEMENT_DEFAULT 0 "default"
CL_SPAWN_PLACEMENT_ON_GROUND 1 "on_ground"
CL_SPAWN_PLACEMENT_IN_WATER 2 "in_water"
CL_SPAWN_PLACEMENT_IN_LAVA 3 "in_lava"
CL_SPAWN_PLACEMENT_ANYWHERE 4 "anywhere"

cl_spawn_check

The base spawn check (SpawnPlacements’ predicates). DEFAULT: by category (“monster”: MONSTER, “creature”: ANIMAL, others MOB; a vanilla type keeps its own). MOB: a valid spawn floor (Mob#checkMobSpawnRules). MONSTER: dark enough like monsters, plus MOB. ANIMAL: #animals_spawnable_on below and bright enough. NONE: no base check.

C name Value Lua
CL_SPAWN_CHECK_DEFAULT 0 "default"
CL_SPAWN_CHECK_MOB 1 "mob"
CL_SPAWN_CHECK_MONSTER 2 "monster"
CL_SPAWN_CHECK_ANIMAL 3 "animal"
CL_SPAWN_CHECK_NONE 4 "none"

cl_ray_blocks

ClipContext.Block: COLLIDER the collision boxes (what entities bump into), OUTLINE the selection outline (what the crosshair picks), VISUAL the visual shape (glass, panes and bars let the ray through, mud and soul sand are full), NONE blocks never stop the ray (fluids or entities only).

C name Value Lua
CL_RAY_BLOCKS_COLLIDER 0 "collider"
CL_RAY_BLOCKS_OUTLINE 1 "outline"
CL_RAY_BLOCKS_VISUAL 2 "visual"
CL_RAY_BLOCKS_NONE 3 "none"

cl_ray_fluids

ClipContext.Fluid: NONE fluids never stop the ray, SOURCE only source blocks (buckets), ANY every fluid, WATER only water.

C name Value Lua
CL_RAY_FLUIDS_NONE 0 "none"
CL_RAY_FLUIDS_SOURCE 1 "source"
CL_RAY_FLUIDS_ANY 2 "any"
CL_RAY_FLUIDS_WATER 3 "water"

cl_hit_type

C name Value Lua
CL_HIT_MISS 0 "miss"
CL_HIT_BLOCK 1 "block"
CL_HIT_ENTITY 2 "entity"

cl_heightmap

Heightmap.Types (the vanilla heightmaps the game keeps up to date).

C name Value Lua
CL_HEIGHTMAP_WORLD_SURFACE 0 "world_surface"
CL_HEIGHTMAP_OCEAN_FLOOR 1 "ocean_floor"
CL_HEIGHTMAP_MOTION_BLOCKING 2 "motion_blocking"
CL_HEIGHTMAP_MOTION_BLOCKING_NO_LEAVES 3 "motion_blocking_no_leaves"

cl_block_sound

C name Value Lua
CL_BLOCK_SOUND_BREAK 0 "break"
CL_BLOCK_SOUND_STEP 1 "step"
CL_BLOCK_SOUND_PLACE 2 "place"
CL_BLOCK_SOUND_HIT 3 "hit"
CL_BLOCK_SOUND_FALL 4 "fall"

cl_player_part

The parts of the player model (PlayerModel): the base parts and their outer skin layers.

C name Value Lua
CL_PART_HEAD 0 "head"
CL_PART_HAT 1 "hat"
CL_PART_BODY 2 "body"
CL_PART_JACKET 3 "jacket"
CL_PART_LEFT_ARM 4 "left_arm"
CL_PART_LEFT_SLEEVE 5 "left_sleeve"
CL_PART_RIGHT_ARM 6 "right_arm"
CL_PART_RIGHT_SLEEVE 7 "right_sleeve"
CL_PART_LEFT_LEG 8 "left_leg"
CL_PART_LEFT_PANTS 9 "left_pants"
CL_PART_RIGHT_LEG 10 "right_leg"
CL_PART_RIGHT_PANTS 11 "right_pants"
CL_PART_CAPE 12 "cape"

cl_nav_mode

How a path moves: WALK (GroundPathNavigation: floors, step up one block, drop a few), SWIM (water only, in 3D), FLY (free space, in 3D), AMPHIBIOUS (walking, and swimming through water). DEFAULT: the entity’s own navigation (without an entity: WALK).

C name Value Lua
CL_NAV_DEFAULT 0 "default"
CL_NAV_WALK 1 "walk"
CL_NAV_SWIM 2 "swim"
CL_NAV_FLY 3 "fly"
CL_NAV_AMPHIBIOUS 4 "amphibious"

cl_path_state

NONE: no path. MOVING: following one. DONE: arrived at its last node. STUCK: the navigation gave up (no progress).

C name Value Lua
CL_PATH_NONE 0 "none"
CL_PATH_MOVING 1 "moving"
CL_PATH_DONE 2 "done"
CL_PATH_STUCK 3 "stuck"

cl_goal_flags

Goal.Flag: the controls a goal needs. Goals sharing a flag do not run together (the lower priority number wins, like vanilla).

Flags (combine with |).

C name Value Lua
CL_GOAL_MOVE 1 "move"
CL_GOAL_LOOK 2 "look"
CL_GOAL_JUMP 4 "jump"
CL_GOAL_TARGET 8 "target"

cl_goal_list

The goal selector: GOALS (Mob#goalSelector), TARGETS (Mob#targetSelector), ALL (both).

C name Value Lua
CL_GOALS_GOALS 0 "goals"
CL_GOALS_TARGETS 1 "targets"
CL_GOALS_ALL 2 "all"

cl_data_flags

SYNC: the value also goes to every Celestial client with CLight that sees the entity (and to the player itself); vanilla clients get nothing. At most 32 KiB per synced value.

Flags (combine with |).

C name Value Lua
CL_DATA_SYNC 1 "sync"

cl_particle_facing

FACE_CAMERA: a camera-facing quad (vanilla’s default); VERTICAL: turns around Y only; FLAT: lies flat (+Y up); VELOCITY: stretched along its motion (sparks, streaks).

C name Value Lua
CL_PARTICLE_FACE_CAMERA 0 "face_camera"
CL_PARTICLE_VERTICAL 1 "vertical"
CL_PARTICLE_FLAT 2 "flat"
CL_PARTICLE_VELOCITY 3 "velocity"

cl_shadow_mode

CL_SHADOW_DEFAULT: the type’s setting (render_set_type_casts_shadow); NEVER: this entity never casts a shader pack shadow; ALWAYS: it casts even when its type does not (still only with the player’s setting on).

C name Value Lua
CL_SHADOW_DEFAULT -1 "default"
CL_SHADOW_NEVER 0 "never"
CL_SHADOW_ALWAYS 1 "always"

cl_fs_kind

Paths are relative to the mod’s folder (mods/<id>/), with “/” separators: “assets/my_mod/lang/en_us.json”, “data/scores.json”. Reads reach the whole folder; writes, renames and removals only “data/…” (the mod’s data folder, mods/<id>/data/; under clight run the project’s build/run/<id>/data/). Rejected with CL_E_PERMISSION_DENIED: absolute paths, drive letters, “…”, device names, links that lead outside, writes outside data/ and executable file types (.exe .dll .bat .js .jar …). Writes are atomic (a temp file, then renamed over the old one). data/ holds at most 256 MiB (CL_E_LIMIT); one read or write is at most 64 MiB. CL_E_NOT_FOUND: no such file; CL_E_IO: the disk failed.

C name Value Lua
CL_FS_NONE 0 "none"
CL_FS_FILE 1 "file"
CL_FS_DIR 2 "dir"

cl_http_method

C name Value Lua
CL_HTTP_GET 0 "get"
CL_HTTP_POST 1 "post"
CL_HTTP_PUT 2 "put"
CL_HTTP_DELETE 3 "delete"
CL_HTTP_HEAD 4 "head"
CL_HTTP_PATCH 5 "patch"

cl_attach_flags

Typed attachments: a registered key has a default and rules. SYNC: every set of the key syncs (as CL_DATA_SYNC); COPY_ON_DEATH: a player keeps the value when they die and respawn (without it the value is removed at the respawn, like NeoForge attachments without copyOnDeath); values on entities, chunks and saved data are unaffected by deaths.

Flags (combine with |).

C name Value Lua
CL_ATTACH_SYNC 1 "sync"
CL_ATTACH_COPY_ON_DEATH 2 "copy_on_death"

cl_equip_slot

EquipmentSlot order. BODY: horse / wolf / llama armour, the happy ghast harness; SADDLE: the saddle.

C name Value Lua
CL_EQUIP_MAINHAND 0 "mainhand"
CL_EQUIP_OFFHAND 1 "offhand"
CL_EQUIP_FEET 2 "feet"
CL_EQUIP_LEGS 3 "legs"
CL_EQUIP_CHEST 4 "chest"
CL_EQUIP_HEAD 5 "head"
CL_EQUIP_BODY 6 "body"
CL_EQUIP_SADDLE 7 "saddle"

cl_ui_text

The kit’s text styles (the design system’s type scale in Fancy; the game font in Vanilla).

C name Value Lua
CL_UI_TEXT_BODY 0 "body"
CL_UI_TEXT_SMALL 1 "small"
CL_UI_TEXT_H1 2 "h1"
CL_UI_TEXT_H2 3 "h2"
CL_UI_TEXT_H3 4 "h3"
CL_UI_TEXT_BUTTON 5 "button"
CL_UI_TEXT_CHIP 6 "chip"

cl_ui_state

The look of a control drawn with gui_control.

C name Value Lua
CL_UI_STATE_NORMAL 0 "normal"
CL_UI_STATE_HOVER 1 "hover"
CL_UI_STATE_PRESSED 2 "pressed"
CL_UI_STATE_DISABLED 3 "disabled"
CL_UI_STATE_SELECTED 4 "selected"

cl_ui_control

What gui_control draws (value: TOGGLE / CHECKBOX on when >= 0.5, SLIDER 0…1).

C name Value Lua
CL_UI_CONTROL_BUTTON 0 "button"
CL_UI_CONTROL_PRIMARY 1 "primary"
CL_UI_CONTROL_TOGGLE 2 "toggle"
CL_UI_CONTROL_CHECKBOX 3 "checkbox"
CL_UI_CONTROL_SLIDER 4 "slider"
CL_UI_CONTROL_FIELD 5 "field"
CL_UI_CONTROL_ICON_BUTTON 6 "icon_button"

cl_hud_anchor

The 9 screen points an element’s default position is relative to.

C name Value Lua
CL_HUD_TOP_LEFT 0 "top_left"
CL_HUD_TOP 1 "top"
CL_HUD_TOP_RIGHT 2 "top_right"
CL_HUD_LEFT 3 "left"
CL_HUD_CENTER 4 "center"
CL_HUD_RIGHT 5 "right"
CL_HUD_BOTTOM_LEFT 6 "bottom_left"
CL_HUD_BOTTOM 7 "bottom"
CL_HUD_BOTTOM_RIGHT 8 "bottom_right"

cl_view_kind

What a node becomes. Containers (COLUMN, ROW, PANEL, LIST) lay out their children; the others are kit widgets drawn in the player’s Appearance style (the props each kind reads are listed in 44_Components.md).

C name Value Lua
CL_VIEW_COLUMN 0 "column"
CL_VIEW_ROW 1 "row"
CL_VIEW_PANEL 2 "panel"
CL_VIEW_SPACER 3 "spacer"
CL_VIEW_LABEL 4 "label"
CL_VIEW_HEADING 5 "heading"
CL_VIEW_BUTTON 6 "button"
CL_VIEW_TOGGLE 7 "toggle"
CL_VIEW_CHECKBOX 8 "checkbox"
CL_VIEW_SLIDER 9 "slider"
CL_VIEW_DROPDOWN 10 "dropdown"
CL_VIEW_TABS 11 "tabs"
CL_VIEW_LIST 12 "list"
CL_VIEW_CARD 13 "card"
CL_VIEW_ICON_BUTTON 14 "icon_button"
CL_VIEW_COLOR_PICKER 15 "color_picker"
CL_VIEW_TEXT_FIELD 16 "text_field"
CL_VIEW_LIST_ITEM 17 "list_item"

cl_ui_feature_category

The category a feature is listed under (MODS by default).

C name Value Lua
CL_FEATURE_VISUALS 0 "visuals"
CL_FEATURE_HUD 1 "hud"
CL_FEATURE_ANIMATIONS 2 "animations"
CL_FEATURE_CAMERA 3 "camera"
CL_FEATURE_TAB_CHAT 4 "tab_chat"
CL_FEATURE_COSMETICS 5 "cosmetics"
CL_FEATURE_PERFORMANCE 6 "performance"
CL_FEATURE_UTILITY 7 "utility"
CL_FEATURE_MODS 8 "mods"

cl_ui_easing

The easing curves of the client’s animations (BOUNCY overshoots a little, then settles at 1).

C name Value Lua
CL_EASE_SMOOTH 0 "smooth"
CL_EASE_GENTLE 1 "gentle"
CL_EASE_SNAPPY 2 "snappy"
CL_EASE_BOUNCY 3 "bouncy"
CL_EASE_LINEAR 4 "linear"

Structs and descriptors

Descriptors start with struct_size; fill them from their _INIT macro so new fields get their defaults (cl_block_desc d = CL_BLOCK_DESC_INIT;).

cl_str

Field Type Default
ptr const char*
len size_t

cl_block_pos

Field Type Default
x int32_t
y int32_t
z int32_t

cl_vec3

Field Type Default
x double
y double
z double

cl_uuid

Field Type Default
hi uint64_t
lo uint64_t

cl_event_header

Field Type Default
struct_size uint32_t
type cl_event_type
flags cl_event_flags
cancelled uint8_t
result int8_t
reserved uint16_t

cl_subscribe_opts

filter: an interned id the event is filtered on (see the event list; 0 = all). level: only events in this level (0 = all).

Initialiser: CL_SUBSCRIBE_OPTS_INIT.

Field Type Default
priority int32_t 0
flags cl_sub_flags 0
filter cl_ident 0
level cl_level 0

cl_block_ctx

Initialiser: CL_BLOCK_CTX_INIT.

Field Type Default
level cl_level 0
pos cl_block_pos 0
state cl_block_state 0
user void* 0

cl_item_ctx

Initialiser: CL_ITEM_CTX_INIT.

Field Type Default
level cl_level 0
stack cl_item_stack 0
entity cl_entity 0
hand cl_hand 0
user void* 0

cl_block_behavior

v0.1: the first entries of 03/05’s cl_block_behavior. More entries are appended later.

Initialiser: CL_BLOCK_BEHAVIOR_INIT.

Field Type Default
use_without_item cl_block_use_fn 0
attack cl_block_attack_fn 0
random_tick cl_block_random_tick_fn 0

cl_item_behavior

Initialiser: CL_ITEM_BEHAVIOR_INIT.

Field Type Default
use cl_item_use_fn 0

cl_block_desc

v0.1 limits: single-state blocks (no properties), full-cube model from assets/<ns>/models/block/<path>.json.

Initialiser: CL_BLOCK_DESC_INIT.

Field Type Default
id cl_str 0
copy_properties_from cl_str 0
destroy_time float 1.5
explosion_resistance float 6.0
friction float 0.6
speed_factor float 1.0
jump_factor float 1.0
light_emission uint8_t 0
sound_type cl_str 0
map_color cl_str 0
flags cl_block_flags 0
behavior const cl_block_behavior* 0
vanilla_fallback cl_str 0
item cl_str 0
user void* 0
render_layer cl_render_layer 0
creative_tab cl_str 0

cl_item_desc

Initialiser: CL_ITEM_DESC_INIT.

Field Type Default
id cl_str 0
max_stack_size int32_t 64
block cl_str 0
copy_from cl_str 0
behavior const cl_item_behavior* 0
vanilla_fallback cl_str 0
creative_tab cl_str 0
user void* 0

cl_cmd_desc

v0.1 simple commands: “/name [rest]”. Arguments are the raw string after the name. (The full Brigadier node API from 03/18 is planned.)

Initialiser: CL_CMD_DESC_INIT.

Field Type Default
name cl_str 0
permission_level int32_t 0
execute cl_cmd_fn 0
user void* 0
usage cl_str 0

cl_payload_desc

Initialiser: CL_PAYLOAD_DESC_INIT.

Field Type Default
id cl_str 0
dir cl_payload_dir 3
max_size uint32_t 32768
handler cl_payload_fn 0
user void* 0

cl_keybind_desc

Initialiser: CL_KEYBIND_DESC_INIT.

Field Type Default
id cl_str 0
default_key cl_str 0
category cl_str 0
context cl_key_context 0
label cl_str 0

cl_hud_layer_desc

above/below: a vanilla layer id to order against (“minecraft:hotbar”, “minecraft:food”, “minecraft:chat”, …; 99_Appendix lists them). Neither = on top of the vanilla HUD, under open screens. Layers are hidden with F1 like vanilla’s, and skipped entirely (no call) while visible() returns false.

Initialiser: CL_HUD_LAYER_DESC_INIT.

Field Type Default
id cl_str 0
above cl_str 0
below cl_str 0
render cl_hud_render_fn 0
visible cl_hud_visible_fn 0
user void* 0

cl_screen_desc

title: a translation key if the language has it, otherwise literal text (shown by narration and as the window title).

Initialiser: CL_SCREEN_DESC_INIT.

Field Type Default
title cl_str 0
pause bool true
background bool true
close_on_esc bool true
init cl_screen_init_fn 0
render cl_screen_render_fn 0
tick cl_screen_tick_fn 0
key cl_screen_key_fn 0
char_typed cl_screen_char_fn 0
mouse cl_screen_mouse_fn 0
scroll cl_screen_scroll_fn 0
close cl_screen_close_fn 0
user void* 0
themed bool false

cl_rml_desc

path: a file inside the mod folder (“assets/<modid>/gui/shop.rml”). Stylesheets, images and fonts it references resolve inside the mod folder too (the sandbox rule: nothing outside mods/<id>/). The engine’s base stylesheet (vanilla look) is applied first. as_screen = true: shown as a screen (mouse released, Esc closes); false: an overlay drawn over the HUD without input.

Initialiser: CL_RML_DESC_INIT.

Field Type Default
path cl_str 0
as_screen bool true
pause bool false
on_event cl_rml_event_fn 0
user void* 0
parent cl_screen 0
anchor int32_t 0
x int32_t 0
y int32_t 0
width int32_t 0
height int32_t 0
id cl_str 0
label cl_str 0
model cl_str 0
actions cl_str 0
on_action cl_rml_action_fn 0

cl_menu_desc

locked = true: players can’t move items in or out of the container slots unless on_click returns true.

Initialiser: CL_MENU_DESC_INIT.

Field Type Default
kind cl_menu_kind 2
title cl_text 0
locked bool true
on_click cl_menu_click_fn 0
on_close cl_menu_close_fn 0
user void* 0

cl_mixin_ci

The callback info. args/locals/value/ret point at the frames of the current call (only valid during the callback). site: 0 for head/return/wrap/overwrite, else the point/value/call index (CL_MX_<T>P/V/C<NAME>).

Field Type Default
struct_size uint32_t
target cl_mixin_target
at cl_mixin_at
site uint16_t
variant uint8_t
side uint8_t
self uint64_t
args void*
locals void*
value void*
ret void*
cancelled uint8_t
ret_set uint8_t
reserved uint16_t

cl_mixin_desc

site: “” for head/return/wrap/overwrite, else the point/value/call name. before/after: comma-separated mod ids.

Initialiser: CL_MIXIN_DESC_INIT.

Field Type Default
target cl_str 0
at cl_mixin_at 0
site cl_str 0
priority int32_t 0
flags cl_mixin_flags 0
filter cl_ident 0
before cl_str 0
after cl_str 0
fn cl_mixin_fn 0
user void* 0

cl_mixin_target_info

Initialiser: CL_MIXIN_TARGET_INFO_INIT.

Field Type Default
id cl_mixin_target 0
flags cl_target_flags 0
since_minor uint32_t 0
canonical cl_str 0

cl_audio_filter

Initialiser: CL_AUDIO_FILTER_INIT.

Field Type Default
type cl_audio_filter_type 1
gain float 1
gain_lf float 1
gain_hf float 1

cl_audio_listener

Field Type Default
pos cl_vec3
forward cl_vec3
up cl_vec3
in_fluid cl_audio_fluid

cl_audio_stream_opts

A mod PCM stream: 16-bit samples pushed by the mod. channels 2 only for relative streams.

Initialiser: CL_AUDIO_STREAM_OPTS_INIT.

Field Type Default
rate int32_t 48000
channels int32_t 1
pos cl_vec3 0
category cl_sound_category 0
relative bool false
range float 16
volume float 1

cl_audio_trace_opts

Initialiser: CL_AUDIO_TRACE_OPTS_INIT.

Field Type Default
max_blocks int32_t 48

cl_audio_trace

One straight line through the world: its non-air blocks by acoustic material, the first full block it hits, and the occlusion and direct gains of the Sound Physics material model.

Field Type Default
blocks int32_t
full int32_t
partial int32_t
hit bool
first_hit cl_vec3
first_material cl_audio_material
occlusion float
gain float
gain_hf float
length float
stone int32_t
wood int32_t
wool int32_t
glass int32_t
dirt int32_t
sand int32_t
metal int32_t
snow int32_t
foliage int32_t
nether int32_t
other int32_t
water int32_t
lava int32_t

cl_audio_acoustics

The full acoustics between a sound and a listener point (reverb from the surroundings, occlusion, the opening it comes through), computed on a worker thread. ready = false: queued, ask again next tick.

Field Type Default
ready bool
occlusion float
direct_gain float
direct_gain_hf float
enclosure float
mean_free_path float
reflectivity float
rt60 float
wet float
redirected bool
apparent_dir cl_vec3

cl_voice_monitor_opts

Your own microphone played back to you while you talk (wet_only: only through the bus, the way others hear you in a cave). enabled = false stops it.

Initialiser: CL_VOICE_MONITOR_OPTS_INIT.

Field Type Default
enabled bool false
wet_only bool true
gain float 1
bus cl_audio_bus 0

cl_entity_type_desc

A custom entity type. Vanilla clients (and Celestial clients without the mod) see vanilla_fallback: its network type, model and hitbox. The server simulates the real type (size, health, attributes) and saves it under its own id. vanilla_fallback defaults: MOB “minecraft:zombie”, MISC “minecraft:item_display” (invisible), PROJECTILE “minecraft:snowball”. A MOB needs a mob fallback. category: “monster”, “creature”, “ambient”, “water_creature”, … (MOB default “creature”, others “misc”). eye_height 0: 0.85 x height. attributes: “id=value” pairs separated by commas or a JSON object (“minecraft:movement_speed=0.3, attack_damage=4”; a missing namespace is minecraft); the fallback type’s attributes are the base. gravity < 0: the kind’s default (MOB 0.08 via the gravity attribute, MISC 0.04, PROJECTILE 0.03). tracking_range (chunks) / update_interval (ticks) 0: the fallback’s.

Initialiser: CL_ENTITY_TYPE_DESC_INIT.

Field Type Default
id cl_str 0
kind cl_entity_kind 0
vanilla_fallback cl_str 0
category cl_str 0
width float 0.6
height float 1.8
eye_height float 0
max_health float 20
attributes cl_str 0
gravity double -1
tracking_range int32_t 0
update_interval int32_t 0
flags cl_entity_type_flags 0
user void* 0

cl_rotation

Degrees, like vanilla: yaw 0 = south (+z), 90 = west; pitch -90 = up, 90 = down.

Field Type Default
yaw float
pitch float

cl_dimensions

Field Type Default
width float
height float
eye_height float

cl_spawn_opts

nbt: SNBT (or JSON) merged onto the new entity like /summon’s tag (“{NoAI:1b,CustomName:‘Bob’}”). finalize: mobs pick their spawn equipment / variant like /summon without a tag (skipped when nbt is given).

Initialiser: CL_SPAWN_OPTS_INIT.

Field Type Default
yaw float 0
pitch float 0
nbt cl_str 0
velocity cl_vec3 0
finalize bool true

cl_model_opts

scale: model units (glTF metres; 1 metre = 1 block) to blocks. yaw_offset: degrees, turns a model that does not face +Z (glTF’s forward; 180 for a model facing -Z). offset: blocks, after the scale (entity space: +Z = where it looks). shadow_radius: the round shadow (< 0: the fallback type’s). default_clip: a clip every entity loops on layer 0 until the mod plays something (empty: the rest pose).

Initialiser: CL_MODEL_OPTS_INIT.

Field Type Default
scale float 1
yaw_offset float 0
offset cl_vec3 0
shadow_radius float -1
flags cl_model_flags 0
default_clip cl_str 0

cl_model_info

Field Type Default
bones int32_t
clips int32_t
morphs int32_t
vertices int32_t
triangles int32_t
min cl_vec3
max cl_vec3

cl_anim_play_opts

loop: -1 the clip’s own setting (clip file / glTF extras “loop”, else loop), 0 once, 1 loop. fade: cross-fade (or fade-in) seconds. speed: 1 = normal, 0 freezes, negative plays backwards. layer: 0…7, higher layers on top. weight: 0…1 (additive layers up to 16). additive: adds the clip’s difference to the rest pose on top of the layers below. mask: the bones the layer moves, each with its children (“left_arm,head”; “!tail” leaves one out; empty: keep the layer’s mask; “*”: every bone). start: seconds into the clip. root_motion: the root bone’s horizontal movement moves the entity (on the server) instead of the model. hold: a one-shot clip keeps its last frame (else it fades out).

Initialiser: CL_ANIM_PLAY_OPTS_INIT.

Field Type Default
loop int32_t -1
fade float 0.2
speed float 1
layer int32_t 0
weight float 1
additive bool false
mask cl_str 0
start float 0
root_motion bool false
hold bool false

cl_anim_layer_opts

Changes a layer without restarting its clip: weight (over fade seconds), additive (-1 keep, 0 / 1), mask (as in play), speed (< 0: keep).

Initialiser: CL_ANIM_LAYER_OPTS_INIT.

Field Type Default
weight float 1
fade float 0.2
additive int32_t -1
mask cl_str 0
speed float -1

cl_anim_layer_state

Field Type Default
playing bool
time float
length float
weight float
speed float
loop bool
additive bool

cl_look_at_opts

bones: the chain that turns, parent first (“neck,head”); the turn is shared over it. target_entity (when set) is followed at its eyes, else target (a world position). speed: degrees per second. max_yaw / max_pitch: degrees, the total over the chain. weight: 0…1. enabled = false: the bones turn back at speed.

Initialiser: CL_LOOK_AT_OPTS_INIT.

Field Type Default
bones cl_str 0
target cl_vec3 0
target_entity cl_entity 0
speed float 360
max_yaw float 70
max_pitch float 40
weight float 1
enabled bool true

cl_bone_transform

A bone in the world: position, its forward (+Z), up (+Y) and right (+X) axes (unit vectors) and its scale.

Field Type Default
pos cl_vec3
forward cl_vec3
up cl_vec3
right cl_vec3
scale float

cl_entity_query

type: an entity type id (“minecraft:zombie”, “my_mod:tenant”) or an entity type tag (“#minecraft:undead”; mod types are in no vanilla tag). tag: an entity tag (/tag, entity_add_tag). category: “monster”, “creature”, “ambient”, “axolotls”, “underground_water_creature”, “water_creature”, “water_ambient”, “misc” or “player”. exclude: leave this entity out. limit: at most this many (0: all; with NEAREST the nearest ones).

Initialiser: CL_ENTITY_QUERY_INIT.

Field Type Default
type cl_str 0
tag cl_str 0
category cl_str 0
exclude cl_entity 0
limit int32_t 0
flags cl_entity_query_flags 0

cl_effect_opts

amplifier 0 = level I. particles / icon: the effect’s particles and HUD icon. ambient: a beacon-like effect (fainter particles).

Initialiser: CL_EFFECT_OPTS_INIT.

Field Type Default
amplifier int32_t 0
ambient bool false
particles bool true
icon bool true

cl_effect_info

duration: ticks left (-1: infinite).

Field Type Default
amplifier int32_t
duration int32_t
ambient bool
particles bool
icon bool

cl_hurt_opts

hurt options. attacker: the entity responsible (DamageSource#getEntity; players get the kill credit, death messages name it). direct: the entity that hit (a projectile; default: the attacker). position: where the damage comes from (with has_position). knockback: a multiplier on the knockback this hit gives (0: none, 1: vanilla).

Initialiser: CL_HURT_OPTS_INIT.

Field Type Default
attacker cl_entity 0
direct cl_entity 0
position cl_vec3 0
has_position bool false
knockback float 1

cl_damage_type_desc

A mod damage type. Death messages work like vanilla: the translation key “death.attack.<message_id>” (default message_id: “<namespace>.<path>”), with the attacker as %2$s, or “death.attack.<message_id>.player” when only an earlier attacker gets the credit; %1$s is the victim, %2$s the attacker. death_message / death_message_player: the English text clients without the mod’s language file show (sent as the translation’s fallback, so vanilla clients read it too). tags: damage type tags the type is in (“minecraft:bypasses_armor, minecraft:is_fire”). vanilla_fallback: the vanilla damage type sent in the damage event packet (the hurt animation’s source; default “minecraft:generic”). exhaustion: food exhaustion for players.

Initialiser: CL_DAMAGE_TYPE_DESC_INIT.

Field Type Default
id cl_str 0
message_id cl_str 0
death_message cl_str 0
death_message_player cl_str 0
scaling cl_damage_scaling 0
effects cl_damage_effects 0
exhaustion float 0.1
tags cl_str 0
vanilla_fallback cl_str 0
user void* 0

cl_spawn_rule_desc

A natural spawn rule. type: a mob type (mod or vanilla). biomes: biome ids and biome tags, comma separated (“minecraft:plains, #minecraft:is_forest”; empty: every biome). category: the MobCategory it spawns and counts in (“monster”, “creature”, “ambient”, “axolotls”, “underground_water_creature”, “water_creature”, “water_ambient”; empty: the type’s). The rule joins the biome’s weighted spawn list of the category like a data pack entry: vanilla mob caps, pack sizes (min_group…max_group), despawning and spawn distances all apply. min_light / max_light: the raw brightness (0…15) the position needs (-1: no limit). min_player_distance: blocks to the nearest player (vanilla minimum 24). cap: at most this many of the type in the level’s loaded chunks (0: only the category cap). condition: see spawn_condition_fn.

Initialiser: CL_SPAWN_RULE_DESC_INIT.

Field Type Default
type cl_str 0
biomes cl_str 0
category cl_str 0
weight int32_t 10
min_group int32_t 1
max_group int32_t 4
placement cl_spawn_placement 0
check cl_spawn_check 0
min_light int32_t -1
max_light int32_t -1
min_player_distance float 24
cap int32_t 0
condition cl_spawn_condition_fn 0
user void* 0

cl_ride_opts

force: ride even where the vehicle refuses (Entity#startRiding force, like /ride and saved passengers). bone: sit at a bone of the vehicle’s glTF model (render_entity_model; the vehicle’s bone_transform each tick on the server and on Celestial clients with the mod) plus offset (bone space: +X right, +Y up, +Z forward); vanilla clients see the fallback’s seat. Players sit at the vanilla seat. Without bone, offset is ignored.

Initialiser: CL_RIDE_OPTS_INIT.

Field Type Default
force bool true
bone cl_str 0
offset cl_vec3 0

cl_raycast_opts

entities: entity hitboxes stop the ray too (ProjectileUtil#getEntityHitResult: spectators and dead entities left out), each grown by entity_margin blocks. ignore: an entity that never stops the ray (with its vehicle and passengers); usually the caster. source: the entity the block shapes are for (scaffolding and powder snow depend on it).

Initialiser: CL_RAYCAST_OPTS_INIT.

Field Type Default
blocks cl_ray_blocks 0
fluids cl_ray_fluids 0
entities bool false
ignore cl_entity 0
entity_margin float 0
source cl_entity 0

cl_raycast_hit

MISS: pos = to. BLOCK: pos where the ray enters the shape, face the face it enters, block_pos and state of the block (or fluid), inside: the ray started inside the shape. ENTITY: pos on the hitbox, entity. distance: from from to pos.

Field Type Default
type cl_hit_type
pos cl_vec3
face cl_direction
block_pos cl_block_pos
state cl_block_state
entity cl_entity
inside bool
distance double

cl_snapshot_info

Field Type Default
min cl_block_pos
max cl_block_pos
size_x int32_t
size_y int32_t
size_z int32_t
count int32_t
game_time int64_t

cl_light_info

Light at a block: block (from light sources), sky (from the sky), combined = max(block, sky - sky_darken) as mobs and crops see it (Level#getMaxLocalRawBrightness), sky_darken (0 by day, up to 11 at night and in storms).

Field Type Default
block int32_t
sky int32_t
combined int32_t
sky_darken int32_t

cl_block_info

What a block state is like (BlockBehaviour.BlockStateBase): solid (the legacy isSolid), occludes (canOcclude), solid_render (an opaque full cube), collision_full (its collision box is a full cube), has_collision, replaceable, requires_tool (drops only with the right tool), hardness (destroy time; -1 unbreakable), friction / speed_factor / jump_factor (movement on it), light_emission / light_dampening (0…15), map_color (MapColor id, 0 = none) and its RGB, sound_volume / sound_pitch of its SoundType. Mod blocks report their own values.

Field Type Default
is_air bool
is_liquid bool
solid bool
occludes bool
solid_render bool
collision_full bool
has_collision bool
replaceable bool
requires_tool bool
has_block_entity bool
random_ticks bool
hardness float
friction float
speed_factor float
jump_factor float
light_emission int32_t
light_dampening int32_t
map_color int32_t
map_color_rgb cl_color
sound_volume float
sound_pitch float

cl_camera_info

The camera this frame: position, the unit forward and up vectors, yaw / pitch (degrees, like entity rotations), the field of view (degrees, with the FOV effects), first_person (F5 off) and detached (a third-person or spectator camera away from the player’s eyes).

Field Type Default
pos cl_vec3
forward cl_vec3
up cl_vec3
yaw float
pitch float
fov float
first_person bool
detached bool

cl_movement_modifier

A movement modifier (stackable; several mods and ids add up). id: the modifier’s id (“my_mod:broken_leg”; added again it replaces itself). speed_mult: walking speed (minecraft:movement_speed, multiplied), jump_mult: jump height (minecraft:jump_strength), step_height: blocks added to minecraft:step_height. can_sprint / can_jump = false forbid sprinting / jumping. sway: degrees of slow camera sway (drunk or injured; Celestial clients with CLight only). Multipliers multiply, step heights and sways add, any false wins.

Initialiser: CL_MOVEMENT_MODIFIER_INIT.

Field Type Default
id cl_str 0
speed_mult float 1
jump_mult float 1
step_height float 0
can_sprint bool true
can_jump bool true
sway float 0

cl_movement_state

The combined effect of every movement modifier on a player.

Field Type Default
speed_mult float
jump_mult float
step_height float
can_sprint bool
can_jump bool
sway float
count int32_t

cl_part_model_opts

scale / offset (blocks) / rotation (degrees around x, y, z): the model’s placement at the part’s pivot (shoulder, hip, neck, waist; +Y up, +Z forward of the player, 1 model unit = 1 block). keep_part: draw the vanilla part too (armour pieces, attachments). clip: a clip of the model that loops (empty: its rest pose).

Initialiser: CL_PART_MODEL_OPTS_INIT.

Field Type Default
scale float 1
offset cl_vec3 0
rotation cl_vec3 0
keep_part bool false
clip cl_str 0

cl_input_override

Forced input: each key -1 (the player’s own), 0 (held up) or 1 (held down). On the server the player’s movement keys are forced on Celestial clients with CLight (the client moves as if the keys were pressed, so the server accepts the movement) and the server’s own copy of crouch / sprint follows (pose, interactions, what others see); vanilla clients keep their own movement. On a client (the local player): this client’s input only.

Initialiser: CL_INPUT_OVERRIDE_INIT.

Field Type Default
forward int32_t -1
backward int32_t -1
left int32_t -1
right int32_t -1
jump int32_t -1
crouch int32_t -1
sprint int32_t -1

cl_path_cost_desc

Initialiser: CL_PATH_COST_DESC_INIT.

Field Type Default
id cl_str 0
cost cl_path_cost_fn 0
user void* 0

cl_path_opts

width / height: the body the path is for (0: the entity’s CURRENT hitbox, entity_set_dimensions included; without an entity 0.6 x 1.8). mode: the node evaluator. doors: -1 the entity’s own (villagers, piglins …), 0 no, 1 closed wooden doors (#mob_interactable_doors) count as open and entity_path_to adds vanilla’s OpenDoorGoal (opens them, closes them behind). climb: also up and down #climbable blocks (ladders, vines, scaffolding). reach: how close to the target counts as there (blocks). max_nodes: the search budget (0: the entity’s follow range x 16 within 64…768 like vanilla; at most 4096). max_fall: drop at most this many blocks (-1: 3). water: the WATER malus (< -1: the entity’s own; -1: never through water; 0: free). cost: a registered path cost (ai_path_cost_register). entity: whose navigation level_find_path plans for (null: a plain WALK body).

Initialiser: CL_PATH_OPTS_INIT.

Field Type Default
width float 0
height float 0
mode cl_nav_mode 0
doors int32_t -1
climb bool false
reach float 1
max_nodes int32_t 0
max_fall int32_t -1
water float -2
cost cl_str 0
entity cl_entity 0

cl_path_info

reaches_target: the path ends within reach of the target (false: a partial path to the closest reachable node, like vanilla). nodes: node count; next: the index of the next node to walk to; target: the target block; last: the last node; length: the length along the nodes in blocks.

Field Type Default
reaches_target bool
nodes int32_t
next int32_t
target cl_block_pos
last cl_block_pos
length double

cl_goal_type_desc

A goal type (Goal): can_use (required), can_continue (null: can_use), start, tick, stop; removed: the goal left the mob (ai_remove_goal, ai_clear_goals, the mob was removed or unloaded): free per-goal state there. targets: goes into the target selector. interruptable: a goal with a lower priority number may take its flags. every_tick: tick every tick (vanilla’s requiresUpdateEveryTick; else every other tick like vanilla goals).

Initialiser: CL_GOAL_TYPE_DESC_INIT.

Field Type Default
id cl_str 0
flags cl_goal_flags 0
targets bool false
interruptable bool true
every_tick bool false
can_use cl_goal_can_use_fn 0
can_continue cl_goal_can_continue_fn 0
start cl_goal_start_fn 0
tick cl_goal_tick_fn 0
stop cl_goal_stop_fn 0
removed cl_goal_removed_fn 0
user void* 0

cl_model_shader_opts

shader: a GLSL file of the mod (“my_mod:shaders/model/blood.glsl”) that defines vec4 cl_shade() (the functions it may call are in the guide: cl_albedo(), cl_param(i), cl_texture(i, uv), cl_light(color), …). params: up to 8 render parameter names, comma separated (“my_mod:blood,my_mod:wet” -> cl_param(0), cl_param(1)). textures: up to 4 texture paths of the mod (cl_texture(0…3, uv)).

Initialiser: CL_MODEL_SHADER_OPTS_INIT.

Field Type Default
shader cl_str 0
params cl_str 0
textures cl_str 0

cl_particle_desc

A mod particle type. texture: a sprite sheet of the mod (“my_mod:textures/particle/spark.png”) with frames frames in columns columns (row by row); frame_ticks: ticks per frame (0: the frames spread over the lifetime). lifetime: ticks (+ up to lifetime_jitter more). size / size_end: the quad’s half size in blocks (size_end < 0: no change). gravity: blocks per tick squared (0.04 falls like vanilla items), friction: velocity kept per tick. collide: stops on blocks. color / color_end: ARGB tint (color_end 0: no change); fade: alpha fades out over the last third. emissive: full bright. additive: added on top (glows); else translucent. fallback: a vanilla particle (“minecraft:flame”, “dust{color:[1,0,0],scale:1}”) the server sends vanilla clients instead (“”: nothing).

Initialiser: CL_PARTICLE_DESC_INIT.

Field Type Default
texture cl_str 0
frames int32_t 1
columns int32_t 1
frame_ticks int32_t 0
lifetime int32_t 20
lifetime_jitter int32_t 0
size float 0.1
size_end float -1
gravity float 0
friction float 0.98
collide bool true
color cl_color 0xFFFFFFFF
color_end cl_color 0
fade bool true
emissive bool false
additive bool false
facing cl_particle_facing 0
fallback cl_str 0

cl_post_pass_desc

A screen-space pass over the world (after the world and the hand, before the HUD). shader: a GLSL file of the mod defining vec4 cl_post(vec2 uv) (cl_scene(uv) is the picture so far; cl_resolution, cl_time, cl_uniform(i) and the declared uniform names; see the guide). uniforms: up to 16 float names, comma separated (“strength,pulse”). order: lower runs first. textures: up to 4 texture paths of the mod (cl_texture(0…3, uv)).

Initialiser: CL_POST_PASS_DESC_INIT.

Field Type Default
id cl_str 0
shader cl_str 0
uniforms cl_str 0
order int32_t 0
enabled bool true
textures cl_str 0

cl_decal_desc

pos: a point on the surface; normal: the side it faces (snapped to the nearest block face; 0: up). size: blocks (edge length); rotation: degrees around the normal. lifetime: ticks (fades out over the last fifth; <= 0: until the level changes or level_clear_decals). The decal is clipped to the block faces under it (nothing in the air). color: ARGB tint. player (server): only this player sees it (0: every Celestial client with CLight within 64 blocks).

Initialiser: CL_DECAL_DESC_INIT.

Field Type Default
texture cl_str 0
pos cl_vec3 0
normal cl_vec3 0
size float 1
rotation float 0
lifetime int32_t 600
color cl_color 0xFFFFFFFF
emissive bool false
player cl_entity 0

cl_particle_spawn

pos / vel: where and how fast (blocks per tick); count: particles; spread: each one starts up to this far away (gaussian per axis, like /particle’s delta); speed: a random velocity of up to this much is added. color: a tint over the type’s (0: the type’s); scale: size multiplier. force: also beyond 32 blocks and with Particles: Minimal. player (server): only this player (0: everyone within 32 blocks; 512 with force).

Initialiser: CL_PARTICLE_SPAWN_INIT.

Field Type Default
pos cl_vec3 0
vel cl_vec3 0
count int32_t 1
spread cl_vec3 0
speed float 0
color cl_color 0
scale float 1
force bool false
player cl_entity 0

cl_camera_effects

Camera effects of the calling mod (several mods combine: FOV multipliers and bob scales multiply, rolls, shakes and vignettes add). fov_mult: the field of view (smoothed like vanilla’s FOV effects and scaled by the player’s FOV Effects setting). roll: degrees around the view axis (scaled by Distortion Effects). bob_scale: view bobbing strength (only when the player has View Bobbing on). vignette 0…1 in vignette_color (RGB). shake: degrees of camera shake at shake_speed shakes per second: only when the player enabled “Mod Camera Shake” (off by default), scaled by Distortion Effects. smoothing: seconds to reach new roll / shake / vignette values (0: at once).

Initialiser: CL_CAMERA_EFFECTS_INIT.

Field Type Default
fov_mult float 1
roll float 0
bob_scale float 1
vignette float 0
vignette_color cl_color 0
shake float 0
shake_speed float 8
smoothing float 0.25

cl_item_model_opts

scale: model units (glTF metres) to blocks, after fit. fit: centre the model’s bounding box on the item and scale its largest side to 1 block (like a full block item) before scale (false: the model’s origin is the item’s centre, 1 metre = 1 block). rotation: degrees about X, Y, Z (turns a model that faces another way; glTF faces +Z). offset: blocks, after the scale. display: the item model “display” JSON of vanilla item models ({“gui”: {“rotation”: [30, 225, 0], “translation”: [0, 0, 0], “scale”: [0.625, 0.625, 0.625]}, “ground”: …}: thirdperson_righthand, thirdperson_lefthand, firstperson_righthand, firstperson_lefthand, head, gui, ground, fixed, on_shelf; translation in pixels); the contexts it leaves out use the block item defaults. flags: NO_SHADOW is ignored, NEAREST / DOUBLE_SIDED as for entities. default_clip: a clip every copy of the item loops (empty: the rest pose).

Initialiser: CL_ITEM_MODEL_OPTS_INIT.

Field Type Default
scale float 1
fit bool true
rotation cl_vec3 0
offset cl_vec3 0
flags cl_model_flags 0
default_clip cl_str 0
display cl_str 0

cl_block_model_opts

scale, yaw_offset, offset: as model_opts (the origin is the block’s bottom centre; 1 metre = 1 block). The model turns with the block’s facing / rotation property (+Z of the model = the way the block faces: a chest’s front, a sign’s text). keep_vanilla: also draw the vanilla block entity (an overlay; else the model replaces it). flags: NO_SHADOW and NO_DEATH_TILT are ignored. default_clip: a clip every block of the type loops.

Initialiser: CL_BLOCK_MODEL_OPTS_INIT.

Field Type Default
scale float 1
yaw_offset float 0
offset cl_vec3 0
flags cl_model_flags 0
default_clip cl_str 0
keep_vanilla bool false

cl_fs_info

size: bytes (files); modified_ms: the last change, milliseconds since 1970.

Field Type Default
kind cl_fs_kind
size uint64_t
modified_ms int64_t

cl_http_opts

body / content_type: the request body and its type (“application/json”). headers: extra request headers, one “Name: value” per line (Host, Content-Length, Connection, Transfer-Encoding, Cookie, Proxy-* and User-Agent are the engine’s: CL_E_INVALID_ARGUMENT). timeout_ms: for the whole request (1000…60000, default 15 s). max_bytes: the response body limit (at most 64 MiB). save_to: a data/ path: a 2xx body is written there (atomically, counted against the data quota) instead of being handed to the callback.

Initialiser: CL_HTTP_OPTS_INIT.

Field Type Default
method cl_http_method 0
body cl_str 0
content_type cl_str 0
headers cl_str 0
timeout_ms int32_t 15000
max_bytes uint32_t 8388608
save_to cl_str 0

cl_attachment_desc

default_snbt: what the get functions return while no value is set (server: the default is stored on the first get, so the binary get works too; a client returns the default text for its copy). “” = no default (CL_E_NOT_FOUND).

Initialiser: CL_ATTACHMENT_DESC_INIT.

Field Type Default
default_snbt cl_str 0
flags cl_attach_flags 0

cl_hud_element_desc

id: unique in the mod (“compass”); label: the name in the editor; icon: an icon set name. width / height: the box in GUI px. anchor + x / y: the default position (x / y move inward from the anchor point). panel: Fancy draws the HUD panel behind it. cached: the last drawing is reused until hud_element_invalidate (no call per frame).

Initialiser: CL_HUD_ELEMENT_DESC_INIT.

Field Type Default
id cl_str 0
label cl_str 0
icon cl_str 0
width int32_t 64
height int32_t 16
anchor cl_hud_anchor 0
x int32_t 4
y int32_t 4
panel bool false
cached bool false
render cl_hud_element_render_fn 0
visible cl_hud_visible_fn 0
user void* 0

cl_ui_page_desc

Initialiser: CL_UI_PAGE_DESC_INIT.

Field Type Default
id cl_str 0
label cl_str 0
icon cl_str 0
subtitle cl_str 0
on_change cl_ui_page_fn 0
user void* 0

cl_view_desc

root: the root component’s type name. title / pause: the screen of view_open. x, y, width, height: the area in GUI px (width / height 0 = to the right / bottom edge of the screen).

Initialiser: CL_VIEW_DESC_INIT.

Field Type Default
root cl_str 0
title cl_str 0
pause bool false
x int32_t 0
y int32_t 0
width int32_t 0
height int32_t 0
render cl_view_render_fn 0
on_event cl_view_event_fn 0
on_effect cl_view_effect_fn 0
on_unmount cl_view_unmount_fn 0
user void* 0

cl_view_stats

What a view did so far (for tests and profiling): component renders, updates (commits), widgets created / changed / removed, and the nodes in the tree now.

Field Type Default
renders uint32_t
commits uint32_t
created uint32_t
updated uint32_t
removed uint32_t
nodes uint32_t

cl_ui_feature_desc

id: unique in the mod (“trail”); name and description: the card’s title and one line; icon: an icon set name. keywords: more words the search finds it by, one per line. option: the config path of a bool option of the mod’s client config that is the card’s on / off switch (0 = no switch). page: the Appearance page with its settings (ui_page_register; the card opens it, the search finds its rows).

Initialiser: CL_UI_FEATURE_DESC_INIT.

Field Type Default
id cl_str 0
name cl_str 0
description cl_str 0
icon cl_str 0
category cl_ui_feature_category 8
keywords cl_str 0
option cl_str 0
page cl_ui_page 0

cl_damage_source

A damage source as a mixin frame value (DamageSource): the damage type, the entity responsible and the entity that dealt it (a projectile; the attacker itself for melee), and an explicit source position (explosions, blocks).

Field Type Default
type cl_ident
attacker cl_entity
direct cl_entity
has_position bool
position cl_vec3

Callback types

C type Signature
cl_handler_fn void (*)(void* payload, void* user)
cl_block_use_fn cl_override (*)(const cl_block_ctx* ctx, cl_entity player, cl_hand hand, cl_interaction_result* out)
cl_block_attack_fn cl_override (*)(const cl_block_ctx* ctx, cl_entity player, int32_t* unused)
cl_block_random_tick_fn cl_override (*)(const cl_block_ctx* ctx, int32_t* unused)
cl_item_use_fn cl_override (*)(const cl_item_ctx* ctx, cl_interaction_result* out)
cl_cmd_fn int32_t (*)(cl_cmd_ctx ctx, void* user)
cl_payload_fn void (*)(cl_entity sender, cl_buf data, void* user)
cl_task_fn void (*)(void* user)
cl_hud_render_fn void (*)(cl_gui g, float partial_tick, void* user)
cl_hud_visible_fn bool (*)(void* user)
cl_screen_init_fn void (*)(cl_screen s, void* user)
cl_screen_render_fn void (*)(cl_screen s, cl_gui g, int32_t mouse_x, int32_t mouse_y, float partial_tick, void* user)
cl_screen_tick_fn void (*)(cl_screen s, void* user)
cl_screen_key_fn bool (*)(cl_screen s, int32_t key, int32_t scancode, int32_t modifiers, void* user)
cl_screen_char_fn bool (*)(cl_screen s, uint32_t codepoint, int32_t modifiers, void* user)
cl_screen_mouse_fn bool (*)(cl_screen s, double x, double y, int32_t button, cl_mouse_action action, void* user)
cl_screen_scroll_fn bool (*)(cl_screen s, double x, double y, double dx, double dy, void* user)
cl_screen_close_fn void (*)(cl_screen s, void* user)
cl_widget_fn void (*)(cl_widget w, void* user)
cl_rml_event_fn void (*)(cl_rml_doc doc, cl_str element_id, cl_str event, cl_str value, void* user)
cl_rml_action_fn void (*)(cl_rml_doc doc, cl_str action, cl_str args, void* user)
cl_menu_click_fn bool (*)(cl_menu m, cl_entity player, int32_t slot, int32_t button, cl_click_type click, void* user)
cl_menu_close_fn void (*)(cl_menu m, cl_entity player, void* user)
cl_mixin_fn void (*)(cl_mixin_ci* ci, void* user)
cl_spawn_condition_fn bool (*)(cl_level level, cl_str type, cl_block_pos pos, void* user)
cl_path_cost_fn float (*)(cl_level level, cl_block_pos pos, void* user)
cl_goal_can_use_fn bool (*)(cl_entity e, cl_goal goal, void* user)
cl_goal_can_continue_fn bool (*)(cl_entity e, cl_goal goal, void* user)
cl_goal_start_fn void (*)(cl_entity e, cl_goal goal, void* user)
cl_goal_tick_fn void (*)(cl_entity e, cl_goal goal, void* user)
cl_goal_stop_fn void (*)(cl_entity e, cl_goal goal, void* user)
cl_goal_removed_fn void (*)(cl_entity e, cl_goal goal, void* user)
cl_http_fn void (*)(cl_http_req req, int32_t status, cl_buf body, void* user)
cl_hud_element_render_fn void (*)(cl_gui g, int32_t w, int32_t h, void* user)
cl_ui_page_fn void (*)(cl_ui_page page, cl_str key, void* user)
cl_view_render_fn void (*)(cl_view v, uint64_t comp, cl_str type, void* user)
cl_view_event_fn void (*)(cl_view v, uint64_t comp, cl_str handler, double value, cl_str text, void* user)
cl_view_effect_fn void (*)(cl_view v, uint64_t comp, cl_str name, bool cleanup, void* user)
cl_view_unmount_fn void (*)(cl_view v, uint64_t comp, void* user)