Files
dmg 4cebd19250
CI / build (push) Successful in 1m18s
CI / build (pull_request) Successful in 1m17s
feat(sentinel): persist alerts as CloudEvent JSONL
2026-10-29 17:55:18 -04:00

1.3 KiB

Purpur Sentinel

Passive, explainable movement-pattern observation for Purpur servers.

Sentinel gives permitted operators bounded evidence of suspicious on-foot speed, unauthorized unsupported flight, unsupported boat travel, source-less elytra propulsion, and statistically implausible elytra wear. Elytra analysis correlates server-recognized gliding, equipped-item identity, observed rocket use, external propulsion, altitude conversion, wear opportunities, Unbreaking, Mending/XP repair, and unbreakable items; high speed alone is never evidence. Sentinel does not cancel movement, alter vehicles or items, consume rockets, change flight permissions, or punish players.

Each generated alert is also appended asynchronously as a CloudEvents 1.0 JSON object to plugins/PurpurSentinel/events/YYYY-MM-DD.jsonl. Dates and timestamps use UTC, files retain 30 UTC days, and durable events identify the subject by UUID without display names, coordinates, raw trajectories, inventory contents, IP addresses, or permission state. Queue or disk failures never interrupt detection or gameplay.

Development

Requires Java 25 and Node.js 20.

./gradlew clean check jar

The output JAR is written to build/libs/. Production installation and deployment are separately gated operations.