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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions