Commands and debugging
How to see Strut working, and how to tell "did not run" from "ran and did nothing".
The server commands (/strut ...) need operator permission level 2 and work on a dedicated server and in single player. The client commands work in any world.
/strut events
| Command | Does |
|---|---|
/strut events stats | Cumulative counts since launch: server and client events delivered, unbound sound keys, capped sweeps, binding sets loaded, entities being traced. |
/strut events trace <entity> [on|off] | A chat line for every server event delivered on that entity: type, payload, playback sequence, loop and exact game time. With no on or off it toggles. Server-side events only; the client's are on the F9 overlay. |
A working event and one that silently never ran look identical from outside, so trace is the way to check a new clip.
/strut assets
| Command | Does |
|---|---|
/strut assets status | What the server offers (files, size, manifest hash, whether assets are required), the counters, each player's sync in progress, and files skipped at the last reload with the reason. |
/strut assets list | The first 40 offered files with size and a short hash. |
Client commands
| Command | Does |
|---|---|
/strutarmour | What each armour slot of your player (or of the entity you look at) resolved to: the look, the model, the texture and what it hides. See Armour. |
/strutwear <model> <texture>, status, clear | Puts a Strut model on your player to try a worn model (the model's id as the game loads it, such as strut:strut/models/entity/test_dummy.strutmodel). status says whether it is drawn and clear takes it off. |
/strutphysics ... | The physics switches, the cursor tool and the test scenarios. See Physics. |
F9
The render overlay: see Rendering and performance for every line.
The log
Strut's log lines carry a prefix so they can be found:
| Prefix | From |
|---|---|
[Strut events] | Clip timelines, marker requirements, and event problems (an unknown type, an unreadable clip). |
[Strut asset sync] | What is offered, each player's sync result, files skipped and why, and client-side problems. |
[Strut shadow] | The GL state found by the first few Iris shadow flushes. |
If something does not work
- Nothing animates. Is the server playing anything?
ServerAnimationStates.forEntity(entity, false).play(...)must run on the server. Check the clip name matches one in the.strutanim. - An entity is invisible. Check the model, texture and animation paths against the convention.
- An event never fires. Trace it. If nothing appears, the server has no timeline for that clip: see where the server gets a clip's events. If a line appears but your code does not, check the type is registered and the listener's marker name.
- A sound never plays. Look at unbound keys on F9: a binding key nobody defined is counted there.
- Server assets are missing.
/strut assets status, then the player's F9 asset sync line. - A shadow is missing under shaders. Read the F9 shadow pass funnel: see Rendering and performance.