Mod - Modrinth
CauseChain
You died to TNT. Type /why. It names who lit it and the chain that killed you. Also WorldGuard denials, GriefPrevention, WorldEdit //set, bow kills. Keep CoreProtect for /co i. Paper, Purpur, Folia.

Source-provided project description. FreeMinecraftMods keeps creator credit and adds separate compatibility and decision guidance below.
Project overview
 # 🔍 CauseChain ### You died. Type `/why`. Get the chain. *Vanilla says you were blown up by TNT. `/why` names who lit it, the chain, and the crater.* [](https://mbcz.mintlify.app/causechain) [](https://discord.com/invite/VQjTVKjs46) [](https://bstats.org/plugin/bukkit/CauseChain/33693) --- ## ⚡ Why install this? You already run [CoreProtect](https://modrinth.com/plugin/coreprotect). `/co i` tells you who last touched a block. Players still respawn into "Steve was blown up by TNT" and staff still guess which TNT, which player, which WorldGuard region. CauseChain sits next to CoreProtect. After a death, a deny, or a captured chain, **`/why` prints the chain in chat.** Keep `/co i` for rollback. Keep CauseChain for the story. - 💀 **Death** — respawn, type `/why`, get igniter + TNT + you - 💥 **TNT chain** — ignite → chain trigger → explosion, with evidence ids - 🚫 **Named deny** — `/why deny` after WorldGuard or GriefPrevention blocks a place - 🔍 **Inspect** — click a block you can build on; empty inspect points at `/co i` - 🏹 **Bow / dispenser** — projectile owner when the platform recorded one; a dispenser stays a dispenser - ✏️ **WorldEdit `//set`** — one semantic node, not a thousand block clicks - ⚙️ **Paper / Purpur / Folia** ---  ## 📂 What `/why` actually answers ### 💀 Death - **How did you die?** — last death for the player who typed it - **Unknown parent** — if the platform never named a cause, chat says unknown. No fake player.  ### 💥 TNT - **Ignite** — player lighting TNT (`vanilla.tnt.ignition.v1`) - **Chain** — TNT priming TNT (`vanilla.tnt.chain-trigger.v1`) - **Crater** — explosion, blocks, who started it  ### 🚫 Protection - **WorldGuard** — `WorldGuard spawn (visitor)` plus the flag - **GriefPrevention** — claim owner + trust - **Both** — listed together, marked ambiguous ### 🔍 Land inspect - **`/why inspect` / `/why here`** — captured fire, TNT, WorldEdit on that block - **Empty** — names the claim or region, then tells you to run `/co i`. CauseChain does not store every place/break. ### 🏹 Other traces - **Bow kill** — when the projectile owner was recorded - **Dispenser** — stays a dispenser - **WorldEdit / FAWE** — one op node. FAWE is experimental - **Fire, falling blocks, explosions** — when the platform link is defensible  --- ## 🛠️ Commands **Player** - `/why` — last death - `/why deny` — last cancelled place/break - `/why inspect` — click inspect - `/why here` — target block **Staff** - `/why` — inspect toggle - `/chain ` — neighborhood around a node - `/cc status` `/cc adapters` `/cc explain` `/cc export` `/cc trace` `/cc reload` `causechain.why.self` and `causechain.why.claim` default true. Staff nodes default op. PlaceholderAPI: `%causechain_last_death%` `%causechain_last_deny%` `/why` has a **[Share]** button that copies a Discord-ready line. --- ## 📦 Install Drop the jar in `plugins/` next to CoreProtect and restart. No extra JARs, no account, no cloud. **Required for the loop:** [CoreProtect](https://modrinth.com/plugin/coreprotect). The JAR still loads without it. Empty inspect still tells you to use `/co i`. **Optional:** WorldGuard, GriefPrevention, WorldEdit / FastAsyncWorldEdit, PlaceholderAPI --- ## 📋 Requirements Built for [Paper](https://papermc.io/software/paper), [Purpur](https://purpurmc.org/), and [Folia](https://papermc.io/software/folia). **Spigot and CraftBukkit are not supported.** They have not been tested. - Server-side only. No client mod - Folia uses region, entity, global, and async schedulers (`folia-supported: true`). No published Folia stress run. Smoke TNT + death on your Folia jar before you treat it as production-proven. Versions on the Files tab are the ones this jar was tested against. Don't assume unlisted versions. ### Not in this release - `/rewind` / rolling the world back - CoreProtect history lookup - Logging every successful place/break - Lands - Naming every plugin that cancelled a click - Uploading traces off the server CauseChain is not affiliated with CoreProtect. Do not ping the CoreProtect author for support. --- ## 🔒 Privacy Chat and command text are never stored. Trace upload is not implemented. `privacy.telemetry` must stay false. bStats anonymous server counts are on by default. Turn off with `privacy.bstats: false` or `plugins/bStats/config.yml`. --- ## ❓ Support [