当前位置: 首页 > 知识库问答 >
问题:

正在向Minecraft Forge 1.16注册实体呈现处理程序。5.

施翰学
2023-03-14

我将遵循本教程为我的Minecraft mod创建一个自定义实体。不幸的是,本教程是为稍旧版本的《我的世界》(1.14)编写的,有些部分不适用于最新版本。当我注册实体的渲染处理程序时,我得到了这个错误:

RenderRegistry.java:12: error: method registerEntityRenderingHandler in class RenderingRegistry cannot be applied to given types;
        RenderingRegistry.registerEntityRenderingHandler(GlowCowEntity.class, new GlowCowRender.RenderFactory());
                         ^
  required: EntityType<T>,IRenderFactory<? super T>
  found: Class<GlowCowEntity>,RenderFactory
  reason: cannot infer type-variable(s) T
    (argument mismatch; Class<GlowCowEntity> cannot be converted to EntityType<T>)
  where T is a type-variable:
    T extends Entity declared in method <T>registerEntityRenderingHandler(EntityType<T>,IRenderFactory<? super T>)

我试图查看Minecraft Forge文档,但它没有提到任何关于暴徒的信息,我也找不到任何最新信息。我曾在Android应用程序中使用过Java,但我对它不是很有经验。

渲染注册表。爪哇:

import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.fml.client.registry.RenderingRegistry;

@OnlyIn(Dist.CLIENT)
public class RenderRegistry {
    public static void registerEntityRenderers() {
        RenderingRegistry.registerEntityRenderingHandler(GlowCowEntity.class, new GlowCowRender.RenderFactory());
    }
}

发光体。爪哇:

import net.minecraft.entity.EntityType;
import net.minecraft.entity.ai.goal.AvoidEntityGoal;
import net.minecraft.entity.ai.goal.RandomWalkingGoal;
import net.minecraft.entity.ai.goal.SwimGoal;
import net.minecraft.entity.monster.CreeperEntity;
import net.minecraft.entity.passive.CowEntity;
import net.minecraft.world.World;

public class GlowCowEntity extends CowEntity {
    public GlowCowEntity(EntityType<? extends CowEntity> p_i48567_1_, World p_i48567_2_) {
        super((EntityType<? extends CowEntity>) MyEntities.GLOW_COW_ENTITY, p_i48567_2_);
    }

    @Override
    protected void registerGoals() {
        this.goalSelector.addGoal(0, new SwimGoal(this));
        this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, CreeperEntity.class, 8.0F, 0.5F, 0.5F));
        this.goalSelector.addGoal(2, new RandomWalkingGoal(this, 5));
    }

}

辉光渲染。爪哇:

import net.minecraft.client.renderer.entity.EntityRenderer;
import net.minecraft.client.renderer.entity.EntityRendererManager;
import net.minecraft.client.renderer.entity.LivingRenderer;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.fml.client.registry.IRenderFactory;

@OnlyIn(Dist.CLIENT)
public class GlowCowRender extends LivingRenderer<GlowCowEntity, GlowCowModel> {
    public GlowCowRender(EntityRendererManager manager) {
        super(manager, new GlowCowModel(), 0.5F);
    }

    @Override
    public ResourceLocation getTextureLocation(GlowCowEntity p_110775_1_) {
        return new ResourceLocation("textures/entity/glow_cow.png");
    }

    public static class RenderFactory implements IRenderFactory<GlowCowEntity> {

        @Override
        public EntityRenderer<? super GlowCowEntity> createRenderFor(EntityRendererManager manager) {
            return new GlowCowRender(manager);
        }
    }
}

共有1个答案

甄越
2023-03-14

我最终设法通过查看与1.16一起工作的其他mod来使其工作,我替换了

RenderingRegistry.registerEntityRenderingHandler(GlowCowEntity.class, new GlowCowRender.RenderFactory());

具有

RenderingRegistry.registerEntityRenderingHandler((EntityType<GlowCowEntity>) MyEntities.GLOW_COW_ENTITY, GlowCowRender::new);

编译器仍然为转换为EntityType生成警告

 类似资料:
  • 问题内容: 我正在开发命令行节点模块,希望能够通过网站上的链接启动它。 我想注册一个自定义协议,以使链接具有以下格式:单击它们将启动节点包。 如果没有为此的节点API(我确定不会),那么有什么办法可以通过调用系统命令从node做到这一点? 它必须在Windows,Linux和MacOS上运行。 问题答案: 这是一个有趣的想法。我认为目前没有跨平台的node.js解决方案。我确实遇到了要求同一件事的

  • 问题内容: 我试图为类路径协议注册自定义URL处理程序,如另一个线程所述。这是代码: 该测试用例具有以下JVM参数: 该行正确输出,因此正在设置属性。但是,由于上面的调用将引发异常,因此它似乎没有生效。 如果我像注释行中那样显式提供处理程序,则一切都很好。但是,我不想明确提供它-它应该自动完成。 我究竟做错了什么? 问题答案: 我发现了问题。我使用的原始类路径处理程序类具有非默认构造函数。当然,因

  • 小程序 App App(Object) App() 函数用来注册一个小程序。接受一个 Object 参数, App() 必须在 app.js 中调用,且只能调用一次。 Object参数说明: 属性 类型 描述 触发时机 onLaunch Function 生命周期回调—监听小程序初始化 小程序初始化完成时触发(全局只触发一次) onShow Function 生命周期回调—监听小程序显示 小程序启

  • 注册表是Windows系统的关键要素之一。 它包含有关操作系统各个方面的大量信息。 几乎所有安装在Windows系统上的应用程序都以某种形式与注册表交互。 注册表包含两个基本元素:键和值。 注册表项是与文件夹类似的容器对象。 注册表值是与文件类似的非容器对象。键可能包含值或其他键。 使用类似于Windows路径名称的语法来引用键,并使用反斜杠来指示层次结构的级别。 本章介绍查询值,添加,删除和编辑

  • 问题内容: 应该很容易: 但是这样就不会调用拦截器。 问题答案: 默认情况下,Spring将注册,和,而无需任何显式配置。 如果您定义自己的bean,那么默认的bean将不会被注册,而您只会得到显式声明的bean。 到目前为止,一切都很好。 当您添加到混合中时,问题就来了。这 也 声明了自己的,它取代了默认值。但是,如果您也声明自己的一个,那么最终您将声明两个。由于按照声明的顺序进行查询,因此通常

  • 本文向大家介绍Python实现注册、登录小程序功能,包括了Python实现注册、登录小程序功能的使用技巧和注意事项,需要的朋友参考一下 主要实现功能 1、用户输入用户名,在用户名文件中查找对应的用户,若无对应用户名则打印输入错误 2、用户名输入正确后,进行密码匹配。输入密码正确则登录成功,否则重新输入。 3、连续输错三次密码则该用户名被锁,退出程序 ------------------------