116 lines
3.9 KiB
Java
116 lines
3.9 KiB
Java
package tinker.tconstruct.client.entityrender;
|
|
|
|
import net.minecraft.client.model.ModelBiped;
|
|
import net.minecraft.client.renderer.entity.RenderPlayer;
|
|
import net.minecraft.entity.player.EntityPlayer;
|
|
import net.minecraft.item.EnumArmorMaterial;
|
|
import net.minecraft.item.Item;
|
|
import net.minecraft.item.ItemArmor;
|
|
import net.minecraft.item.ItemStack;
|
|
import net.minecraftforge.client.ForgeHooksClient;
|
|
import net.minecraftforge.common.IArmorModelProvider;
|
|
|
|
import org.lwjgl.opengl.GL11;
|
|
|
|
import cpw.mods.fml.relauncher.Side;
|
|
import cpw.mods.fml.relauncher.SideOnly;
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
public class PlayerArmorRender extends RenderPlayer
|
|
{
|
|
private ModelBiped modelBipedMain;
|
|
private ModelBiped modelArmorChestplate;
|
|
private ModelBiped modelArmor;
|
|
public static String[] armorFilenamePrefix = new String[] {"cloth", "chain", "iron", "diamond", "gold"};
|
|
public static float NAME_TAG_RANGE = 64.0f;
|
|
public static float NAME_TAG_RANGE_SNEAK = 32.0f;
|
|
|
|
public PlayerArmorRender()
|
|
{
|
|
super();
|
|
this.modelBipedMain = (ModelBiped)this.mainModel;
|
|
this.modelArmorChestplate = new ModelBiped(1.0F);
|
|
this.modelArmor = new ModelBiped(0.5F);
|
|
}
|
|
|
|
/**
|
|
* Set the specified armor model as the player model. Args: player, armorSlot, partialTick
|
|
*/
|
|
protected int setArmorModel(EntityPlayer par1EntityPlayer, int slot, float par3)
|
|
{
|
|
ItemStack stack = par1EntityPlayer.inventory.armorItemInSlot(3 - slot);
|
|
|
|
if (stack != null)
|
|
{
|
|
Item armoritem = stack.getItem();
|
|
|
|
if (armoritem instanceof ItemArmor)
|
|
{
|
|
ItemArmor var6 = (ItemArmor)armoritem;
|
|
this.loadTexture(ForgeHooksClient.getArmorTexture(stack, "/armor/" + armorFilenamePrefix[var6.renderIndex] + "_" + (slot == 2 ? 2 : 1) + ".png"));
|
|
ModelBiped var7;
|
|
if (armoritem instanceof IArmorModelProvider)
|
|
{
|
|
var7 = ((IArmorModelProvider) armoritem).provideArmorModel(slot);
|
|
}
|
|
else
|
|
{
|
|
var7 = slot == 2 ? this.modelArmor : this.modelArmorChestplate;
|
|
var7.bipedHead.showModel = slot == 0;
|
|
var7.bipedHeadwear.showModel = slot == 0;
|
|
var7.bipedBody.showModel = slot == 1 || slot == 2;
|
|
var7.bipedRightArm.showModel = slot == 1;
|
|
var7.bipedLeftArm.showModel = slot == 1;
|
|
var7.bipedRightLeg.showModel = slot == 2 || slot == 3;
|
|
var7.bipedLeftLeg.showModel = slot == 2 || slot == 3;
|
|
}
|
|
this.setRenderPassModel(var7);
|
|
|
|
if (var7 != null)
|
|
{
|
|
var7.onGround = this.mainModel.onGround;
|
|
}
|
|
|
|
if (var7 != null)
|
|
{
|
|
var7.isRiding = this.mainModel.isRiding;
|
|
}
|
|
|
|
if (var7 != null)
|
|
{
|
|
var7.isChild = this.mainModel.isChild;
|
|
}
|
|
|
|
float var8 = 1.0F;
|
|
|
|
if (var6.getArmorMaterial() == EnumArmorMaterial.CLOTH)
|
|
{
|
|
int var9 = var6.getColor(stack);
|
|
float var10 = (float)(var9 >> 16 & 255) / 255.0F;
|
|
float var11 = (float)(var9 >> 8 & 255) / 255.0F;
|
|
float var12 = (float)(var9 & 255) / 255.0F;
|
|
GL11.glColor3f(var8 * var10, var8 * var11, var8 * var12);
|
|
|
|
if (stack.isItemEnchanted())
|
|
{
|
|
return 31;
|
|
}
|
|
|
|
return 16;
|
|
}
|
|
|
|
GL11.glColor3f(var8, var8, var8);
|
|
|
|
if (stack.isItemEnchanted())
|
|
{
|
|
return 15;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
return -1;
|
|
}
|
|
}
|