Limits
These are Cinnabar sandbox and API limits. Counts apply per mod unless stated otherwise. Bytes count UTF-8 or encoded data, not characters. Fuel measures guest execution; host imports have separate allowances. Handle errors and spread work across callbacks.
Event handlers
| Constant | Value | Scope |
|---|---|---|
mod_api::ACTION_FILTER_FUEL | 200000 | Independent fuel for one synchronous action-filter call. |
mod_api::HANDLER_CALL_FUEL | 50000 | Fuel for one handler call; a handler is skipped when its event family’s remaining allowance is smaller. |
mod_api::TOTAL_SOUND_HANDLER_FUEL | 400000 | Guest fuel shared by all sound handlers per audio frame. |
mod_api::MAX_HANDLED_SOUNDS | 256 | New playback requests offered per audio frame; excess requests play unhandled. |
mod_api::MAX_SOUND_NAME_BYTES | 128 | Bytes in one offered sound-definition name. |
mod_api::TOTAL_TELEPORT_HANDLER_FUEL | 400000 | Guest fuel shared by all teleport handlers per frame. |
Execution and packages
| Constant | Value | Scope |
|---|---|---|
mod_host::FRAME_FUEL | 1000000 | Fuel for one personal-mod frame. |
mod_api::TOTAL_MOD_FRAME_FUEL | 2000000 | Frame fuel shared by all local mods, including actual world-entry use. |
mod_host::WORLD_ENTRY_FRAME_FUEL | 4000000 | One frame callback per observed world session, subject to shared admission. |
server_experience::runtime::CALLBACK_FUEL | 10000000 | Ordinary event and client-part callback fuel. |
server_experience::runtime::LOAD_FUEL | 100000000 | Personal-mod init and data-changed fuel. |
mod_host::MEMORY_BYTES | 16777216 | Linear memory per personal mod. |
mod_api::MAX_LOADED_MODS | 256 | Concurrent local mods. |
mod_host::MAX_COMPONENT_BYTES | 4194304 | Executable component bytes. |
mod_host::MAX_COMPONENT_SOURCE_BYTES | 21233966 | Component envelope including embedded resources. |
mod_host::package::MAX_PACKAGE_BYTES | 16777216 | Indexed directory package bytes. |
mod_host::MAX_LABEL_BYTES | 256 | Plain label bytes. |
mod_api::MAX_SETTINGS_BYTES | 16384 | Settings JSON bytes. |
After the host observes a new world session, each personal mod may run one frame callback with WORLD_ENTRY_FRAME_FUEL. Across all local mods, only one such callback is admitted per game update. It needs a full FRAME_FUEL reservation for admission and receives the full world-entry allowance. Its actual fuel use is charged to the shared frame pool; unused reservation fuel is refunded, and use beyond the pool reduces later frames’ capacity. If the extra slot is busy, ordinary callbacks can continue and the mod keeps its pending allowance. A temporary missing world, dimension change, guest recovery or hot replacement does not renew a used allowance.
The guest’s budget.remaining-fuel reports its cumulative invocation allowance across suspension. Elapsed time only schedules suspendible frames; fuel is their only execution fault limit. Host-call limits, validation, events, loading and synchronous decision-handler instances keep their separate limits. Fuel does not guarantee a wall-clock duration.
Controls and presentation
| Constant | Value | Scope |
|---|---|---|
mod_api::MAX_SELECTED_SLOT_READS | 8 | Selected-slot reads per callback, apart from the player-state read allowance. |
mod_api::MAX_INPUT_BINDINGS_PER_READ | 16 | Physical binding entries copied per read. |
mod_api::MAX_INPUT_BINDINGS | 128 | Physical binding entries per settings snapshot. |
mod_api::MAX_INPUT_ACTION_BYTES | 32 | Bytes per stable binding action name. |
mod_api::MAX_CONTROL_KEYS | 64 | Physical keys per held/admitted/pressed list, selection or reservation. Held and admitted lists truncate independently in physical-name order; above the cap, chord resolution can differ from the host gate. |
mod_api::MAX_CONTROL_KEY_BYTES | 32 | Bytes per physical key name. |
ui::mod_panel::MAX_PANEL_BYTES | 327680 | Whole personal panel JSON bytes. |
ui::mod_panel::MAX_PANEL_BUNDLE_BYTES | 8388608 | Panel bundle bytes. |
ui::mod_panel::MAX_PANEL_PATCH_BYTES | 32768 | Panel patch bytes. |
ui::mod_panel::MAX_PANEL_CONTROLS | 512 | Controls per panel. |
ui::mod_panel::MAX_PANEL_EVENTS | 64 | Panel input events per batch. |
ui::mod_panel::MAX_SURFACE_BINDINGS | 256 | Scalar surface bindings. |
ui::mod_panel::MAX_SURFACE_PATCH_BYTES | 65536 | Surface patch bytes. |
mod_api::presentation::MAX_ANNOTATIONS | 128 | Actor annotations. |
mod_api::presentation::MAX_ANNOTATION_SPANS | 4 | Spans per annotation surface. |
mod_api::presentation::MAX_ANNOTATION_SPAN_BYTES | 32 | Bytes per annotation span. |
mod_api::presentation::MAX_ACTOR_TINTS | 64 | Actor tints. |
mod_api::presentation::MAX_TOOLTIP_LINES | 256 | Retained tooltip lines. |
mod_api::presentation::MAX_ITEM_TOOLTIP_LINES | 8 | Extra tooltip lines shown for one item. |
mod_api::presentation::MAX_TOOLTIP_LINE_BYTES | 96 | Bytes per tooltip line. |
mod_api::presentation::MAX_CHAT_ACTIONS | 32 | Retained chat actions. |
mod_api::presentation::MAX_CHAT_ACTION_TEXT_BYTES | 96 | Bytes per chat span. |
mod_api::presentation::MAX_CHAT_ACTION_ID_BYTES | 48 | Bytes per chat action ID. |
Embedded assets and native payloads
| Constant | Value | Scope |
|---|---|---|
mod_api::MAX_PANEL_FONT_BYTES | 2097152 | Embedded outline font bytes. |
mod_api::MAX_PANEL_ICON_GLYPHS | 64 | Private panel icon glyphs. |
mod_api::MAX_MENU_LOGO_BYTES | 2097152 | Encoded menu logo bytes. |
mod_api::MAX_MENU_LOGO_WIDTH | 4096 | Menu logo width in pixels. |
mod_api::MAX_MENU_LOGO_HEIGHT | 2048 | Menu logo height in pixels. |
mod_api::MAX_MENU_LOGO_PIXELS | 4194304 | Decoded menu logo pixels. |
mod_api::MAX_MENU_TITLE_BYTES | 64 | Menu heading bytes. |
mod_api::MAX_NOTICES_BYTES | 4194304 | Embedded license text bytes. |
mod_api::MAX_ICON_BYTES | 262144 | Mods library icon bytes. |
mod_api::MAX_ICON_SIDE | 256 | Mods library icon side in pixels. |
mod_api::native_frame::MAX_BYTES | 65536 | Native frame input and camera output bytes. |
mod_api::native_render::MAX_BYTES | 262144 | Native drawing output bytes. |
Block geometry and clipping
| Constant | Value | Scope |
|---|---|---|
mod_api::drawing::MAX_BLOCK_CELLS | 2097152 | Retained grid cells, including retired generations. |
mod_api::drawing::MAX_BLOCK_EXTENT | 384 | Grid extent per axis. |
mod_api::drawing::MAX_BLOCK_PALETTE | 4096 | States in one grid palette. |
mod_api::drawing::MAX_BLOCK_STATE_BYTES | 262144 | Named palette state bytes. |
mod_api::drawing::MAX_BLOCK_MUTATION_BYTES | 16777216 | Grid input bytes per callback. |
mod_api::drawing::MAX_BLOCK_TRIANGLES | 2097152 | Triangles across an owner’s completed grids. |
mod_api::drawing::MAX_BLOCK_DRAW_TRIANGLES | 4194304 | Submitted block triangles across placements. |
mod_api::drawing::MAX_BLOCK_MESH_BYTES | 134217728 | Packed mesh bytes across an owner’s grids. |
mod_api::drawing::MAX_BLOCK_GPU_BYTES | 268435456 | GPU arena, sort and placement bytes for personal block drawing. |
mod_api::drawing::MAX_DRAW_CLIPS | 8 | Retained clip resources. |
mod_api::drawing::MAX_DRAW_CLIP_DEPTH | 2 | Mask levels in one intersected clip chain. |
mod_api::drawing::MAX_CLIP_ATTACHMENT_BYTES | 134217728 | Private clip attachment bytes across personal views. |
World and player observations
| Constant | Value | Scope |
|---|---|---|
mod_api::MAX_GAMEPLAY_PLAYERS | 128 | Remote player poses per gameplay snapshot. |
mod_api::MAX_GAMEPLAY_MOBS | 64 | Nearby non-player poses. |
mod_api::MAX_MOB_RANGE_BLOCKS | 64 | Non-player observation radius in blocks. |
mod_api::MAX_OBSERVED_ACTORS | 16 | Actor observations per read. |
mod_api::MAX_OBSERVED_ACTOR_BOXES | 8 | Boxes per observed actor. |
mod_api::MAX_ACTOR_LIFE_READS | 64 | Actor IDs per life lookup. |
mod_api::MAX_COMBAT_READ_EVENTS | 4 | Combat events per incremental read. |
mod_api::MAX_COMBAT_LIFE_READS | 64 | Event sequences per combat-life lookup. |
mod_api::MAX_FACT_READS | 128 | Fact reads per callback. |
mod_api::MAX_PLAYER_STATE_EFFECTS | 32 | Effects per player snapshot. |
mod_api::MAX_ITEM_IDENTIFIER_BYTES | 128 | Item identifier bytes. |
mod_api::MAX_TERRAIN_EXTENT | 16 | Region extent per axis in blocks. |
mod_api::MAX_TERRAIN_CELLS | 4096 | Cells per region query. |
mod_api::MAX_TERRAIN_QUERIES | 4 | Distinct region and block-search subscriptions per frame. |
mod_api::MAX_TERRAIN_DISTANCE | 128 | Terrain distance per axis from the player, in blocks. |
mod_api::MAX_TERRAIN_FRAME_CELLS | 8192 | Changed cells re-sampled per frame across all mods. |
mod_api::MAX_TERRAIN_BOXES | 4096 | Distinct boxes per region. |
mod_api::MAX_TERRAIN_METADATA_BYTES | 262144 | Region metadata bytes. |
mod_api::MAX_TERRAIN_RESPONSE_BYTES | 524288 | Lowered region bytes. |
mod_api::MAX_FOUND_BLOCKS | 1024 | Positions returned by one block search. |
mod_api::MAX_FOUND_BLOCK_IDENTIFIERS | 8 | Identifiers per block search. |
Requests and camera
| Constant | Value | Scope |
|---|---|---|
mod_api::MAX_CAMERA_DELTA_RADIANS | 0.25 | Accumulated rotation per axis per callback, in radians. |
mod_api::MAX_ENTITY_REACH_BLOCKS | 6 | Local actor attack reach in blocks. |
mod_api::MAX_PACKET_DELAY_MS | 1000 | Post-login application packet delay in milliseconds. |
mod_api::MAX_INVENTORY_REQUESTS | 4 | Inventory requests per callback. |
mod_api::MAX_RIG_SIDE_BLOCKS | 2 | Absolute rig side offset in blocks. |
mod_api::MAX_RIG_VERTICAL_BLOCKS | 2 | Absolute rig vertical offset in blocks. |
mod_api::MAX_RIG_BACK_BLOCKS | 8 | Rig boom length in blocks. |
mod_api::MAX_RIG_ROLL_RADIANS | 0.6 | Absolute rig roll in radians. |
mod_api::MAX_RIG_FOV_DELTA_DEGREES | 30 | Absolute rig FOV delta in degrees. |
mod_api::MAX_VIEW_TILT_DEGREES | 90 | Absolute view tilt per axis in degrees. |
mod_api::MIN_VIEW_FOV_SCALE | 0.1 | Minimum current-frame FOV multiplier. |
mod_api::MIN_VIEW_LOOK_SCALE | 0.05 | Minimum routed look multiplier. |
mod_api::MAX_COMMAND_GRANTS | 8 | Granted command names. |
mod_api::MAX_COMMAND_BYTES | 128 | Command request bytes. |
mod_api::MAX_COMMANDS_PER_FRAME | 4 | Command requests per frame. |
mod_api::MAX_COMMANDS_PER_SECOND | 10 | Command requests per second of gameplay frame time. |
mod_api::MAX_CUES_PER_FRAME | 16 | Outgoing presentation cues per frame. |
mod_api::MAX_CUE_NAME_BYTES | 32 | Cue name bytes. |
mod_api::MAX_CUE_VALUES | 8 | Scalar values per cue. |
mod_api::MAX_INCOMING_CUES | 64 | Incoming cues per callback. |
Drawing, masks and shaders
| Constant | Value | Scope |
|---|---|---|
mod_api::MAX_RENDER_CALLS | 32 | Render and retained-drawing calls per callback, including refusals. |
mod_api::MAX_DRAW_INSTANCES | 1024 | Retained draw instances per owner. |
mod_api::MAX_DRAW_GEOMETRIES | 256 | Retained geometries per owner. |
mod_api::MAX_DRAW_VERTICES | 65536 | Resident source vertices per owner. |
mod_api::MAX_DRAW_INDICES | 196608 | Resident source indices per owner. |
mod_api::MAX_DRAW_GEOMETRY_BYTES | 16777216 | Resident geometry bytes per owner. |
mod_api::MAX_DRAW_MUTATION_BYTES | 1048576 | Shared drawing mutation and copied asset bytes per callback. |
mod_api::MAX_DRAW_EXPANDED_VERTICES | 196608 | Expanded GPU vertices per owner. |
mod_api::MAX_DRAW_VERTEX_WORK | 786432 | Submitted vertex work, including repeated instances. |
mod_api::MAX_DRAW_GROUP_NAME_BYTES | 32 | Frame group name bytes. |
mod_api::MAX_DRAW_ENTITIES | 16 | Retained actor references per owner. |
mod_api::MAX_DRAW_MATERIALS | 8 | Retained materials, including retiring resources. |
mod_api::MAX_MATERIAL_COMPILES_PER_CALLBACK | 1 | Material validation attempts per callback. |
mod_api::MAX_MATERIAL_PIPELINE_COMPILES_PER_FRAME | 1 | Native material compilations per render frame across all mods. |
mod_api::MAX_MATERIAL_EMISSION | 16 | Linear emission component. |
mod_api::drawing::MAX_MASKS | 8 | Retained union masks per owner. |
mod_api::drawing::MAX_MASK_ENTITIES | 32 | Actors per mask. |
mod_api::drawing::MAX_MASK_VERTICES | 262144 | Actor vertices per mask, including equipment. |
mod_api::drawing::MAX_MASK_ATTACHMENT_BYTES | 268435456 | Mask attachment bytes across masks and views. |
mod_api::drawing::MAX_MASK_CALLS | 64 | Mask calls per callback. |
mod_api::drawing::MAX_MASK_OUTLINE_RADIUS | 4 | Outline radius in physical pixels. |
mod_api::drawing::MAX_MASK_GLOW_RADIUS | 16 | Glow radius in physical pixels. |
mod_api::MAX_RENDER_PASSES | 8 | Retained post passes. |
mod_api::MAX_SHADER_BYTES | 16384 | Shader source bytes. |
mod_api::MAX_SHADER_EXPRESSIONS | 4096 | Expanded shader expressions. |
mod_api::MAX_SHADER_TEXTURE_SAMPLES | 32 | Worst-case texture reads per fragment. |
mod_api::MAX_SHADER_TYPE_BYTES | 1024 | Bytes in one shader value. |
mod_api::MAX_PASS_PARAMS | 16 | Scalar post-pass parameters. |
mod_api::MAX_PASS_COMPILES_PER_FRAME | 1 | Post-pass validations per frame callback. |
mod_api::MAX_RENDER_DECALS | 64 | Decals per callback. |
mod_api::MAX_RENDER_RIBBONS | 32 | Ribbons per callback; shared with lines. |
mod_api::MAX_RIBBON_POINTS | 64 | Points per ribbon or line. |
mod_api::MAX_RENDER_BEAMS | 16 | Beams per callback. |
mod_api::MAX_RENDER_BILLBOARDS | 512 | Billboards per callback. |
mod_api::MAX_BLOCK_HIGHLIGHTS | 1024 | Native full-block highlights. |