介绍
简介
这是一款专为服务器环境设计的兼容性模组(不会在客户端激活)。服务器启动时,它会识别可能将客户端代码带入服务器并导致崩溃的 Mixin,并对其进行拦截或精细过滤,同时尽可能保留原模组的服务端功能。
不过,这款模组并非万能修复工具,也不能取代原模组作者从根本上正确隔离运行环境的必要工作。
问题分类
| 类别 | 通俗说明 | 处理方式 |
|---|---|---|
DIRECT_CLIENT_TARGET |
Mixin 直接修改了仅限客户端的类,并且该注入已导致致命错误,足以中止启动。 | 在 Mixin 官方错误处理阶段将致命错误降级,让服务器能够继续加载。 |
CLIENT_REFERENCE |
Mixin 的目标类可以在服务器上加载,但其字段、方法签名或方法体仍引用了客户端平台类。 | 尝试仅移除有问题的字段或方法并清理其依赖;只有在无法局部处理时,才会禁用整个 Mixin。 |
例如,某个 Mixin 的目标是服务器上存在的普通实体类,但其中一个方法调用了 Minecraft(客户端实例)或渲染类。直接禁用整个 Mixin 并无必要——这款模组会优先只过滤代码中危险的部分。
不会盲目屏蔽所有客户端相关代码
为尽量减少误报,这款模组会尊重模组现有的环境保护机制:
- Mixin 配置中的
client列表; - Mixin 配置中声明的
IMixinConfigPlugin; @Pseudo注解;- Forge、NeoForge、Fabric 或 Architectury 提供的通用环境注解和运行时环境检查;
- Mixin 本身通常可以跳过的客户端目标。
特别是,只有当 Mixin 在错误处理器中实际进入 ERROR 状态时,才会记录 DIRECT_CLIENT_TARGET。目标类名仅仅位于 .client. 包中、目标类在服务器上不存在,或 Mixin 正常跳过该目标,都不会自动将该模组加入报告。
查看报告
每次以独立服务器方式启动时,都会重新生成 ClientMixinMod.txt 文件。输出示例:
# Client Mixin Intercept Report / 客户端 Mixin 拦截报告
# Direct client targets / 直接注入客户端类
[DIRECT_CLIENT_TARGET]
example_mod
# Unguarded platform-client references / 未受环境保护的平台客户端引用
[CLIENT_REFERENCE]
another_mod
文件会记录模组的 modid,并去重、排序:
- 列在
DIRECT_CLIENT_TARGET下——该模组触发了针对客户端目标的注入,且注入已达到致命错误级别;本模组已拦截该注入; - 列在
CLIENT_REFERENCE下——该模组的 Mixin 含有未受保护的平台客户端引用,这些引用已在字节码层面过滤; - 同一个模组可能同时出现在两个类别中;
- 被列入报告并不意味着整个模组编写错误,也不代表其所有功能都会失效——这仅表示在当前服务器环境中,至少有一段 Mixin 代码需要处理。
注意:这款模组仍有可能产生误报,但它已在开发测试中通过验证(在包含 200 多个模组的多个整合包服务器环境中),准确率达到100%。
常见问题
Client Mixin Intercept 支持哪些 Minecraft 版本?
Client Mixin Intercept 支持 Minecraft Java 版 1.19–1.20.6,共 12 个版本,可用的加载器:Forge。下载时注意选择和你游戏版本一致的文件。
Client Mixin Intercept 怎么安装?
先用 PCL2 或 HMCL 启动器安装对应版本的 Forge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。
TheFlareStar 的其他作品
查看全部 →Optimization of Campfire Smoke
优化原版营火的烟雾粒子效果
Citadel Fix
这个模组修复了 Citadel 启动时拉取赞助商名单导致的卡顿,并优化了启动速度。
Toms Storage Star Optimized
Tom的存储的轻量优化模组。
Shipwreck Fix
这个模组修复了1.19.2/1.20.1中沉船群组(MC-249136)的漏洞,避免其长时间卡顿。

评论
登录后评论和评分