如何将玩家模型更改为我的世界 Forge 1.12.2 中的 BlockBench 制作模型

问题描述 投票:0回答:1

我已经在 BlockBench 中创建了一个自定义模型,并且我正在尝试覆盖玩家模型的渲染。

我创建的模型的类中的代码是

package com.example.examplemod;// Made with Blockbench 4.4.3
// Exported for Minecraft version 1.7 - 1.12
// Paste this class into your mod and generate all required imports

import net.minecraft.client.model.ModelBase;
import net.minecraft.client.model.ModelBox;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.entity.Entity;

public class custom_model extends ModelBase {
    private final ModelRenderer bb_main;

    public custom_model() {
        textureWidth = 16;
        textureHeight = 16;

        bb_main = new ModelRenderer(this);
        bb_main.setRotationPoint(0.0F, 24.0F, 0.0F);
        bb_main.cubeList.add(new ModelBox(bb_main, 0, 0, -1.0F, -2.0F, -1.0F, 2, 2, 2, 0.0F, false));
    }

    @Override
    public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) {
        bb_main.render(f5);
    }

    public void setRotationAngle(ModelRenderer modelRenderer, float x, float y, float z) {
        modelRenderer.rotateAngleX = x;
        modelRenderer.rotateAngleY = y;
        modelRenderer.rotateAngleZ = z;
    }
}

这就是我在调用 PlayerRenderEvent.Pre 时调用我的类的方式

@EventHandler
public void init(FMLInitializationEvent event) {
    MinecraftForge.EVENT_BUS.register(PlayerRenderEventClass.class);
}

这是取消默认皮肤渲染的代码所在的位置,我正在尝试渲染我的新模型,但它在播放器是 PlayerModel.render() 方法的参数的行处给出了空指针异常。我还尝试使用 event.getPlayer 和 event.getLivingEntity 都给出了 NPE

package com.example.examplemod;


import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraftforge.client.event.RenderPlayerEvent;
import net.minecraftforge.client.model.obj.OBJLoader;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;

import java.lang.ref.Reference;

public class PlayerRenderEventClass {
    public static custom_model PlayerModel;

    @SubscribeEvent
    public static void PlayerRenderEvent(RenderPlayerEvent.Pre event) {
        event.setCanceled(true);
        Entity player = event.getEntity();
        if (player != null) {
            PlayerModel.render(
                    player,
                    0.0F,
                    0.0F,
                    0.0F,
                    0.0F,
                    0.0F,
                    0.65F);
        }
    }

}

我已经有一段时间没有编写 Minecraft 模组了,对发生的事情知之甚少,任何帮助将不胜感激,如果您需要任何其他信息,请留言。该程序仅在您进入第三人称时才会崩溃,即当我假设调用 RenderPlayerEvent 时,基本上屏幕为空白蓝色,我认为没有任何内容被渲染,它只是天空盒,然后它崩溃了

我尝试将

event.getEntity()
更改为
event.getLivingEntity()
event.getPlayer()
,但都不起作用。

我期待我的玩家模型被我在 BlockBench 中创建的模型替换。

java minecraft minecraft-forge
1个回答
0
投票

您尝试过使用GeckoLib吗?我一直在使用它,我想这就是你的答案。不幸的是,在尝试用一个例子回答你的问题时,我遇到了一个困难的错误。我希望这有帮助!一旦我有完整的解决方案,我会立即通知您!

安装:Forge/Fabric
文档:GitHub

© www.soinside.com 2019 - 2024. All rights reserved.