Skip to content

vicuna-main/OritechDefender

Repository files navigation

OritechDefender

OritechDefender logo

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 TICKSPARSE_TICK 广播。
  • INITIALGUI_OPENGUI_TICKCUSTOM 全部直通。
  • sendUpdate(type, player) 定向发送不拦截。
  • 不修改 Oritech 的机器 tick、能量、物品、流体、配方、NBT 或世界数据。
  • 不主动加载区块,不保存世界 SavedData

ENFORCE 时,安全广播先按方块实体和同步类型做源端 latest-write-wins,再按真实区块 跟踪玩家生成待发项。每个玩家有独立队列、包数/估算字节令牌桶和 Netty 背压状态。发送 前再次核对维度、位置、方块实体对象身份、generation 和玩家是否仍跟踪该区块。

队列满、线程/实体检查失败或编码异常时走 fail-open,保留 Oritech 原始发送路径。 Oritech 所需调用链或精确 Mixin 注入点不匹配时,优化不会启用。

安装

  1. 停服并备份世界、modsconfig
  2. 从 GitHub Releases 下载 oritechdefender-1.0.0+mc1.21.1.jar,或自行构建,然后放入 服务端 mods
  3. 确认已安装适用于 Minecraft 1.21.1 的 Oritech。OritechDefender 不按版本号、文件名 或 JAR hash 放行,而是在启动时检查实际的同步调用链;结构不兼容时安全进入 PASS_THROUGH
  4. 启服后执行 /oritechdefender status,确认 Oritech 为 SUPPORTED,且没有 OritechDefender/Mixin 注入错误。
  5. 保持 OBSERVE 观察一个业务高峰,保存 statustop 60 输出。
  6. 有回滚窗口时再执行 /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 中的方式报告。

About

OritechDefender 是一个仅服务端安装的 NeoForge 1.21.1 模组,只优化 Oritech 的 绝对状态同步。

Resources

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages