Types, enums and constants
Status: Implemented (API 1.24). Generated from
client/clight/idl/clight_api.jsonbytools/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) |