我已经在 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 中创建的模型替换。