Feathered Friend

Config

Feathered Friend tiene dos capas de configuración:

  • Configuración del cliente (featheredfriend-client.toml): UI y comportamiento de preferencia local.
  • Configuración del servidor (featheredfriend-server.toml): valores autorizados para el juego sincronizados con los clientes.

En una ejecución de desarrollo típica:

  • neoforge/run/config/featheredfriend-client.toml
  • neoforge/run/config/featheredfriend-server.toml
Pantalla de configuración y configuración de Feathered Friend
Feathered Friend in-game settings screen.
Authoritative model

La configuración del servidor es la fuente de confianza para las reglas del juego. Los clientes reciben valores sincronizados y deben tratarlos como de solo lectura a menos que el servidor permita editarlos.


Canalización de sincronización

  1. El cliente solicita configuración (RequestServerSettingsPayload).
  2. El servidor envía una instantánea completa (ServerSettingsPayload).
  3. El servidor también envía la configuración al iniciar sesión.
  4. El observador de ticks del servidor comprueba si hay cambios de configuración y retransmisiones.

Por lo tanto, las ediciones de TOML hot-reload y las configuraciones del juego se propagan a los clientes conectados.


Comportamiento de recarga en caliente

Los valores de configuración del servidor en FFServerConfig son valores de tiempo de ejecución.

FFConfigSyncEvents monitorea los valores y retransmite si cambian, incluyendo:

  • alternancia de funciones (enableSuspiciousFeather, enableSuspiciousChest, enableRavenArmor, enableMailbox)
  • límites/enfriamientos
  • alternar chat

ravenLinkDurationSeconds se vuelve a leer durante las sesiones activas, por lo que los enlaces actuales pueden acortarse o extenderse inmediatamente después de los cambios de configuración.

DEEP DIVE: dirty-flag + save

Los configuradores en FFServerConfig marcan la configuración como sucia e intentan SERVER_SPEC.save() para que los cambios puedan sincronizarse rápidamente y persistir en el disco.


Permisos de configuración del juego

La GUI de configuración personalizada se abre mediante la combinación de teclas open_settings (sin vincular de forma predeterminada).

Las ediciones del lado del servidor solo se permiten cuando ambas cosas son verdaderas:

  • allowServerSettingsScreenEditing = true
  • el jugador tiene permiso de operador nivel 4

De lo contrario, los clientes pueden ver los valores sincronizados pero no pueden aplicar ediciones de configuración del servidor.


Configuración del cliente (solo local)

La configuración del cliente controla únicamente la interfaz de usuario/preferencias locales, incluyendo:

  • scrollUiFontMode (VANILLA, JACQUARD, ALAGARD)
  • posición de la insignia de estado del cuervo/ancla/modo visual
  • clave de sello de sello favorito
  • configuración de vista de registro de Raven (visibilidad/colores de categoría)

Estos no cambian el juego del servidor.


Configuración del servidor (autoridad de juego)

settings sección

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 sección

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

Si una función está desactivada

La función desactiva la lógica, no la existencia de elementos/bloques:

  • los elementos/bloques existentes permanecen
  • los inventarios siguen siendo accesibles
  • se omiten los sistemas de tiempo de ejecución con funciones específicas

Ejemplos:

  • enableMailbox=false: el almacenamiento del buzón aún se abre, pero la detección/enrutamiento está deshabilitada.
  • enableSuspiciousChest=false: el almacenamiento del cofre aún funciona, pero la lógica de depósito/percha está deshabilitada.
  • enableSuspiciousFeather=false: La ruta de inicio/reactivación de Raven Link está deshabilitada.
Do not confuse 'disabled' with 'deleted'

Deshabilitar una función es solo un cambio de comportamiento. No elimina los datos mundiales existentes para esa función.

Ejemplo de instantánea del servidor

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

Apoya este proyecto

Te gusta esta wiki y estos mods?

Cada apoyo me ayuda a seguir creando funciones, escribiendo documentacion y publicando actualizaciones.

Volver arriba