在Minecraft中更改玩家的模型

时间:2016-08-25 12:15:02

标签: java minecraft minecraft-forge

我正在尝试为我为MC 1.10创建的模式更改播放器的模型。我已经尝试了几件事,但没有任何效果。我已经制作了一个模型和渲染器,但无法让它替换播放器。这是我尝试过的(自定义模型叫做Hover Claws(长篇故事)):

RenderingRegistry.registerEntityRenderingHandler(EntityPlayer.class, (IRenderFactory)RenderHoverClawsFactory.INSTANCE);

此外:

public class RenderCustomPlayerEvent
{
    RenderHoverClaws render = new RenderHoverClaws(Minecraft.getMinecraft().getRenderManager(), new ModelHoverClaws(), 1F);

    @Subscribe
    public void renderCustomPlayer(RenderPlayerEvent.Pre pre)
    {
        pre.setCanceled(true);
        render.doRender((EntityLiving) pre.getEntityLiving(), 0D, -1.625, 0D, 0F, 0.0625F);
}

}

我浏览了整个网站,以及我的世界和伪造论坛。

请帮助!

编辑:我已经通过IChun查看了Morph mod的源代码,但我无法找到它如何改变播放器模型。如果你通过说我应该看看这个mod来回答这个问题,那么请指导我进行实际播放器模型更改的代码部分。

1 个答案:

答案 0 :(得分:0)

首先,我建议你不要这样做,因为许多模特和模特都依赖于玩家看起来像他一样,东西经过精心调整,看起来很好。

RenderingRegistry.registerEntityRenderingHandler(EntityPlayer.class, new IRenderFactory(){@Override
                public Render createRenderFor(RenderManager manager) { 
                    return new RenderPlayerRobotABC(manager,new ModelHoverClaws(), 0.3F);
                 }
            });

你的模型是从RenderPlayer类中取消的RenderPlayerRobotABC()。

在forgeSrc中查看RenderPlayer,复制所有代码,然后更改所需内容。

然后,渲染播放器模型并将悬停爪添加为图层。

protected void setDamageLayer() {
    this.addLayer(new LayerRenderer(){
        @Override
        public void doRenderLayer(EntityLivingBase player, float par2, float par3,
                float partialTicks, float par5, float par6, float par7, float scale) {
            RenderTools.bindTexture("textures/entity/player/hvoerclaws.png");
            claws.setLivingAnimations(player,par2,par3,partialTicks);
            claws.render(player, par2, par3, par5, par6, par7, scale);


        }

        @Override
        public boolean shouldCombineTextures() {
            return false;
        }

    });
}

一些关键部分依赖于所有字段/方法都可访问,因此请确保它们是: - )