MixinS21PacketChunkDataThermosTainted
基本信息
| 属性 | 值 |
|---|---|
| Mixin 目标 | net.minecraft.network.play.server.S21PacketChunkData |
| Phase | EARLY(仅当 Thermos 服务端存在:addRequiredMod(TargetMods.THERMOS)) |
| 角色 | Thermos 服务端专用变体:与 MixinS21PacketChunkData 类似但走 NibbleArray.copyToByteArray 路径 |
| 配套检测 | TargetMods.THERMOS = "org.bukkit.World" |
与标准 MixinS21PacketChunkData 的差异
| 维度 | 标准 vanilla | Thermos Tainted |
|---|---|---|
字节尺寸 @ModifyConstant(<clinit> / func_149275_c / readPacketData) |
✅ | ✅ |
getBlockLSBArray() 重定向 |
✅ | ✅ |
LSB System.arraycopy 取消 |
✅ ordinal = 0 | ✅ ordinal = 0 |
getMetadataArray() 重定向 |
✅ | ✅ |
metadata System.arraycopy 取消 |
✅ ordinal = 1 | ❌(Thermos 用 NibbleArray.copyToByteArray 而非 System.arraycopy) |
metadata NibbleArray.copyToByteArray 取消 |
❌ | ✅ ordinal = 0,remap=false |
getBlockMSBArray() 重定向 |
✅ ordinal = 0 | ✅ ordinal = 0 |
客户端 @Inject transformBulk 管线 |
✅ | ❌ |
选择规则
Mixins.java:
VANILLA_STARTUP_ONLY_WITHOUT_THERMOS(new MixinBuilder()
.addCommonMixins("minecraft.MixinS21PacketChunkData")
.addExcludedMod(TargetMods.THERMOS)),
VANILLA_STARTUP_ONLY_WITH_THERMOS(new MixinBuilder()
.addCommonMixins("minecraft.MixinS21PacketChunkDataThermosTainted")
.addRequiredMod(TargetMods.THERMOS)),
GTNHLib 的 mixin 框架二选一加载:检测到 Thermos 类加载 → 加载 Tainted 版本;否则加载标准版本。
相关条目
- MixinS21PacketChunkData - 标准版本
- MixinS26PacketMapChunkBulk - 批量区块包