我知道这可能不是问这个问题的最佳地点,但是在伪造论坛上的家伙确实并没有提供太大帮助,我想我会在这里碰碰运气。我在使用实体注册表的新语法(特别是渲染实体)时遇到了麻烦。之前,您只需将RenderingRegistry.registerEntityRenderingHandler行添加到ClientProxy中,就是这样。但是现在,它要求我在preInit中使用RenderingRegistry.registerEntityRenderingHandler以及一个名为IRenderFactory的参数。我是新手,所以我不太确定IRenderFactory的工作方式或创建方式(如果需要),因此我真的很感谢您的帮助。有人告诉我,您可以使用方法引用将Render类的构造函数(RenderMyEntity :: new)作为IRenderFactory传递,但是我真的不知道该怎么做。就像我说的那样,我是一个非常新的程序员,这对我来说很陌生,但是我真的很想了解。我已经做了各种各样的研究,但是没有一个有意义。太谢谢你了我真的很感激!
这是我的MobExample类(RenderingRegistry.registerEntityRenderingHandler(RenderGelZombie.class,renderFactory)行仅在MobExample类的preInit中起作用,这就是为什么它在其中而不在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);
}
}
最佳答案
Forge中的IRenderingFactory
接口为您的实体创建Render类的实例。上面zapl链接的文档详细解释了接口是一个概念。
在这种情况下,您有一个名为RenderGelZombie
的类,该类实际上处理游戏中的僵尸。 Forge在注册渲染器时曾经直接使用此类,但是现在它使用IRenderingFactory
来创建渲染类的实例。您将需要一个这样的工厂类:
public class RenderGelZombieFactory implements IRenderFactory<EntityLiving> {
public static final RenderGelZombieFactory INSTANCE = new RenderGelZombieFactory();
@Override
public Render<? super EntityLiving> createRenderFor(RenderManager manager) {
// TODO Auto-generated method stub
return new RenderGelZombie(manager, new ModelBiped(1.0f), 1.0f);
}
}
现在,您已经拥有实现IRenderFactory的类,可以将其传递给新的实体呈现注册表方法:
RenderingRegistry.registerEntityRenderingHandler(EntityGelZombie.class, RenderGelZombieFactory.INSTANCE);
资料来源:我是iD Tech Camps Minecraft Modding课程的课程开发人员,看来您的某些代码可能来自那里!