feat(events): migrate distribution to Java 25 and Purpur
Release / release (push) Successful in 4m20s
CI / build (push) Successful in 1m11s

BREAKING CHANGE: New releases require Java 25/Purpur 26.2 and use purpur-event-producer-<version>.jar. Runtime SpigotEventProducer identity, server UUID, SQLite outbox and CloudEvent delivery contracts remain unchanged. Replace the old JAR rather than installing both distributions.
This commit is contained in:
dmg
2026-09-12 14:27:26 -04:00
parent 9f3f27bb45
commit ee3b4eca35
7 changed files with 85 additions and 23 deletions
+10 -8
View File
@@ -1,18 +1,20 @@
# Spigot Event Producer
# Purpur Event Producer
A Spigot 26.2 plugin that records Minecraft activity as CloudEvents 1.0, persists it in a local SQLite outbox, and sends newline-delimited batches to `game-ingest-server`.
A Purpur 26.2 plugin that records Minecraft activity as CloudEvents 1.0, persists it in a local SQLite outbox, and sends newline-delimited batches to `game-ingest-server`.
## Requirements
- Spigot 26.2
- Java 17 or newer
- Purpur 26.2 build 2618
- Java 25
- Network access to the ingest endpoint
The repository, checkout and new artifacts use `purpur-event-producer`. Runtime `SpigotEventProducer`, Java entrypoint/packages, existing configuration/server UUID and `plugins/SpigotEventProducer/event-outbox.sqlite3` remain unchanged, as do CloudEvent types/source/payloads and delivery semantics. The SQLite driver stays bundled. Replace the old JAR rather than installing both distributions. Old tags/assets remain available; new releases no longer support Java 17.
## Build and install
```bash
./gradlew clean test jar
cp build/libs/spigot-event-producer-0.1.0-SNAPSHOT.jar /path/to/server/plugins/
./gradlew clean check jar
cp build/libs/purpur-event-producer-0.1.0-SNAPSHOT.jar /path/to/server/plugins/
```
Start the Minecraft server once to create `plugins/SpigotEventProducer/config.yml`. Set a meaningful, stable `server-name`. When `server-id` is empty, the plugin generates and persists a UUID. Do not reuse that generated UUID on another server.
@@ -52,7 +54,7 @@ Public chat events contain the complete message text.
Private-message events recognize `/msg`, `/message`, `/tell`, `/w`, `/whisper`, `/pm`, `/reply`, and `/r`, including namespaced variants such as `/minecraft:tell`. Explicit commands contain the destination token. Reply commands set `reply: true` and omit the recipient so downstream processing can infer it from earlier ordered events. The event also reports whether the command was cancelled.
Spigot has no universal private-message event. Commands implemented with unrelated aliases or entirely custom plugin logic will not be recognized until their syntax is added. A recognized command event reports observation of the command, not guaranteed delivery to its recipient.
The Bukkit-compatible server API has no universal private-message event. Commands implemented with unrelated aliases or entirely custom plugin logic will not be recognized until their syntax is added. A recognized command event reports observation of the command, not guaranteed delivery to its recipient.
### Location snapshots
@@ -114,7 +116,7 @@ Gitea Actions runs the Gradle checks for every push and pull request and stores
- `feat:` creates a minor release;
- a breaking-change footer or `!` creates a major release.
A successful release creates a `vX.Y.Z` tag and attaches `spigot-event-producer-X.Y.Z.jar` permanently to the corresponding Gitea Release. The release workflow requires a repository secret named `RELEASE_TOKEN` with repository contents write permission.
A successful release creates a `vX.Y.Z` tag and attaches `purpur-event-producer-X.Y.Z.jar` permanently to the corresponding Gitea Release. The release workflow requires a repository secret named `RELEASE_TOKEN` with repository contents write permission.
For a local versioned build: