Internal Work Item: 9
Problem
The BungeeCord adapter compiles only against bungeecord-api:1.14-SNAPSHOT and has no tests. It ignores dispatchCommand success (bungeecord/.../queue/QueueTask.java:55-61,70-72), wraps a whole poll in one catch, and performs fixed-rate polling without a retained task or per-command isolation. Config creation is an empty file; the queue default is changed in memory but not saved (DonationStorePlugin.java:31-35). Once configured, reconnect/rotation is broken by old credential argument injection. Descriptor/runtime/root versions disagree and logging uses System.out/deprecated message APIs.
Required work
- Select and document the supported BungeeCord Java/API baseline and update the provided dependency/repository.
- Implement a platform bridge that returns dispatch acceptance/completion into the shared fulfillment state machine and isolates each queue item.
- Port command registration/messaging/logging to current non-deprecated APIs and the shared typed command layer.
- Implement validated atomic configuration/default persistence, rotation/reload/status, task cancellation, single-flight polling, and backoff.
- Align descriptor and runtime metadata and add full adapter/package smoke tests.
Acceptance criteria
- Clean build and load succeed on every supported BungeeCord/JDK version.
- Unknown/false/throwing dispatches are not acknowledged; partial failures do not block later independent items or replay successes.
- First setup, credential rotation, player/console permissions, online/offline modes, config persistence, reload, and disable are tested.
- Scheduler and dispatch usage follow documented Bungee threading guarantees.
- Structured logs use the platform logger, include redacted command/payment context, and never expose the secret.
Internal Work Item: 9
Problem
The BungeeCord adapter compiles only against
bungeecord-api:1.14-SNAPSHOTand has no tests. It ignoresdispatchCommandsuccess (bungeecord/.../queue/QueueTask.java:55-61,70-72), wraps a whole poll in one catch, and performs fixed-rate polling without a retained task or per-command isolation. Config creation is an empty file; the queue default is changed in memory but not saved (DonationStorePlugin.java:31-35). Once configured, reconnect/rotation is broken by old credential argument injection. Descriptor/runtime/root versions disagree and logging usesSystem.out/deprecated message APIs.Required work
Acceptance criteria