Я решил создать шлем с нестандартной моделью. Сделал пробную модель в Techne. Написал код. И в игре она должна была выглядеть вот так:
но случилось в итоге, в игре она, почему- то выглядит вот так:

не совсем понимаю в чем проблема, поэтому решил написать вам на форум...может кто поможет разобраться в чем собственно прикол...
Вот код:

но случилось в итоге, в игре она, почему- то выглядит вот так:

не совсем понимаю в чем проблема, поэтому решил написать вам на форум...может кто поможет разобраться в чем собственно прикол...
Вот код:
Java:
package mod.mcreator;
import net.minecraftforge.common.util.EnumHelper;
import net.minecraft.world.World;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemArmor;
import net.minecraft.item.Item;
import net.minecraft.item.EnumAction;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.Entity;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.client.model.ModelBiped;
import java.util.Random;
import cpw.mods.fml.relauncher.SideOnly;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.common.event.FMLServerStartingEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
@SuppressWarnings("unchecked")
public class mcreator_zaeblo {
public mcreator_zaeblo() {
}
public static Item helm;
public static Object instance;
public void load() {
}
public void generateNether(World world, Random random, int chunkX, int chunkZ) {
}
public void generateSurface(World world, Random random, int chunkX, int chunkZ) {
}
public int addFuel(ItemStack fuel) {
return 0;
}
public void serverLoad(FMLServerStartingEvent event) {
}
public void preInit(FMLPreInitializationEvent event) {
}
public void registerRenderers() {
}
static {
ItemArmor.ArmorMaterial mat = EnumHelper.addArmorMaterial("Zaeblo", 5, new int[] {3, 0, 0, 0}, 5);
helm = (new Itemzaeblo(mat, 0, 0));
helm.setMaxStackSize(0);
Item.itemRegistry.addObject(512, "Zaeblo", helm);
}
static class Itemzaeblo extends ItemArmor {
public ItemStack heldItem = null;
public Itemzaeblo(ArmorMaterial mat, int index, int armorType) {
super(mat, index, armorType);
setMaxDamage(0);
setUnlocalizedName("Zaeblo");
setTextureName("z_roman_helm");
setCreativeTab(CreativeTabs.tabCombat);
}
public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type){
if(stack != null){
if(stack.getItem() == mcreator_zaeblo.helm){
return "Golova.png";
}
}
return null;
}
@Override
@SideOnly(Side.CLIENT)
public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, int armorSlot) {
ArmorRenderer armorModel = new ArmorRenderer();
if (armorModel != null) {
armorModel.bipedHead.showModel = armorSlot == 0;
armorModel.bipedHeadwear.showModel = true;
armorModel.bipedBody.showModel = armorSlot == 1 || armorSlot == 2;
armorModel.bipedRightArm.showModel = armorSlot == 1;
armorModel.bipedLeftArm.showModel = armorSlot == 1;
armorModel.bipedRightLeg.showModel = armorSlot == 2 || armorSlot == 3;
armorModel.bipedLeftLeg.showModel = armorSlot == 2 || armorSlot == 3;
armorModel.isSneak = entityLiving.isSneaking();
armorModel.isRiding = entityLiving.isRiding();
armorModel.isChild = entityLiving.isChild();
armorModel.heldItemRight = 0;
armorModel.aimedBow = false;
heldItem = entityLiving.getHeldItem();
if (heldItem != null) {
armorModel.heldItemRight = 1;
if (entityLiving instanceof EntityPlayer) {
EntityPlayer player = (EntityPlayer) entityLiving;
if (player.getItemInUseCount() > 0 && entityLiving instanceof EntityPlayer) {
EnumAction enumaction = heldItem.getItemUseAction();
if (enumaction == EnumAction.bow) {
armorModel.aimedBow = true;
} else if (enumaction == EnumAction.block) {
armorModel.heldItemRight = 3;
}
}
}
}
}
return armorModel;
}
}
@SideOnly(Side.CLIENT)
public static class ArmorRenderer extends ModelBiped
{
ModelRenderer Shape1;
ModelRenderer Shape2;
public ArmorRenderer()
{
textureWidth = 64;
textureHeight = 32;
Shape1 = new ModelRenderer(this, 0, 0);
Shape1.addBox(-1F, -8F, -5F, 6, 8, 1);
Shape1.setRotationPoint(0F, 0F, 0F);
Shape1.setTextureSize(64, 32);
Shape1.mirror = true;
setRotation(Shape1, 0F, 0F, 0F);
Shape2 = new ModelRenderer(this, 15, 0);
Shape2.addBox(3F, -13F, -6F, 1, 9, 1);
Shape2.setRotationPoint(0F, 0F, 0F);
Shape2.setTextureSize(64, 32);
Shape2.mirror = true;
setRotation(Shape2, 0F, 0F, 0F);
this.Shape1.addChild(Shape2);
}
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);
Shape1.render(f5);
Shape2.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);
this.Shape1.rotateAngleY = f3/(180/(float)Math.PI);
this.Shape1.rotateAngleX = f4/(180/(float)Math.PI);
if(this.isSneak){
this.Shape1.rotationPointY = 1.0f;
}
else{
this.Shape1.rotationPointY = 0.0f;
}
}
}
}