- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在使用实体注册表的新语法时遇到了问题,特别是在呈现实体时。之前,您只需将 RenderingRegistry.registerEntityRenderingHandler
行添加到 ClientProxy
即可。但现在,它要求我在 preInit
中使用 RenderingRegistry.registerEntityRenderingHandler
以及名为 IRenderFactory
的参数。我不太确定 IRenderFactory
是如何工作的,或者如何创建一个(如果需要的话)。
有人告诉我,您可以使用方法引用来将 Render 类的构造函数 (RenderMyEntity::new
) 作为 IRenderFactory
传递,但我真的不知道不知道该怎么办。我做了各种各样的研究,但没有一个有意义。
这是我的 MobExample
类(RenderingRegistry.registerEntityRenderingHandler(RenderGelZombie.class, renderFactory)
行仅适用于 的
类,这就是它存在而不是在 preInit
MobExampleClientProxy
中的原因):
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
接口(interface)为您的实体创建 Render 类的实例。上面 zapl 链接的文档更多地解释了接口(interface)是什么概念。
在本例中,您有一个名为 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 类(class)的类(class)开发人员,看起来您的一些代码可能来自那里!
关于java - Minecraft Forge 中的 IRenderFactory 帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37126170/
我在使用实体注册表的新语法时遇到了问题,特别是在呈现实体时。之前,您只需将 RenderingRegistry.registerEntityRenderingHandler 行添加到 ClientPr
我是一名优秀的程序员,十分优秀!