我的世界Minecraft

关于Minecraft mod开发过程中客户端实体不渲染的问题

2023-03-13  本文已影响0人  练习时长两年半的写作练习生

最近在进行Minecraft mod开发过程中,遇到了客户端实体不渲染的问题,详细内容如下。
开发mod版本:Minecraft 1.16.5 Forge

遇到的问题

我要写的实体是一个投掷物,继承原版ProjectileItemEntity类,这是一个需要实现IRendersAsItem接口的抽象类,所以这个投掷物应该以物品形式渲染。
我遇到的问题是:该物品在服务端能正常运作(被该投掷物击中的生物会受到伤害),但是客户端并不显示该实体,甚至按 F3+B 也不显示碰撞箱。在已确认实现了渲染器 Renderer 以及试图修改ResourceLocation后,仍未解决问题。(这说明与ResourceLocation毫无关系)

解决办法

实体在服务端正常运作而在客户端不显示,这是由于服务端和客户端的通信问题。解决方法是在实现的类中加入以下代码(该内容在 Boson 1.16 Mod 教程中有提到,不过被我忽略了):

@Override
public IPacket<?> createSpawnPacket() {
    return NetworkHooks.getEntitySpawningPacket(this);
}

还有一点需要注意的是,不同版本的函数名称可能有一定差别,需要参考实际使用的 Minecraft 反编译源码中的函数名,直接复制粘贴其他模组的代码会出问题。

参考资料

上一篇 下一篇

猜你喜欢

热点阅读