Skip to main content
forge-devtools is your iteration toolkit while building on FORGE: see into live state, trace events, run scenarios, and capture world coordinates. It adds zero gameplay.
Config.Enabled is true in the dev repo and should be false for distribution. When disabled, the package registers itself for health but goes inert: no exports do work, and the gate rejects every call. A WARN banner prints at boot while it is enabled.

Console commands

Console commands are client-side (registered on the HConsole actor). Type them in the in-game console.
CommandWhat it does
dumpcharDumps your character’s attributes, active effects, equipment, progression, and more to the Output Log under [forge-devtools][dump].
coordsCaptures your current world transform (position + aim) for placing content. DumpCoords prints a copy-paste Lua table.
dumpchar is the fastest way to confirm gameplay state, for example that eating bread applied effect:well_fed and raised attr:constitution.

Exports

Inspection

ExportSignatureReturns
DumpCharacterDumpCharacter(character_id)Result (also logs structured JSON)
DumpWorldDumpWorld()Result with per-system counts
GetHealthGetHealth()aggregated service health + memory + tracer counters

Tracing & logging

ExportSignature
TraceEventsTraceEvents(nameOrGroup), log every firing of an event (or named group)
UntraceUntrace(nameOrGroup)
GetCountersGetCounters(), per-event firing counts
SetLogLevelSetLogLevel(level), proxy to forge-core:SetLogLevel

Scenarios & coords

ExportSignature
RegisterScenario / RunScenario / ListScenariosscripted server-side setups (creator scenarios use { pkg, export } handlers)
CaptureCoords / ListCoords / ClearCoords / DumpCoordsthe coords capture store
RunCommandRunCommand(actor, line), the /fdev command entrypoint

Gate

Every command/console path runs through a permission gate (Config.Permission, default dev.tools). In the dev repo, devtools grants this permission to players on join while enabled, so the console commands work without manual setup. In distribution (disabled), none of this runs.

Configuration

Config = {
  Enabled    = true,         -- set false for distribution
  Permission = "dev.tools",  -- gate for the standalone command path
}