Hello all.
I'm having difficulty either understanding or finding any documentation or other help articles on getArmorModel(), this is really the only problem I've had so far but it's a pain nonetheless. When trying to set the armorModel's swing progress, the swing progress doesn't behave as I would expect it to, granted it is probably down to me misunderstanding what the purpose of the equivalent field in the EntityLiving class is.
I have experimented with getSwingProgress and it's float parameter, but I am entirely uneducated about the partialTicks as suggested on Forge's methods.csv. When using either the variable or the method (with various parameters), this is happening;
Normal speed:
Slowed down:
package eu.tetrabyte.contentmod.items;
import eu.tetrabyte.contentmod.ContentMod;
import net.minecraft.client.model.ModelBiped;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.EnumAction;
import net.minecraft.item.ItemArmor;
import net.minecraft.item.ItemStack;
public class Armor extends ItemArmor {
private float scale = 0.125F;
private ModelBiped armorModel = new ModelBiped(scale);
private ItemStack heldItem = null;
private EnumAction enumaction = null;
public Armor(ArmorMaterial material, int renderIndex, int armorType) {
super(material, renderIndex, armorType);
this.setMaxStackSize(1);
this.setCreativeTab(ContentMod.tabContent);
}
@Override
public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, int armorSlot) {
if (armorModel != null) {
armorModel.isSneak = entityLiving.isSneaking();
armorModel.isRiding = entityLiving.isRiding();
armorModel.isChild = entityLiving.isChild();
/** Attempted to use getSwingProgress() with various floats**/
armorModel.swingProgress = entityLiving.swingProgress; // Delayed ?
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;
}
}
armorModel.swingProgress = player.swingProgress;
}
}
}
return armorModel;
}
public int getColor(ItemStack itemstack) {
return 0xFFFFFF;
}
public int getColorFromItemStack(ItemStack itemstack, int renderpass) {
return 0xFFFFFF;
}
}
The armor rendering is delayed as you can see in the image and I have fiddled with the parameter, not sure if this is a bug or my own incompetence. Could anyone provide assistance in fixing this? Hopefully this is a quick fix .
Regards
-Admiral_Damage