Skip to content

fix(mod): 修复 NeoForge 在线统计查询及异步命令输出丢失 - #16

Closed
BaizhouziYou wants to merge 1 commit into
easybot-team:developfrom
BaizhouziYou:codex/fix-statistics-async-output
Closed

BaizhouziYou wants to merge 1 commit into
easybot-team:developfrom
BaizhouziYou:codex/fix-statistics-async-output

Conversation

@BaizhouziYou

@BaizhouziYou BaizhouziYou commented Oct 2, 2026 •

Copy link
Copy Markdown

变更内容

  • 修正 NeoForge Mixin 配置声明,将 [[mixin]] 改为 [[mixins]]
  • 远程命令执行完成后,继续收集 command.waitTime 秒内的同步和异步输出
  • 在服务器主线程创建命令上下文,使用延迟执行器完成结果收集
  • 对命令输出列表加锁,并返回独立快照,避免异步写入与结果读取冲突
  • 补充回归检查脚本及 README 中的等待时间说明

问题原因

NeoForge 未识别原有的 Mixin 配置声明,导致 ServerStatsCounterAccessor 未注入,在线玩家统计查询时抛出 ClassCastException
异步命令原先在首条异步消息到达时就返回结果;如果先产生同步提示,也会立即结束收集,遗漏后续输出

影响

  • 修复 NeoForge 在线玩家统计查询失败的问题
  • 远程命令统一等待配置的收集时间后返回,默认 3 秒;只有同步输出的命令也会等待
  • waitTime 为 0 或负数时不额外等待;超出收集时间的输出不会包含在结果中

验证

  • tests/check-regressions.ps1:异步及混合输出、排队等待、无输出、零/负等待、异常传播和并发快照
  • :1.21-fabric:remapJar
  • :1.21-neoforge:shadowJar
  • :26.3-neoforge:compileJava
  • NeoForge / Fabric 1.21.1 服务端成功加载 EasyBot,测试客户端正常登录
  • 在线统计接口与 JSON 导出正常,%ez-statistic_jump% 返回预设值 7
  • 三条异步输出、同步前缀加三条异步输出均完整返回
  • 无输出命令约 3 秒后正常返回空结果
  • 两种服务端正常停止,进程退出码为 0
  • git diff --check

测试说明

测试环境为 Windows、Java 21.0.10、Minecraft 1.21.1,分别使用 NeoForge 21.1.252 和 Fabric Loader 0.19.5 / Fabric API 0.116.17+1.21.1
构建使用 Java 25.0.3、Gradle 9.7.0

关联 issue

- 修正 NeoForge Mixin 配置声明,恢复在线玩家统计接口注入
- 按配置的等待时间收集命令输出,保留同步提示和后续异步结果
- 将命令上下文创建移至主线程,并对输出列表加锁、返回独立快照
- 补充回归检查脚本及等待时间说明
@BaizhouziYou
BaizhouziYou force-pushed the codex/fix-statistics-async-output branch from b188931 to 0e908a7 Compare October 2, 2026 04:02
@BaizhouziYou BaizhouziYou changed the title fix: 修复 NeoForge 在线统计查询及异步命令输出丢失 fix(mod): 修复 NeoForge 在线统计查询及异步命令输出丢失 Oct 2, 2026
@BaizhouziYou
BaizhouziYou deleted the codex/fix-statistics-async-output branch October 2, 2026 04:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant