- 27
- 1
- 2
Добрый день, пытаюсь настроить рендер предмета при виде от 1-го лица, однако, каждый раз, когда предмет берется в руки, происходит краш.
Класс предмета:
Класс рендера:
Про инициализацию я не забыл:
И на стороне клиента.
В логах указывается на ошибку в методе model.render (37-ая в классе рендера).
Вот мой класс модели, если нужен, но там ошибок явно нет:
}
Класс предмета:
Класс предмета:
public class RuneFireBolt extends Item {
private static final String name = "Rune_Fire_Bolt";
public RuneFireBolt() {
this.setUnlocalizedName(name);
this.setFull3D();
setTextureName(GothicMain.MODID + ":" + "rune_fire_bolt");
GameRegistry.registerItem(this, name);
this.setCreativeTab(CreativeTabs.tabCombat);
}
}
Класс рендера:
Класс рендера:
public class RuneItemRenderer implements IItemRenderer {
protected RuneModel model;
public final ResourceLocation texture = new ResourceLocation(GothicMain.MODID, "textures/items/runes/rune.png");
@Override
public boolean handleRenderType(ItemStack item, ItemRenderType type) {
switch (type) {
case EQUIPPED:
case EQUIPPED_FIRST_PERSON:
return true;
default:
return false;
}
}
@Override
public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) {
return false;
}
@Override
public void renderItem(ItemRenderType type, ItemStack item, Object... data) {
switch (type) {
case EQUIPPED:
case EQUIPPED_FIRST_PERSON:
GL11.glPushMatrix();
Minecraft.getMinecraft().renderEngine.bindTexture(texture);
GL11.glRotatef(180.0F, 1.0F, 1.0F, 1.0F);
GL11.glTranslatef(-0.6F, 0.5F, 0.0F);
//GL11.glScalef(x, y, z);
Entity ent = (Entity) data[1];
model.render(ent, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F);
GL11.glPopMatrix();
default:
break;
}
}
}
public static RuneFireBolt runeFireBolt;
Java:
public static void load(FMLPreInitializationEvent e) {
runeFireBolt = new ItemFireMagic.RuneFireBolt();
}
И на стороне клиента.
Java:
MinecraftForgeClient.registerItemRenderer(GItems.runeFireBolt, new RuneItemRenderer());
В логах указывается на ошибку в методе model.render (37-ая в классе рендера).
Вот мой класс модели, если нужен, но там ошибок явно нет:
Класс модели:
public class RuneModel extends ModelBase {
ModelRenderer base;
ModelRenderer top1;
ModelRenderer top2;
ModelRenderer bot1;
ModelRenderer bot2;
public RuneModel() {
textureWidth = 64;
textureHeight = 32;
base = new ModelRenderer(this, 20, 0);
base.addBox(-6F, -16F, -5F, 12, 16, 10);
base.setRotationPoint(0F, 0F, 0F);
base.setTextureSize(64, 32);
base.mirror = true;
setRotation(base, 0F, 0F, 0F);
top1 = new ModelRenderer(this, 0, 23);
top1.addBox(-4.5F, -17F, -4F, 9, 1, 8);
top1.setRotationPoint(0F, 0F, 0F);
top1.setTextureSize(64, 32);
top1.mirror = true;
setRotation(top1, 0F, 0F, 0F);
top2 = new ModelRenderer(this, 5, 26);
top2.addBox(-3F, -18F, -2.5F, 6, 1, 5);
top2.setRotationPoint(0F, 0F, 0F);
top2.setTextureSize(64, 32);
top2.mirror = true;
setRotation(top2, 0F, 0F, 0F);
bot1 = new ModelRenderer(this, 0, 23);
bot1.addBox(-4.5F, -1F, -4F, 9, 1, 8);
bot1.setRotationPoint(0F, 0F, 0F);
bot1.setTextureSize(64, 32);
bot1.mirror = true;
setRotation(bot1, 3.141593F, 0F, 0F);
bot2 = new ModelRenderer(this, 5, 26);
bot2.addBox(-3F, -2F, -2.5F, 6, 1, 5);
bot2.setRotationPoint(0F, 0F, 0F);
bot2.setTextureSize(64, 32);
bot2.mirror = true;
setRotation(bot2, 3.141593F, 0F, 0F);
}
public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5)
{
super.render(entity, f, f1, f2, f3, f4, f5);
setRotationAngles(f, f1, f2, f3, f4, f5, entity);
base.render(f5);
top1.render(f5);
top2.render(f5);
bot1.render(f5);
bot2.render(f5);
}
private void setRotation(ModelRenderer model, float x, float y, float z)
{
model.rotateAngleX = x;
model.rotateAngleY = y;
model.rotateAngleZ = z;
}
public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity)
{
super.setRotationAngles(f, f1, f2, f3, f4, f5, entity);
}
}
Вложения
Последнее редактирование: