Skip to content

Playercount placeholders #10

@remdui

Description

@remdui

Is your feature request related to a problem? Please describe.
We hebben netwerkbrede playercount-placeholders nodig op elke Paper-server (achter Velocity), inclusief een totaal en per server, maar dan gecorrigeerd voor vanished spelers. Huidige placeholders tonen onjuiste aantallen omdat vanished spelers meegeteld worden of omdat alleen de lokale server bekend is.

Describe the solution you'd like
Een eigen PlaceholderAPI-expansion + netwerkservice die zichtbare spelers telt:

  • Placeholders (voorbeeld):

    • %network_online_total% — totaal aantal niet-vanished spelers in het hele netwerk
    • %network_online_here% — aantal niet-vanished spelers op de huidige Paper-server
    • %network_online_<server>% — aantal niet-vanished spelers op een specifieke Velocity-server (bijv. %network_online_survival%)
    • (optioneel) %network_online_total_including_vanished% voor staff
  • Vanish-correctie: standaard exclude vanished spelers. Optioneel per-viewer gedrag: als de viewer placeholders.see_vanished heeft, tel vanished mee.

  • Datastroom:

    • Kleine Velocity-companion die per server periodiek visibleCount rapporteert (of op aanvraag terugstuurt) via Plugin Messaging Channel of Redis.
    • Elke Paper-server houdt een korte cache (bijv. 1s TTL) en levert de placeholders instant.
  • Configuratie (indicatief):

    placeholders:
      cache_ttl_ms: 1000
      include_vanished_for_permission: "placeholders.see_vanished"
      servers:
        survival: "survival"   # placeholdernaam : velocity-server-id
        skyblock: "skyblock"
    vanish:
      providers: ["PremiumVanish","SuperVanish","CMI"]  # auto-detect; fallback: metadata 'vanished'
    messaging:
      transport: "pmc"         # pmc | redis
      channel: "network:players"
  • Compat & veiligheid:

    • Werkt alleen als de Velocity-companion actief is; bij ontbreken → toon 0 of “—” (configureerbaar).
    • Niet blocking; timeouts en degelijke error-logging.

Additional context

  • Commands: /placeholders reload herlaadt config/mapping.
  • Performance: alleen aantallen, geen lijsten; minimaliseer verkeer (diff-updates of interval announce).
  • API (intern): NetworkPlayerCounts#get(serverId) en #getTotal() voor hergebruik door andere modules.

Acceptatiecriteria

  1. %network_online_total% toont op alle Paper-servers het netto aantal spelers (excl. vanished) in het volledige Velocity-netwerk.
  2. %network_online_<server>% werkt voor elke gemapte server; %network_online_here% voor de huidige.
  3. Vanished spelers worden niet meegeteld, behalve voor viewers met placeholders.see_vanished (indien geactiveerd).
  4. Waarden updaten minimaal elke 1 seconde zonder merkbare lag; bij uitval van de companion vallen placeholders netjes terug.
  5. Geen console-errors; duidelijke logs bij verbindingsproblemen en hersteld zodra de verbinding terug is.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions