irenderfactory在minecraft forge中的帮助

fsi0uk1n  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(538)

我在实体注册表的新语法方面遇到了问题,特别是在呈现实体时。之前,您只需添加 RenderingRegistry.registerEntityRenderingHandler 连接到您的 ClientProxy ,就是这样。但现在,它要求我使用 RenderingRegistry.registerEntityRenderingHandlerpreInit 以及一个名为 IRenderFactory . 我真的不知道怎么做 IRenderFactory 工作,或如何我可以创建一个(如果我需要)。
我被告知可以使用方法引用来传递呈现类的构造函数( RenderMyEntity::new )作为一个 IRenderFactory 但是我真的不知道该怎么办。我做过各种各样的研究,但都没有意义。
这是我的 MobExample 类(行) RenderingRegistry.registerEntityRenderingHandler(RenderGelZombie.class, renderFactory) 只适用于 preInitMobExample 同学们,这就是为什么它在那里而不在教室里 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);
}
}
6kkfgxo0

6kkfgxo01#

这个 IRenderingFactory forge中的接口为实体创建呈现类的示例。上面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技术营minecraft modding课程的课程开发人员,看起来你的一些代码可能来自那里!

相关问题