Bundles and capabilities
An API 4 bundle declares its entrypoint, compatibility, files, settings, capabilities, dependencies, and data packs before Lua executes.
Capabilities
Every observation or action that can read or control the client requires a named capability. Examples include:
| Task | Capabilities |
|---|---|
| Read and click a GUI | gui.read, gui.interact |
| Mine a block | mining, navigation, pathfinding |
| Find and fight mobs | world.entities.read, combat |
| Read a route | routes.read |
| Hold an item | inventory |
| Use an entity or block | interaction |
| Watch GUI changes | events.gui.filtered |
| Watch matching chat | events.chat.filtered |
Declare only what the script uses in requestedCapabilities. An undeclared
capability fails before a game-facing operation begins.
Some options require a conditional capability. For example, navigation with
Ether Transmission requires etherwarp only when the request enables it.
Content packs
Static server-specific data belongs in a declared pack, not in the core API. Load one exact pack by name:
local WORKLOAD = hexis.content.pack({name = "workload"})
The manifest names the pack kind, schema version, relative path, and SHA-256. Lua cannot read an undeclared file or choose an arbitrary path.