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.tomlneoforge/run/config/featheredfriend-server.toml
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
- Client fordert Einstellungen an (
RequestServerSettingsPayload). - Der Server sendet einen vollständigen Snapshot (
ServerSettingsPayload). - Der Server überträgt auch Einstellungen bei der Anmeldung.
- 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
FFServerConfigmarkieren Einstellungen als fehlerhaft und versuchenSERVER_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
| Key | Default | Range | Purpose |
|---|---|---|---|
chatDisabledDefault | false | bool | Global player chat disable (commands unaffected). |
ravenChestsPerPlayer | 3 | 0..64 | Max placed Suspicious Chests per player. |
ravenLogRetentionMinutes | 10080 | 0..129600 | Raven log retention window (minutes). |
ravenLogMaxBytesPerPlayer | 262144 | 0..4194304 | Max Raven log size per player before clear. |
enderpackDepositCooldownSeconds | 600 | 0..86400 | Cooldown between Enderpack -> chest deposit workflows. |
scrollDeliveryCooldownSeconds | 600 | 0..86400 | Cooldown between scroll courier dispatches. |
courierTimeoutRetrySeconds | 60 | 0..86400 | Auto-retry interval for timeout-failed courier jobs. |
brushRavenCooldownSeconds | 30 | 0..86400 | Cooldown between brushing ravens. |
ravenLinkDurationSeconds | 30 | 5..600 | Raven Link session duration. |
allowServerSettingsScreenEditing | true | bool | Allows/disallows OP editing in settings screen. |
features.enableSuspiciousFeather | true | bool | Enables Suspicious Feather logic. |
features.enableSuspiciousChest | true | bool | Enables Suspicious Chest special logic. |
features.enableRavenArmor | true | bool | Enables Raven Armor equip/stat logic. |
features.enableMailbox | true | bool | Enables mailbox spotting + courier mailbox routing. |
spawning-Abschnitt
| Key | Default | Range | Purpose |
|---|---|---|---|
wildRavensPerPlayer | 1 | 0..16 | Wild 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.
Das Deaktivieren einer Funktion ist nur eine Verhaltensumschaltung. Vorhandene Weltdaten für diese Funktion werden nicht entfernt.
Beispiel für einen Server-Snapshot
{
"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.