Feathered Friend

Config

Feathed Friend имеет два уровня конфигурации:

  • Конфигурация клиента (featheredfriend-client.toml): поведение пользовательского интерфейса и локальных предпочтений.
  • Конфигурация сервера (featheredfriend-server.toml): важные для игрового процесса значения синхронизируются с клиентами.

В типичном запуске разработки:

  • neoforge/run/config/featheredfriend-client.toml
  • neoforge/run/config/featheredfriend-server.toml
Экран конфигурации и настроек Feathed Friend
Feathered Friend in-game settings screen.
Authoritative model

Конфигурация сервера является источником достоверных правил игрового процесса. Клиенты получают синхронизированные значения и должны рассматривать их как доступные только для чтения, если сервер не разрешает редактирование.


Конвейер синхронизации

  1. Клиент запрашивает настройки (RequestServerSettingsPayload).
  2. Сервер отправляет полный снимок (ServerSettingsPayload).
  3. Сервер также передает настройки при входе в систему.
  4. Наблюдатель тиков сервера проверяет наличие изменений конфигурации и осуществляет ретрансляцию.

Таким образом, изменения, внесенные в результате горячей перезагрузки TOML и внутриигровых настроек, распространяются на подключенные клиенты.


Поведение при горячей перезагрузке

Значения конфигурации сервера в FFServerConfig являются значениями времени выполнения.

FFConfigSyncEvents отслеживает значения и повторно передает их в случае их изменения, в том числе:

  • переключатели функций (enableSuspiciousFeather, enableSuspiciousChest, enableRavenArmor, enableMailbox)
  • лимиты/перезарядки
  • переключение чата

ravenLinkDurationSeconds перечитывается во время активных сессий, поэтому текущие ссылки могут сокращаться/расширяться сразу после изменения конфигурации.

DEEP DIVE: dirty-flag + save

Установщики в FFServerConfig помечают настройки как грязные и пытаются выполнить SERVER_SPEC.save(), чтобы изменения могли быстро синхронизироваться и сохраниться на диске.


Разрешения внутриигровых настроек

Графический интерфейс пользовательских настроек открывается с помощью сочетания клавиш open_settings (по умолчанию не привязано).

Редактирование на стороне сервера разрешено только в том случае, если оба параметра верны:

  • allowServerSettingsScreenEditing = true
  • игрок имеет права оператора 4 уровня

В противном случае клиенты смогут просматривать синхронизированные значения, но не смогут применять изменения настроек сервера.


Конфигурация клиента (только локально)

Конфигурация клиента управляет только локальным пользовательским интерфейсом/предпочтениями, включая:

  • scrollUiFontMode (VANILLA, JACQUARD, ALAGARD)
  • положение значка статуса ворона/привязка/визуальный режим
  • ключ от любимой печати
  • настройки просмотра журнала Raven (видимость/цвета категорий)

Они не меняют игровой процесс сервера.


Конфигурация сервера (права игрового процесса)

settings раздел

KeyDefaultRangePurpose
ZZTOKEN00008ZZravenChestsPerPlayer30..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.
ZZTOKEN00016ZZallowServerSettingsScreenEditingtrueboolAllows/disallows OP editing in settings screen.
ZZTOKEN00018ZZZfeatures.enableSuspiciousChesttrueboolEnables Suspicious Chest special logic.
features.enableRavenArmortrueboolEnables Raven Armor equip/stat logic.
features.enableMailboxtrueboolEnables mailbox spotting + courier mailbox routing.

spawning раздел

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

Если переключатель функций отключен

Переключатели функций отключают логику, а не существование элемента/блока:

  • существующие предметы/блоки остаются
  • инвентарь остается доступным
  • пропускаются системы выполнения для конкретных функций.

Примеры:

  • enableMailbox=false: хранилище почтовых ящиков по-прежнему открывается, но обнаружение/маршрутизация отключены.
  • enableSuspiciousChest=false: хранилище сундуков все еще работает, но логика начисления/депозита отключена.
  • enableSuspiciousFeather=false: путь запуска/восстановления Raven Link отключен.
Do not confuse 'disabled' with 'deleted'

Отключение функции — это только переключатель поведения. Он не удаляет существующие мировые данные для этой функции.

Пример снимка сервера

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

Поддержать проект

Нравится эта вики и эти моды?

Любая поддержка помогает мне развивать функции, писать документацию и выпускать обновления.

Наверх