DeerFolia · 配置详解
文档/deerfolia/DeerFolia · 配置详解

DeerFolia · 配置详解

配置 DeerFolia 优化组和 AFK 网络设置。

文件结构

下面的结构用于参考。服务器生成的文件还会包含注释。如果实际生成的文件包含不同字段,请以实际文件为准。

dynamic-activation-brain:
  enabled: true
  start-distance: 12
  activation-distance-mod: 8
  maximum-activation-prio: 20

async-pathfinding:
  enabled: true
  async-pathfinding-keep-alive: 60
  async-pathfinding-max-threads: 20

kaiiju-entity-throttling: true

network-optimizations:
  optimized-var-int: true
  optimized-frame-encoding: true

lithium-optimize:
  enabled: true
  allocations: true
  ai: true
  collections: true
  entity: true
  math: true
  world: true

poi-optimizations:
  enabled: true
  golem-spawn-check-interval: 200
  secondary-poi-sensor-interval: 80
  village-distance-cache-duration: 100
  golem-spawn-player-distance-limit: 128

afk-network-optimization:
  enabled: true
  afk-threshold-ticks: 1200
  afk-enter-message: "&7[AFKNet] &eYou are now AFK. &7DeerFolia will temporarily suppress non-essential packets to save bandwidth."
  afk-exit-message: "&7[AFKNet] &aWelcome back! &7During this AFK session, you saved &b{saved_traffic} &7of traffic and up to &b{saved_bandwidth} &7of bandwidth. &aThanks for helping the server save costs!"
  count-look-changes-as-activity: true
  resync-on-resume: true
  stats-enabled: true
  suppression-whitelist-categories: []
  max-suppressed-bytes-before-category-resync: -1

Dynamic Activation of Brain

这一组配置会让远处实体降低 AI 更新频率,减少没有玩家观察时的计算。

默认值说明
enabledtrue总开关。设为 false 后使用接近上游默认的实体激活节奏。
start-distance12开始降低激活频率的距离。
activation-distance-mod8距离衰减参数。数值越小,远处实体越早或越明显地降低计算频率。
maximum-activation-prio20最大间隔上限。远处实体至少每 20 tick 计算一次。

如果刷怪塔、村民交易区或红石装置出现延迟,请调小 activation-distance-mod 或调大 start-distance。每次只改一个值。在目标区域测试。

Async Pathfinding

这一组配置会把部分路径查找放入异步任务,减少路径查找阻塞当前区域 tick 的机会。

默认值说明
enabledtrue异步路径查找总开关。
async-pathfinding-keep-alive60单个路径任务的最大活跃时间,单位为 tick。
async-pathfinding-max-threads20异步路径线程池大小。DeerFolia 使用虚拟线程。该值不会为每个线程预留一个物理核心。

建议从 10–20 个线程开始。线程过少会让任务排队。线程过多会增加调度和 GC 压力。遇到寻路异常或 CPU、GC 使用量明显变化时,先降低线程数。修改后重启服务器。

Kaiiju Entity Throttling

kaiiju-entity-throttling 是总开关。详细规则见实体节流配置。设为 false 后,DeerFolia 不会使用 kaiiju-entity-throttling.yml 中的限制。你可以保留此文件供以后使用。添加 limit 前先进行测试。

Network Optimizations

这一组没有单独的 enabled 总开关:

默认值作用
optimized-var-inttrue优化网络包长度字段的 VarInt 读写。
optimized-frame-encodingtrue优化网络帧编码,减少准备出站数据的开销。

它们只影响网络包处理的内部路径,不应改变玩家可见功能。遇到代理、压缩插件或网络协议问题时,在测试副本中一次关闭一个选项。

Lithium Optimize

这一组使用部分 Lithium 服务端优化,并按 Folia 的区域线程模型做了适配。enabled 是总开关,其他键选择优化类别:

主要作用
allocations减少高频路径中的临时对象分配。
ai优化实体 AI 遍历。
collections在实体属性等路径使用更轻量的集合访问方式。
entity跳过不必要的实体工作和仅客户端需要的粒子逻辑。
math使用更容易被 JVM 优化的数学路径。
world优化世界生成、天气和冻结路径。

修改这一组中的任意选项后都要重启服务器。这些选项不是完整的 Lithium 功能集合,也不替代 Paper、Folia 或 Moonrise 已提供的优化。遇到实体、红石或天气异常时,先在测试服将 enabled 设为 false,再修改子项。

POI Optimizations

这一组调整村民的 Point of Interest 检查。数值单位为 tick 或方块:

默认值说明
enabledtruePOI 优化总开关。
golem-spawn-check-interval200每名村民进行铁傀儡生成检查的最小间隔。
secondary-poi-sensor-interval80次级 POI 传感器扫描的最小间隔。
village-distance-cache-duration100村庄距离计算缓存时间。
golem-spawn-player-distance-limit128玩家距离超过该值时,跳过部分铁傀儡生成检查。

大型村民区域先使用默认值并观察 CPU。如果铁傀儡农场或职业站点依赖时序,请调低相关间隔,或将 enabled 设为 false 进行比较。

AFK Network Optimization

玩家在设定时间内没有活动时,DeerFolia 会抑制部分非必要的客户端数据包。玩家恢复活动后,DeerFolia 会重新同步必要状态。此功能用于节省带宽,不会停止该玩家的世界逻辑。

默认值说明
enabledtrueAFK 网络抑制总开关。
afk-threshold-ticks1200连续经过该数量的无活动 tick 后进入 AFK。
count-look-changes-as-activitytrue只转动视角是否算恢复活动。
resync-on-resumetrue恢复活动时补发附近区块和实体同步。请保持开启。
stats-enabledtrue是否累计 /afknetstats 使用的统计数据。
suppression-whitelist-categories[]AFK 时仍然放行的类别列表。
max-suppressed-bytes-before-category-resync-1单玩家、单类别累计抑制的字节阈值。-1 表示不在恢复活动前强制刷新。

支持以下类别:

  • chunk-stream:区块、光照和区块批次;
  • block-updates:方块、批量方块和方块实体更新;
  • entity-stream:实体生成、移动、元数据、装备和属性;
  • world-effects:声音、粒子、爆炸和世界事件;
  • ui-stream:BossBar、Title、TabList、计分板、地图等界面同步。

suppression-whitelist-categories 必须使用上面的小写键名。启动时会统一大小写、删除重复项并忽略未知类别。

进入和退出消息支持传统颜色代码(例如 &7&a)和十六进制颜色(例如 &#55FFFF)。支持以下占位符:

占位符可用消息含义
{player}进入、退出玩家名称。
{saved_traffic}退出本次 AFK 会话节省的流量。
{saved_bandwidth}退出本次 AFK 会话节省的峰值带宽。

清空消息字符串可以关闭对应提示。管理员可以使用以下命令查看累计统计:

/afknetstats
/afknetstats <player>

命令需要管理员权限。若玩家恢复后短暂不同步,先确认 resync-on-resumetrue。只有确定某类数据必须持续发送时,才把它加入白名单。