See which plugin cancelled a click, changed it, or ran slow. EventLens traces listeners and doesn't touch the event.
EventLens
A player clicks a block, something goes wrong, and you have no idea which plugin did it.
EventLens records how that Paper event went through the listeners: who ran, in what order, who cancelled it, what changed, who threw, and who looked slow. It does not cancel the event, reorder listeners, or hide errors.
spark tells you the server is busy. This tells you the path of one event.
Requirements
Paper 26.2, Java 25. Commands default to op.
Install
Drop EventLens-1.12.1.jar in plugins/, then stop and start the server. Don't /reload.
/eventlens status should say 1.12.1.
If you also want the setup wizard, the optional Java agent, or the NeoForge / Forge / Fabric client mods, those are on GitHub, not this Hangar download:
https://github.com/bellaouzo/EventLensMC/releases/tag/v1.12.1
The Paper agent (if you use it) goes in JVM args. Not in plugins/.
First trace
/eventlens status
/eventlens listeners PlayerInteractEvent --detail verbose
/eventlens trace start PlayerInteractEvent --preset block-flow
Do the click that broke, then:
/eventlens trace view <sessionId>
/eventlens trace export <sessionId> --format bundle
/eventlens trace stop
The session id shows up when you start. Export writes a folder; open index.html.
Commands
/el works the same as /eventlens.
| Command | What it does |
|---|---|
/eventlens status |
Version, whether tracing is on, agent mode |
/eventlens listeners <event> |
Who is registered for that event |
/eventlens events [text] |
Search events |
/eventlens plugin <name> |
One plugin's listeners / timing / exceptions |
/eventlens exceptions |
Exceptions EventLens saw on listeners |
/eventlens trace start … |
Start a session |
/eventlens trace view <id> |
Read it |
/eventlens trace stop |
Stop |
/eventlens trace export <id> --format bundle |
Folder with index.html |
Presets if you don't want to type event names: dev-debug, quick-interact, plugin-focus, block-flow, inventory-flow, chat-flow.
142 Paper/Bukkit types get full snapshots. Anything else that's registered still works with --generic (common fields only). listeners lists every registered event either way.
PlayerMoveEvent and other hot events need a filter and --confirm-hot or you'll drown the session.
Exports redact player names, worlds, coordinates, and paths unless you use --full.
No Folia, no Velocity, no packet sniffing.
Source and the long README: https://github.com/bellaouzo/EventLensMC
Pinned Versions
- R26.2
Pages
Members
1Owner