Skip to content

Configurable serverslots #9

@remdui

Description

@remdui

Is your feature request related to a problem? Please describe.
We willen zowel soft- als hard-slots kunnen beheren. Soft cap voor onze eigen logica (queue/prioriteit), en een harde cap die het echte maximum van de server bepaalt — dynamisch aanpasbaar via een command, zonder restart. Daarnaast willen we (indien mogelijk) de waarde in server.properties:max-players programmeerbaar bijwerken zodat de wijziging ook na een reboot blijft gelden. (Paper 1.20+ ondersteunt het runtime wijzigen van max players via API.) ([jd.papermc.io]1)

Describe the solution you'd like

  • Soft cap (pluginlaag)

    • Intercepteer join (PreLogin/Login) en beslis o.b.v. onze custom soft cap (integreer met wachtrij/prioriteit).
    • Commands: /slots soft show|set <n>|add <delta>|off.
    • Permissies: slots.manage, slots.bypass.
  • Hard cap (echte serverlimiet, live)

    • Gebruik Paper API Server#setMaxPlayers(int) om on the fly het echte maximum te wijzigen (Paper 1.20+).
    • Commands: /slots hard show|set <n>|add <delta>.
    • Wijziging is direct actief en zichtbaar in server ping/MOTD. ([jd.papermc.io]1)
  • Persist naar server.properties (na bootup overschrijven)

    • Bij wijziging van de hard cap: schrijf ook max-players=<n> naar server.properties zodat het na een restart klopt. (Effect tijdens runtime komt via de API; de file-aanpassing zorgt voor persistentie.) ([PaperMC Docs]2)
    • Optie persist_on_restart: true|false.
    • Let op: sommige hosts/panels overschrijven server.properties; daarom ook eigen waarde in onze pluginconfig bewaren en bij serverstart opnieuw toepassen via de API. ([CubeCoders Support]3)
  • UX & gedrag

    • Cap verlagen kickt niemand; blokkeert alleen nieuwe joins.
    • Reserved slots: apart aantal + permissie (slots.reserve).
    • Heldere feedback bij “vol” en na wijziging; log auditregel bij elke aanpassing.
  • Voorbeeldconfig (kort)

    slots:
      enabled: true
      soft:
        enabled: true
        default_cap: 180
      hard:
        enabled: true
        default_cap: 200
        persist_on_restart: true   # schrijf ook naar server.properties
      reserved:
        enabled: true
        count: 5
        permission: "slots.reserve"
  • Commands (samenvatting)

    • /slots soft set <n> / add <delta> / show / off
    • /slots hard set <n> / add <delta> / show
    • Alleen voor slots.manage.

Additional context

  • API-basis: Paper 1.20+ biedt officieel Server#setMaxPlayers(int) (runtime). ([jd.papermc.io]1)
  • Behoud na reboot: update daarnaast server.properties:max-players (persistentie), maar houd rekening met panels die file-waarden overschrijven — reapply bij start. ([PaperMC Docs]2)

Acceptatiecriteria

  1. /slots hard set <n> wijzigt direct het echte maximum (zonder restart). ([jd.papermc.io]1)
  2. /slots soft set <n> begrenst joins via onze pluginlaag en integreert met wachtrij/prioriteit.
  3. Bij persist_on_restart=true wordt server.properties:max-players aangepast; na reboot blijft de waarde behouden (voor zover host het niet overschrijft). ([PaperMC Docs]2)
  4. Cap-verlaging kickt niemand; permissies slots.bypass en slots.reserve werken zoals bedoeld.
  5. Geen console-errors; alle wijzigingen worden gelogd met gebruiker, oude/nieuwe waarde en timestamp.

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