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 更新频率,减少没有玩家观察时的计算。
| 键 | 默认值 | 说明 |
|---|---|---|
| enabled | true | 总开关。设为 false 后使用接近上游默认的实体激活节奏。 |
| start-distance | 12 | 开始降低激活频率的距离。 |
| activation-distance-mod | 8 | 距离衰减参数。数值越小,远处实体越早或越明显地降低计算频率。 |
| maximum-activation-prio | 20 | 最大间隔上限。远处实体至少每 20 tick 计算一次。 |
如果刷怪塔、村民交易区或红石装置出现延迟,请调小 activation-distance-mod 或调大 start-distance。每次只改一个值。在目标区域测试。
Async Pathfinding
这一组配置会把部分路径查找放入异步任务,减少路径查找阻塞当前区域 tick 的机会。
| 键 | 默认值 | 说明 |
|---|---|---|
| enabled | true | 异步路径查找总开关。 |
| async-pathfinding-keep-alive | 60 | 单个路径任务的最大活跃时间,单位为 tick。 |
| async-pathfinding-max-threads | 20 | 异步路径线程池大小。DeerFolia 使用虚拟线程。该值不会为每个线程预留一个物理核心。 |
建议从 10–20 个线程开始。线程过少会让任务排队。线程过多会增加调度和 GC 压力。遇到寻路异常或 CPU、GC 使用量明显变化时,先降低线程数。修改后重启服务器。
Kaiiju Entity Throttling
kaiiju-entity-throttling 是总开关。详细规则见实体节流配置。设为 false 后,DeerFolia 不会使用 kaiiju-entity-throttling.yml 中的限制。你可以保留此文件供以后使用。添加 limit 前先进行测试。
Network Optimizations
这一组没有单独的 enabled 总开关:
| 键 | 默认值 | 作用 |
|---|---|---|
| optimized-var-int | true | 优化网络包长度字段的 VarInt 读写。 |
| optimized-frame-encoding | true | 优化网络帧编码,减少准备出站数据的开销。 |
它们只影响网络包处理的内部路径,不应改变玩家可见功能。遇到代理、压缩插件或网络协议问题时,在测试副本中一次关闭一个选项。
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 或方块:
| 键 | 默认值 | 说明 |
|---|---|---|
| enabled | true | POI 优化总开关。 |
| golem-spawn-check-interval | 200 | 每名村民进行铁傀儡生成检查的最小间隔。 |
| secondary-poi-sensor-interval | 80 | 次级 POI 传感器扫描的最小间隔。 |
| village-distance-cache-duration | 100 | 村庄距离计算缓存时间。 |
| golem-spawn-player-distance-limit | 128 | 玩家距离超过该值时,跳过部分铁傀儡生成检查。 |
大型村民区域先使用默认值并观察 CPU。如果铁傀儡农场或职业站点依赖时序,请调低相关间隔,或将 enabled 设为 false 进行比较。
AFK Network Optimization
玩家在设定时间内没有活动时,DeerFolia 会抑制部分非必要的客户端数据包。玩家恢复活动后,DeerFolia 会重新同步必要状态。此功能用于节省带宽,不会停止该玩家的世界逻辑。
| 键 | 默认值 | 说明 |
|---|---|---|
| enabled | true | AFK 网络抑制总开关。 |
| afk-threshold-ticks | 1200 | 连续经过该数量的无活动 tick 后进入 AFK。 |
| count-look-changes-as-activity | true | 只转动视角是否算恢复活动。 |
| resync-on-resume | true | 恢复活动时补发附近区块和实体同步。请保持开启。 |
| stats-enabled | true | 是否累计 /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)和十六进制颜色(例如 7FFFF)。支持以下占位符:
| 占位符 | 可用消息 | 含义 |
|---|---|---|
{player} | 进入、退出 | 玩家名称。 |
{saved_traffic} | 退出 | 本次 AFK 会话节省的流量。 |
{saved_bandwidth} | 退出 | 本次 AFK 会话节省的峰值带宽。 |
清空消息字符串可以关闭对应提示。管理员可以使用以下命令查看累计统计:
/afknetstats
/afknetstats <player>
命令需要管理员权限。若玩家恢复后短暂不同步,先确认 resync-on-resume 为 true。只有确定某类数据必须持续发送时,才把它加入白名单。