cc-libs/CLAUDE.md

2.3 KiB

CLAUDE.md

Concise guidance for agents working in this repository.

Project

ComputerCraft / CC:Tweaked Lua APIs, servers, and programs for Minecraft 1.21. Code runs in the ComputerCraft sandbox, not standard Lua.

Use docs/README.md as the entrypoint for CC:Tweaked, Advanced Peripherals, and Create integration documentation links. Use docs/adrs/README.md for repository architecture decisions.

Constraints

  • Do not run Lua locally or add a test harness unless asked; code executes in-game or CraftOS-PC.
  • After editing Lua, run just check and fix all luacheck warnings.
  • Use 2-space indent, semicolons, and local function.
  • require paths are absolute ComputerCraft paths, for example require('/apis/net')().
  • Most API modules return factories; call the required module once before use.

Architecture

  • apis/eventloop.lua is the single-threaded event loop around os.pullEventRaw; consider using it everywhere async behavior is needed. A handler that returns api.STOP auto-unregisters.
  • apis/net.lua builds modem packet messaging, routing, and request/response RPC on the event loop. sendRequest returns ok, result, packet and defaults to a 0.5s timeout.
  • A router (/programs/router.lua) must be running somewhere on the network; without it, packets lack routerId, isPacketOk rejects them, and cross-machine messaging silently fails.
  • servers/ listen for requests and start loops; programs/ are clients that send requests and exit.
  • Well-known channels: 9 ping, 10 router/default routing. Keep duplicated constants in sync.

Boot And Install

  • startup/servers.lua starts /programs, the shell, and configured servers via parallel.waitForAll.
  • Preserve periphemu guards used for CraftOS-PC emulation.
  • install.lua downloads files listed in LIST_FILES from master by default, or from next with --beta; add shipped files there.
  • Add new servers to startup/servers.lua as needed.

Conventions

  • Bump local _VERSION = '...' when changing module behavior.
  • Programs support -version/--version and -help/--help; router also supports -silent/--silent.
  • French or English comments are fine; match surrounding code.
  • Commit messages use lightweight conventional style: topic(scope): description or topic: description.

See DEVELOPMENT.md for local setup.