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

Minecraft Forge 1.7.10自定义TNT实体服务端生成后客户端不渲染问题咨询

问题原因

你遇到的实体不同步问题是1.7.10 Forge版本实体注册的常见踩坑点,核心诱因是重复注册实体导致的全局ID映射冲突:

  • EntityRegistry.registerModEntity()方法本身已经会自动为mod实体分配合法的全局唯一ID,不需要你提前手动调用EntityRegistry.registerGlobalEntityID()
  • 手动调用registerGlobalEntityID()后再调用registerModEntity()相当于为同一个实体类注册了两次ID,导致FML的实体映射表混乱,服务端发送的实体同步数据包携带的ID客户端无法识别,自然不会生成对应的客户端实体。

你删掉if(world.isRemote) return;后能临时显示,是因为此时客户端本地直接生成了实体,不需要依赖服务端同步,和你的测试结果完全吻合。而原版EntityTNTPrimed可以正常工作,是因为原版实体已经在游戏启动时完成了合法注册,不会被重复注册逻辑影响。


修复方案

1. 修改实体注册逻辑

直接移除registerTnt方法中手动调用EntityRegistry.registerGlobalEntityID()的代码即可,修改后的注册逻辑如下:

private static void registerTnt(final Class primed, String name, final int id) {
    proxy.registerTntRenderer(primed, registerBlock(new BlockTNT(primed), name.toLowerCase()+"_tnt"));
    // 移除手动注册全局ID的代码
    EntityRegistry.registerModEntity(primed, "PrimedTnt"+name, id, instance, 160, 10, true);
}

2. 确认实体无参构造权限

额外确认所有自定义TNT实体子类的无参构造为public修饰,FML在客户端反射生成实体实例时如果无权限访问构造函数会静默失败,不会抛出明确错误日志。

修改完成后重新测试,服务端生成的实体会自动同步到客户端,渲染和/summon指令生成的实体显示问题都会同步解决。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:45:03