You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Forge 1.16.5向服务器发送Minecraft原版数据包触发崩溃如何修复?

Minecraft原版数据包发送崩溃修复方案

核心崩溃原因

你创建的SimpleChannel是FML框架提供给Mod传输自定义数据包的专属网络通道,仅会处理你预先注册过的自定义数据包类型。直接将原版CPlayerPacket.RotationPacket通过该自定义通道发送时,服务端无法在该通道的消息注册表中找到对应的处理逻辑,因此抛出Invalid message报错导致崩溃。

修复方法

发送原版数据包不需要使用自定义的INSTANCE通道,直接调用玩家持有的原版网络连接实例发送即可:
把代码中崩溃的行:

INSTANCE.sendToServer(new CPlayerPacket.RotationPacket(1f, 1f, MC.player.isOnGround()));

替换为:

// 1.16及相近版本写法,高版本可根据实际映射调整为send()方法
MC.player.connection.sendPacket(new CPlayerPacket.RotationPacket(1f, 1f, MC.player.isOnGround()));

修改后即可合法发送原版旋转数据包,不会触发通道校验报错。

额外注意事项

  • 你当前代码中直接在客户端执行MC.player.world.setBlockState()的逻辑是无效的,Minecraft采用服务端权威机制,客户端修改的方块状态会在几秒后被服务端同步覆盖,需要将改方块逻辑迁移到服务端执行:可以自己注册一个自定义数据包,客户端触发事件后向服务端发自定义包,服务端校验权限后再执行方块修改操作。
  • 如果你后续需要通过自定义SimpleChannel传输Mod专属数据,需要提前为自定义数据包注册对应的编码器、解码器、服务端/客户端处理器,不能直接发送原版数据包到自定义通道。
  • 示例中硬编码的1f旋转参数如果不是业务需要,建议替换为MC.player.getYaw()、MC.player.getPitch()获取玩家当前实际的旋转角度,避免出现视角异常。

内容的提问来源于stack exchange,提问作者MrRedRhino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 05:06:03