Feathered Friend

Config

Feathered Friend hat zwei Konfigurationsebenen:

  • Client-Konfiguration (featheredfriend-client.toml): Benutzeroberfläche und lokales Präferenzverhalten.
  • Serverkonfiguration (featheredfriend-server.toml): Gameplay-maßgebende Werte werden mit Clients synchronisiert.

In einem typischen Entwicklungslauf:

  • neoforge/run/config/featheredfriend-client.toml
  • neoforge/run/config/featheredfriend-server.toml
Konfigurations- und Einstellungsbildschirm für Feathered Friend
Feathered Friend in-game settings screen.
Authoritative model

Serverkonfiguration ist die Quelle der Wahrheit für Spielregeln. Clients erhalten synchronisierte Werte und sollten diese als schreibgeschützt behandeln, es sei denn, der Server erlaubt die Bearbeitung.


Pipeline synchronisieren

  1. Client fordert Einstellungen an (RequestServerSettingsPayload).
  2. Der Server sendet einen vollständigen Snapshot (ServerSettingsPayload).
  3. Der Server überträgt auch Einstellungen bei der Anmeldung.
  4. Der Tick-Watcher des Servers prüft auf Konfigurationsänderungen und sendet erneut.

Daher werden Änderungen von TOML-Hot-Reload- und In-Game-Einstellungen an verbundene Clients weitergegeben.


Hot-Reload-Verhalten

Serverkonfigurationswerte in FFServerConfig sind Laufzeitwerte.

FFConfigSyncEvents überwacht Werte und sendet sie erneut, wenn sie sich ändern, einschließlich:

  • Funktionsschalter (enableSuspiciousFeather, enableSuspiciousChest, enableRavenArmor, enableMailbox)
  • Limits/Abklingzeiten
  • Chat umschalten

ravenLinkDurationSeconds wird während aktiver Sitzungen erneut gelesen, sodass aktuelle Links sofort nach Konfigurationsänderungen verkürzt/verlängert werden können.

DEEP DIVE: dirty-flag + save
  • Setter in FFServerConfig markieren Einstellungen als fehlerhaft und versuchen SERVER_SPEC.save(), damit Änderungen schnell synchronisiert werden können und auf der Festplatte gespeichert werden.

Berechtigungen für Spieleinstellungen

Die Benutzeroberfläche für benutzerdefinierte Einstellungen wird über die Tastenkombination open_settings geöffnet (standardmäßig ungebunden).

Serverseitige Änderungen sind nur zulässig, wenn beides zutrifft:

  • allowServerSettingsScreenEditing = true
  • Der Spieler verfügt über die Bedienerberechtigungsstufe 4

Andernfalls können Clients synchronisierte Werte anzeigen, aber keine Änderungen an den Servereinstellungen anwenden.


Client-Konfiguration (nur lokal)

Die Clientkonfiguration steuert nur lokale Benutzeroberflächen/Einstellungen, einschließlich:

  • scrollUiFontMode (VANILLA, JACQUARD, ALAGARD)
  • Position/Anker/visueller Modus des Rabenstatusabzeichens
  • Lieblingssiegel-Stempelschlüssel
  • Einstellungen für die Raven-Log-Ansicht (Kategorie Sichtbarkeit/Farben)

Diese verändern das Server-Gameplay nicht.


Serverkonfiguration (Gameplay-Autorität)

settings-Abschnitt

KeyDefaultRangePurpose
chatDisabledDefaultfalseboolGlobal player chat disable (commands unaffected).
ravenChestsPerPlayer30..64Max placed Suspicious Chests per player.
ravenLogRetentionMinutes100800..129600Raven log retention window (minutes).
ravenLogMaxBytesPerPlayer2621440..4194304Max Raven log size per player before clear.
enderpackDepositCooldownSeconds6000..86400Cooldown between Enderpack -> chest deposit workflows.
scrollDeliveryCooldownSeconds6000..86400Cooldown between scroll courier dispatches.
courierTimeoutRetrySeconds600..86400Auto-retry interval for timeout-failed courier jobs.
brushRavenCooldownSeconds300..86400Cooldown between brushing ravens.
ravenLinkDurationSeconds305..600Raven Link session duration.
allowServerSettingsScreenEditingtrueboolAllows/disallows OP editing in settings screen.
features.enableSuspiciousFeathertrueboolEnables Suspicious Feather logic.
features.enableSuspiciousChesttrueboolEnables Suspicious Chest special logic.
features.enableRavenArmortrueboolEnables Raven Armor equip/stat logic.
features.enableMailboxtrueboolEnables mailbox spotting + courier mailbox routing.

spawning-Abschnitt

KeyDefaultRangePurpose
wildRavensPerPlayer10..16Wild raven cap per online non-spectator player.

Wenn eine Funktionsumschaltung deaktiviert ist

Funktionsschalter deaktivieren die Logik, nicht die Existenz von Elementen/Blocks:

  • Vorhandene Artikel/Blöcke bleiben erhalten
  • Vorräte bleiben zugänglich
  • Featurespezifische Laufzeitsysteme werden übersprungen

Beispiele:

  • enableMailbox=false: Der Postfachspeicher wird weiterhin geöffnet, aber Spotting/Routing ist deaktiviert.
  • enableSuspiciousChest=false: Die Truhenlagerung funktioniert weiterhin, aber die Sitz-/Einzahlungslogik ist deaktiviert.
  • enableSuspiciousFeather=false: Der Start-/Wiederbelebungspfad von Raven Link ist deaktiviert.
Do not confuse 'disabled' with 'deleted'

Das Deaktivieren einer Funktion ist nur eine Verhaltensumschaltung. Vorhandene Weltdaten für diese Funktion werden nicht entfernt.

Beispiel für einen Server-Snapshot

JSON
{
  "settings": {
    "ravenChestsPerPlayer": 3,
    "enderpackDepositCooldownSeconds": 600,
    "scrollDeliveryCooldownSeconds": 600,
    "ravenLinkDurationSeconds": 30,
    "allowServerSettingsScreenEditing": true,
    "features": {
      "enableSuspiciousFeather": true,
      "enableSuspiciousChest": true,
      "enableRavenArmor": true,
      "enableMailbox": true
    }
  },
  "spawning": {
    "wildRavensPerPlayer": 1
  }
}

Dieses Projekt unterstutzen

Gefallt dir dieses Wiki und diese Mods?

Jede Unterstutzung hilft mir, neue Features zu bauen, Dokus zu schreiben und Updates zu liefern.

Nach oben