/why from that graph. If nothing was captured at a block, inspect stays empty and points you at CoreProtect.
Capture, then persist
- A Paper or Folia listener runs on the owning region / entity thread.
- The listener snapshots primitives (player UUID, location, entity UUID, material, region name). It does not keep live
Player,Entity, orBlockobjects for later I/O. - The snapshot is offered to a bounded ingest queue.
- A background writer batches rows into local SQLite (WAL). Tick and region threads never wait on disk.
performance.degraded-mode (default true) skips fire spread, falling-block extras, and extra projectile hits so the server stays up. /cc status shows queue pressure and drop counts.
Nodes and edges
A node is something that happened: a player action, TNT prime, explosion, death, deny, WorldEdit operation, block effect. An edge is a parent → child link with a confidence rank./cc explain shows why that edge is believed.
Correlation (two things nearby in time) is never presented as proof. If two explanations remain plausible,
/why can say ambiguous.
What inspect can see
/why inspect and /why here only search chains CauseChain already stored at that location: fire, TNT, explosions, WorldEdit, deaths, denials, projectiles.
They do not look up who placed a chest last week. That is CoreProtect /co i. Empty inspect names the claim or region when an adapter can, then tells you to use /co i.
What this release traces
- Player deaths (TNT, projectiles, melee, void/fall with honest unknown)
- WorldGuard and GriefPrevention build/break denials
- Claim-scoped inspect of captured chains
- Player TNT ignition and TNT-to-TNT chains
- Explosions and aggregated block effects
- Projectiles (no invented owner for dispensers)
- Fire ignition/spread where the platform link is defensible
- Falling blocks
- WorldEdit / FAWE operations as one semantic node plus an effect set
Query bounds
/why and /chain walk the graph with a budget (queries.max-depth, queries.max-nodes, queries.min-confidence). Oversized walks return a partial result instead of hanging the server. Retention purges oldest complete traces when the size cap is hit. See Configuration.