- 53
- 0
Мда , проблема такова , я создал шапку с моделькой Techne , броню делал по этому туториалу . Всё вроде бы делал , но у меня вот такая проблема . влево и вправо всё нормально , но верх и вниз шапка не двигается за игроком . Код модели шапки :
И код итема шапки :
Код:
package assets.testmod.src;
import java.util.ArrayList;
import net.minecraft.client.model.ModelBiped;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.entity.Entity;
import net.minecraft.util.MathHelper;
public class Shapka extends ModelBiped
{
private ArrayList<ModelRenderer> modelList = new ArrayList<ModelRenderer>();
ModelRenderer Shape1;
ModelRenderer Shape2;
public Shapka()
{
textureWidth = 64;
textureHeight = 32;
Shape1 = new ModelRenderer(this, 0, 0);
Shape1.addBox(-4.5F, -9F, -4.5F, 9, 3, 9);
Shape1.setRotationPoint(0F, 0F, 0F);
Shape1.setTextureSize(64, 32);
Shape1.mirror = true;
setRotation(Shape1, 0F, 0F, 0F);
Shape2 = new ModelRenderer(this, 0, 0);
Shape2.addBox(-4F, -9.7F, -4F, 8, 1, 8);
Shape2.setRotationPoint(0F, 0F, 0F);
Shape2.setTextureSize(64, 32);
Shape2.mirror = true;
setRotation(Shape2, 0F, 0F, 0F);
modelList.add(Shape1);
modelList.add(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);
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);
//те 2 строки из ModelBiped
setRotationAngleY(f3 / (180F / (float)Math.PI));
setRotationAngleX(f4 / (180F / (float)Math.PI));
if (isSneak)
setRotationAngleY(1.0F);
else
setRotationAngleX(0.0F);
}
private void setRotationAngleX(float angle) {
for (ModelRenderer modelRenderer : modelList) {
modelRenderer.rotateAngleX = angle;
}
}
private void setRotationAngleY(float angle) {
for (ModelRenderer modelRenderer : modelList) {
modelRenderer.rotateAngleY = angle;
}
}
private void setRotationAngleZ(float angle) {
for (ModelRenderer modelRenderer : modelList) {
modelRenderer.rotateAngleZ = angle;
}
}
private void setRotationPointY (float par) {
for (ModelRenderer modelRenderer : modelList) {
modelRenderer.rotationPointY = par;
}
}
}
Код:
package assets.testmod.src;
import net.minecraft.client.model.ModelBiped;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.EnumArmorMaterial;
import net.minecraft.item.ItemArmor;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class TestHelmet extends ItemArmor
{
public TestHelmet(int par1, EnumArmorMaterial par2EnumArmorMaterial, int par3, int par4)
{
super(par1, par2EnumArmorMaterial, par3, par4);
this.setCreativeTab(CreativeTabs.tabCombat);
}
@SideOnly(Side.CLIENT)
@Override
public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, int armorSlot) {
if (armorSlot != 0)
return null;
if (itemStack != null && itemStack.getItem() instanceof TestHelmet) {
ModelBiped model = TestMod.proxy.getArmorModelHelmet();
model.isSneak = entityLiving.isSneaking();
model.aimedBow = entityLiving.isSneaking();
return model;
}
else
return null;
}
@SideOnly(Side.CLIENT)
public void registerIcons(IconRegister par1IconRegister)
{
this.itemIcon = par1IconRegister.registerIcon(ModInfo.MODID + ":testHelmet");
}
public void onArmorTickUpdate(World world, EntityPlayer player, ItemStack itemStack)
{
/*
* Любой эффект, когда броня одета (не вся, а только определенный предмет(в данном случае - шлем))
*/
}
public String getArmorTexture(ItemStack stack, Entity entity, int slot, int layer)
{
return ModInfo.MODID + ":textures/armor/Shapka.png";
}
}