Links
Tags
Creators
Details
1.21.11-b7
Compatibility
Required content
Changes
VeryMcProto 1.21.11-b7(Servux v3 世代协议对齐——修复客户端收包断连崩溃)
以纯 Paper 插件形式移植 Fabric 端 Mod Protocol——协议投递型(Servux / JEI / Syncmatica)+ 行为注入型可移植子集(Carpet),面向 Minecraft 1.21.11 / Paper 1.21.11(Java 21,维护线 ver/1.21.11-dev → ver/1.21.11)。
本版内容(自 v1.21.11-b6 以来)
- 修复:v3 世代 masa 客户端收 servux 包断连崩溃(f33c60e,27 文件)。部署客户端已换代至 LTS v3 世代(minihud 0.38.16 / malilib 0.27.20 / litematica 0.26.16),而本线 servux 移植停留在 v2 世代——v3 客户端把非 metadata NBT 体的头 4 字节读作 int32 帧长,裸 NBT 直发触发解码越界断连(开启 HUD/实体数据同步后进服或传送瞬间几乎必崩,五次崩溃会话同源 102 字节尾随实证;与 Carpet 模块/服务器人数无关,系 b6 部署与客户端换代的时间耦合)。修复逐字对齐上游 servux 0.9.9:
- 新增
ServuxNbtFrames帧编解码器:[int32 BE][GZIP(命名根 NBT 流)],与上游DataByteBufUtils字节等价(空数据 END-only 流同构;读侧越界拒包 + 非压缩回退); - 五通道 wire 升位:HUD 3 / Entities 2 / Tweaks 2 / Structures 3 / Litematics 2——非 metadata NBT 体全部帧化(含配方/结构/投影上传的 splitter 内层载荷);实体请求删 transactionId 前缀;
UNREGISTER_REPLY各通道齐备(HUD=9 / Litematics=8 / Entities=7 / Tweaks=7);structures v2 遗留死枚举 10/11/12 删除; - 注册时序对齐:五通道 join 不再自动入册(注册唯一入口 = 客户端
METADATA_REQUEST/STRUCTURES_REGISTER,对齐上游 PlayerListener 停用);请求到达记声明版本观测行; - MOD_STRING 前缀改
servux-fabric-1.21.11-b7:v3 客户端对握手字段做startsWith("servux-fabric[-mcVersion]")硬门禁,旧servux-paper-前缀被静默拒收全部数据; - 旧世代客户端(≤ minihud 0.38.13)行为边界:不崩溃、通道数据静默不可用(服务端日志留痕
v2 generation, unsupported,可诊断)。
- 新增
- 发版(cb75e80):
buildNumber6 → 7。
验证
- JDK 21 工具链
./gradlew build全绿(含verifyVersionInjection三断言);./gradlew test132/132 全绿(23 测试类,含新增ServuxNbtFramesTest7 用例:malilib 读侧契约 golden 断言 / roundtrip / 越界拒包 / 非压缩回退) - 实机验收通过:v3 世代客户端进服 + 传送全流程无断连、无版本失配告警、HUD/实体数据同步正常(服务器管理员实测确认)
- 跨线核查:dev 与 26.1.2 线已是 v3 世代 wire(各自
DataTagIo实现),本缺陷仅存在于 1.21.11 线,无回移面
产物
VeryMcProto-1.21.11-b7-reobf.jar—— 推荐:obf 映射产物,标准 Paper 1.21.11 服务器放入plugins/直接加载。VeryMcProto-1.21.11-b7.jar—— Mojang 映射产物(开发参考)。
可选依赖 PacketEvents 2.13.0(仅 EasyPlace 需要,未装自动跳过)。
上一版本:v1.21.11-b6。
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:tyOxCfUJ:UOYDteZk"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:tyOxCfUJ:UOYDteZk"
}

