XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEServerManager

【Java】我的世界XFE服务器管理器

公开
关注 0 Fork 0 Star 0
UTF-8

崩服防护与自动化

XFEServerManager 在“设置 → 崩服防护”提供可热更新的主线程熔断器,并把检测结果接入普通触发器。它用于在掉落物、生物、模组实体、区块加载器或命令方块失控时保住服务器的响应能力;它不能代替原版 watchdog、内存/磁盘监控、定期备份或对第三方模组本身的修复。

默认保护

新安装默认启用下列限制;旧配置文件缺少整段或只写了部分字段时,其余字段会自动继承当前安全默认值。

项目 默认值 超限行为
已加载掉落物(每维度 / 每区块) 2,000 / 256 清理超额掉落物,并阻止继续生成
已加载生物(每维度 / 每区块) 2,000 / 128 只阻止继续生成,不删除已有生物
已加载实体总数(每维度 / 每区块) 5,000 / 512 阻止继续生成
同一第三方注册命名空间实体数(每维度) 512 阻止该维度继续生成该模组的实体;minecraft 使用掉落物/生物/总实体限制
新实体生成突发量 5 秒内 400 个 立即阻止本窗口内后续实体生成
命令方块执行速率 每秒 100 条 熔断本秒内后续命令方块命令
已加载区块数(每维度) 8,000 发出事件和告警,不强制卸载
慢刻 连续 3 刻均至少 200 ms 发出事件和告警
JVM 堆占用 90% 发出事件和告警,不强制 GC

周期统计默认每 100 游戏刻(正常约 5 秒)扫描一次,只遍历已经加载的实体和区块,不加载新区块、不访问磁盘,也不在服务器线程发起网络请求。生成突发量和命令方块速率使用轻量计数器即时判断。

玩家实体永远不会被实体上限拦截。磁盘加载中的已有实体也不会在加入事件中被拒绝,避免世界加载时破坏存档;但后续周期扫描仍可清理超过上限的掉落物。自动清理只作用于 ItemEntity,不会删除生物、宠物、村民、Boss 或玩家。

这些规则覆盖常见的命令方块循环 /summon、高频投掷器/刷怪器、集中掉落物碰撞、Create 等模组产生的失控实体/机械实体,以及区块强加载、严重慢刻和内存压力。命名空间事件仍会报告 minecraft,方便单独观察原版实体,但第三方模组硬上限不会抢先覆盖原版的分类限制。静态方块实体网络、第三方模组死循环、原生崩溃、Mixin 冲突和单个异常数据包仍可能越过通用实体计数;应配合 Spark、watchdog、模组更新和离线备份处理。

触发器事件

事件 ID 用途 可配置项
protection.item_overflow 掉落物超过阈值 threshold, scope=dimension|chunk, cooldownSeconds
protection.mob_overflow 生物超过阈值 同上
protection.entity_overflow 全部实体超过阈值 同上
protection.mod_entity_overflow 指定模组/命名空间实体超过阈值 threshold, namespace, cooldownSeconds
protection.spawn_burst 短时间实体生成洪泛 threshold, cooldownSeconds
protection.command_block_rate 命令方块执行洪泛 threshold, cooldownSeconds
protection.slow_tick 连续慢刻 threshold(毫秒), consecutive, cooldownSeconds
protection.loaded_chunk_overflow 已加载区块过多 threshold, cooldownSeconds
protection.memory_pressure JVM 堆占用过高 threshold(百分比), cooldownSeconds

阈值使用严格的“超过”语义:数量等于阈值时不会触发。编辑器默认 60 秒冷却,冷却键按触发器、维度、范围和模组命名空间隔离,避免一次洪泛刷满触发器队列。

事件上下文可直接用于条件、富文本和任意支持变量的操作:

  • {protection.kind}{protection.scope}{protection.count}{protection.threshold}{protection.excess}
  • {protection.removed}{protection.action}{protection.reason}
  • {protection.namespace}{protection.windowTicks}{protection.windowSeconds}{protection.consecutive}
  • {protection.heapUsedBytes}{protection.heapMaxBytes}{protection.commandSource}
  • 适用时还包含 {world.dimension}{chunk.x}{chunk.z} 和被拒绝实体的类型、UUID、坐标。

例如可为 protection.mod_entity_overflow 设置 namespace=createthreshold=200,然后广播位置、写入日志、执行管理员自定义处置触发器或发送 Web 通知。保护事件本身不具备玩家上下文,不能直接使用传送、踢出、私聊等玩家专用操作。

调整建议

  • 先观察正常高峰期的实体、区块和 MSPT,再逐步降低阈值;大型整合包不要直接套用小型原版服的数值。
  • 每区块限制应不大于对应每维度限制,掉落物/生物限制也不能超过实体总限制;服务端和 Web 页面都会拒绝不一致配置。
  • removeExcessItems 是唯一会主动移除已有对象的选项。若希望只告警,关闭它,并关闭 blockExcessSpawns 或提高硬限制。
  • 对 Create 等模组可用命名空间事件设置更低的告警阈值,而保留较宽松的全局硬上限。
  • 对确需高频运行的合法命令方块,应提高每秒上限或关闭命令方块熔断,并用命令策略限制危险的 summon/execute 路径。