我在实体注册表的新语法方面遇到了问题,特别是在呈现实体时。之前,您只需添加 RenderingRegistry.registerEntityRenderingHandler
连接到您的 ClientProxy
,就是这样。但现在,它要求我使用 RenderingRegistry.registerEntityRenderingHandler
在 preInit
以及一个名为 IRenderFactory
. 我真的不知道怎么做 IRenderFactory
工作,或如何我可以创建一个(如果我需要)。
我被告知可以使用方法引用来传递呈现类的构造函数( RenderMyEntity::new
)作为一个 IRenderFactory
但是我真的不知道该怎么办。我做过各种各样的研究,但都没有意义。
这是我的 MobExample
类(行) RenderingRegistry.registerEntityRenderingHandler(RenderGelZombie.class, renderFactory)
只适用于 preInit
的 MobExample
同学们,这就是为什么它在那里而不在教室里 ClientProxy
):
package com.aideux.mobexample;
import com.aideux.basemod.BaseMod;
import net.minecraft.client.model.ModelZombie;
import net.minecraftforge.fml.client.registry.RenderingRegistry;
import net.minecraftforge.fml.common.registry.EntityRegistry;
public class MobExample
{
public static int currentEntityId = 0;
public static void preInit()
{
createEntityWithEgg(EntityGelZombie.class, "CustomMob", 0x00FF00, 0xFF0000);
RenderingRegistry.registerEntityRenderingHandler(RenderGelZombie.class, renderFactory);
}
public static void init()
{
BaseMod.proxy.registerEntityRenderers();
}
public static void createEntityWithEgg(Class entityClass, String entityName, int solidColor, int spotColor)
{
int entityId = currentEntityId++;
EntityRegistry.registerModEntity(entityClass, entityName, entityId, BaseMod.instance, 250, 1, true, solidColor, spotColor);
}
}
1条答案
按热度按时间6kkfgxo01#
这个
IRenderingFactory
forge中的接口为实体创建呈现类的示例。上面zapl链接的文档更多地解释了接口作为一个概念是什么。在这个例子中,你有一个类叫做
RenderGelZombie
处理在游戏中渲染你的僵尸。forge过去在注册呈现器时直接使用这个类,但现在它使用IRenderingFactory
创建渲染类的示例。您需要这样的工厂类:现在您已经有了一个实现irenderfactory的类,可以将其传递给新的实体呈现注册表方法:
来源:我是id技术营minecraft modding课程的课程开发人员,看起来你的一些代码可能来自那里!