Skip to content

Modernize the BungeeCord adapter and make dispatch outcomes observable #28

Description

@ErriteEpticRikez

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions