Zum Hauptinhalt springen

Was sind Configurators?

Configurators passen Server-Konfigurationsdateien automatisch basierend auf der verwendeten Server-Software an. Sie handhaben Einstellungen wie Port-Bindung, Player-Forwarding und andere softwarespezifische Konfigurationen mittels Platzhalter-Ersetzung.

Wie Configurators funktionieren

Während der Server-Vorbereitung:
  1. Lädt der Serverhost das Configurator-Template aus options/configurators/
  2. Identifiziert die Ziel-Konfigurationsdateien
  3. Ersetzt Platzhalter mit tatsächlichen Server-Werten
  4. Schreibt die konfigurierten Dateien ins Server-Verzeichnis

Configurator Templates

Configurators werden in YAML-Dateien unter options/configurators/{name}.yml definiert. Jeder Configurator gibt an, welche Dateien modifiziert werden und welche Platzhalter ersetzt werden.

Beispiel: Paper + Velocity

# options/configurators/paper_velocity.yml
files:
  - path: server.properties
    format: properties
    values:
      server-port: "{{port}}"
      max-players: "{{max-players}}"
      online-mode: "false"

  - path: config/paper-global.yml
    format: yaml
    values:
      proxies.velocity.enabled: true
      proxies.velocity.secret: "{{forwarding-secret}}"
      proxies.velocity.online-mode: true

  - path: spigot.yml
    format: yaml
    values:
      settings.bungeecord: false

Beispiel: Velocity

# options/configurators/velocity.yml
files:
  - path: velocity.toml
    format: toml
    values:
      bind: "0.0.0.0:{{port}}"
      show-max-players: "{{max-players}}"
      player-info-forwarding-mode: "modern"
      forwarding-secret-file: "forwarding.secret"

  - path: forwarding.secret
    format: text
    content: "{{forwarding-secret}}"

Unterstützte Formate

FormatErweiterungBeschreibung
yaml.yml, .yamlYAML-Konfigurationsdateien
json.jsonJSON-Konfigurationsdateien
properties.propertiesJava-Properties-Dateien
toml.tomlTOML-Konfigurationsdateien
textbeliebigPlaintext-Datei-Ersetzung

Platzhalter

Configurators unterstützen dynamische Platzhalter, die durch serverspezifische Werte ersetzt werden:

Server-Eigenschaften

PlatzhalterBeschreibung
{{port}}Zugewiesener Server-Port
{{server-name}}Server-Name (z.B. lobby-1)
{{group}}Gruppenname
{{max-players}}Maximale Spieleranzahl
{{memory}}Zugewiesener Speicher (MB)

Netzwerk-Eigenschaften

PlatzhalterBeschreibung
{{forwarding-secret}}Velocity Forwarding Secret
{{server-ip}}Server-IP-Adresse
{{network-id}}Netzwerk-Identifier

Typ-Eigenschaften

PlatzhalterBeschreibung
{{type}}Server-Typ (proxy, server, lobby)
{{software}}Server-Software (paper, velocity, etc.)

Benutzerdefinierte Eigenschaften

Zugriff auf benutzerdefinierte Eigenschaften aus der Gruppe:
values:
  custom-setting: "{{$.my-custom-property}}"
Das $. Präfix greift auf die Properties-Map des Servers zu.

Benutzerdefinierte Configurators erstellen

1. Template erstellen

Erstelle eine YAML-Datei in options/configurators/:
# options/configurators/my-configurator.yml
files:
  - path: config.yml
    format: yaml
    values:
      server.port: "{{port}}"
      server.name: "{{server-name}}"

  - path: settings.properties
    format: properties
    values:
      max.players: "{{max-players}}"

2. Im Blueprint referenzieren

Gib den Configurator in deinem Blueprint an:
# blueprints/my-blueprint.yml
name: My Blueprint
configurator: my-configurator
minecraft_version: "1.21"
server_software: paper

3. Der Serverhost wendet ihn an

Während des Server-Starts ruft der Workflow die ConfiguratorAction auf:
# workflows/internal/setup.yml
steps:
  - action: configurator
    configurator: "{{configurator}}"
    dir: "{{server-dir}}"

Eingebaute Configurators

paper_velocity

Für Paper-Server hinter Velocity-Proxy:
  • Setzt Server-Port in server.properties
  • Aktiviert Velocity Modern Forwarding in paper-global.yml
  • Konfiguriert Forwarding Secret
  • Deaktiviert BungeeCord-Modus in spigot.yml

paper_bungeecord

Für Paper-Server hinter BungeeCord:
  • Setzt Server-Port in server.properties
  • Aktiviert BungeeCord-Modus in spigot.yml
  • Deaktiviert Online-Mode

velocity

Für Velocity-Proxy-Server:
  • Konfiguriert Bind-Port in velocity.toml
  • Richtet Modern Forwarding ein
  • Erstellt Forwarding-Secret-Datei

bungeecord

Für BungeeCord-Proxy-Server:
  • Konfiguriert Listener-Port in config.yml
  • Aktiviert IP-Forwarding
  • Setzt Max-Players

Verschachtelte Wertpfade

Für verschachtelte Konfigurationsstrukturen nutze Punkt-Notation:
files:
  - path: config.yml
    format: yaml
    values:
      server.network.port: "{{port}}"
      server.network.host: "0.0.0.0"
      features.enabled.chat: true
Dies erstellt:
server:
  network:
    port: 25565
    host: "0.0.0.0"
features:
  enabled:
    chat: true

Fehlerbehebung

Konfiguration wird nicht angewendet

  1. Prüfe ob Configurator-Name mit Blueprint übereinstimmt
  2. Verifiziere den Dateipfad
  3. Prüfe Serverhost-Logs auf Fehler

Platzhalter wird nicht ersetzt

  1. Stelle sicher, dass Platzhalter-Syntax korrekt ist: {{name}}
  2. Prüfe ob die Property auf dem Server existiert
  3. Für benutzerdefinierte Properties, nutze {{$.property-name}}

Falsches Dateiformat

  1. Verifiziere das format Feld entspricht dem tatsächlichen Dateityp
  2. Prüfe auf Syntaxfehler im Template
  3. Stelle sicher, dass die Datei im Server-Verzeichnis existiert