OritechDefender 是一个仅服务端安装的 NeoForge 1.21.1 模组,用于优化 Oritech 的 绝对状态同步。
运行时允许 NeoForge 21.1.240 及以上;构建和现场实测基线为 21.1.241。高于
21.1.241 的版本属于允许加载范围,不代表每个未来版本都已逐一实测。
默认模式为 OBSERVE,只统计、不改变发送行为。管理员确认现场数据后才应切换到
ENFORCE。
当前验证状态:
- 固定 Gradle Wrapper 全量构建和自动测试通过;
- Oritech 1.2.9 是当前现场实测基线,并在 Youer(底层 NeoForge
21.1.241)完成 OBSERVE/ENFORCE 服务端冒烟; - 纯 NeoForge 在代码和依赖层面受支持,但尚未完成独立服务端实机启动验证;
- 有真实客户端和高负载环境下的未覆盖项见 测试报告。
- 只管理 Oritech
TICK与SPARSE_TICK广播。 INITIAL、GUI_OPEN、GUI_TICK、CUSTOM全部直通。sendUpdate(type, player)定向发送不拦截。- 不修改 Oritech 的机器 tick、能量、物品、流体、配方、NBT 或世界数据。
- 不主动加载区块,不保存世界
SavedData。
ENFORCE 时,安全广播先按方块实体和同步类型做源端 latest-write-wins,再按真实区块 跟踪玩家生成待发项。每个玩家有独立队列、包数/估算字节令牌桶和 Netty 背压状态。发送 前再次核对维度、位置、方块实体对象身份、generation 和玩家是否仍跟踪该区块。
队列满、线程/实体检查失败或编码异常时走 fail-open,保留 Oritech 原始发送路径。 Oritech 所需调用链或精确 Mixin 注入点不匹配时,优化不会启用。
- 停服并备份世界、
mods与config。 - 从 GitHub Releases 下载
oritechdefender-1.0.0+mc1.21.1.jar,或自行构建,然后放入 服务端mods。 - 确认已安装适用于 Minecraft 1.21.1 的 Oritech。OritechDefender 不按版本号、文件名
或 JAR hash 放行,而是在启动时检查实际的同步调用链;结构不兼容时安全进入
PASS_THROUGH。 - 启服后执行
/oritechdefender status,确认 Oritech 为SUPPORTED,且没有 OritechDefender/Mixin 注入错误。 - 保持
OBSERVE观察一个业务高峰,保存status和top 60输出。 - 有回滚窗口时再执行
/oritechdefender mode enforce。
/oritechdefender status:模式、调用链门禁、hook 命中、真实请求/编码/合并/发送/延迟 次数、调度器 p50/p95/max、失效、fail-open、队列满、每玩家积压与背压。/oritechdefender top [1..60]:最近窗口内最热维度、区块和 Oritech 同步类型。/oritechdefender player <name>:玩家积压、最老项年龄、上一 tick 包数、估算字节数、 Netty writable 与压力状态。/oritechdefender resetstats:清空统计,需要权限等级 2。/oritechdefender reload:重载配置,需要权限等级 2。/oritechdefender mode <off|observe|enforce>:切换并持久化模式,需要权限等级 2。
requested/encoded/coalesced/sent 是运行时真实事件计数。字节预算基于已编码 Oritech
消息体长度加协议开销估算,不应当作网卡层 wire bytes。
以下数据来自相同调度实现的一次真实服务器长期运行统计,不是 1.2.9 专项压测:
| 类型 | requested | encoded | 编码削减 |
|---|---|---|---|
| TICK | 4,768,552 | 1,076,220 | 约 77.43% |
| SPARSE_TICK | 123,237 | 120,114 | 约 2.53% |
| 合计 | 4,891,789 | 1,196,334 | 约 75.54% |
编码削减按 1 - encoded / requested 计算。这组数据反映该次实际负载,不代表所有机器
数量、玩家数量和配置下都能达到相同比例,也不等同于网卡层流量削减比例。
默认配置见 config/oritechdefender-server.toml。首启会把
同一份配置复制到服务端 config。默认 Oritech 最小间隔为 TICK 10 tick、
SPARSE_TICK 100 tick;默认每玩家 40 payload/tick,全局 120
recipient-payload/tick。
最快回滚是:
/oritechdefender mode off
OFF 完全使用 Oritech 原始发送行为。需要移除时停服并移走 JAR 即可;本模组没有世界
数据迁移。
需要 Java 21。构建使用 Oritech 1.2.9 作为编译 API 基线,但产物的运行时兼容性由调用 链检测决定。依赖会从其官方公开 Maven 仓库获取,不需要本机 Minecraft 服务端目录:
.\build.cmd或:
.\gradlew.bat clean build产物和对应 SHA-256 文件位于 build/libs/。Linux/macOS 使用
./gradlew clean build。
兼容性和副作用审计见 docs/MIXIN-COMPATIBILITY.md,实测结果与未覆盖项见 docs/TEST-REPORT.md。
提交代码前请阅读 CONTRIBUTING.md;维护者发布版本时使用 发布清单。安全问题请按 SECURITY.md 中的方式报告。
