package Oskar13.TheCharacters.ModelSystem;
import net.minecraft.block.Block;
import net.minecraft.client.model.ModelBase;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.EnumAction;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import org.lwjgl.opengl.GL11;
public abstract class ModelPlayerBase extends ModelBase
{
//Fields from ModelBase
/*
public boolean isRiding = false;
public List boxList = new ArrayList();
public boolean field_40301_k = true;
public int textureWidth = 64;
public int textureHeight = 32;
*/
public ModelRenderer bipedRightArm;
public ModelRenderer bipedLeftArm;
public String texture, textureUrl;
public int armorSlowdown, blockState = 0;
public boolean isSneak, hasBow;
public int heldItemLeft;
public float yOffset = 0F;
/**
*
* Records whether the model should be rendered holding an item in the right hand, and if that item is a block.
*/
public int heldItemRight;
/** Records whether the model should be rendered aiming a bow. */
public boolean aimedBow;
public ModelPlayerBase(float a) {
init(a);
}
public ModelPlayerBase(float par1, float par2, float par3, float par4) {
init(par1, par2, par3, par4);
}
public ModelPlayerBase(String texture, String textureUrl)
{
if(texture == null)
System.out.println("PMAPI - A model has no texture!");
this.texture = texture;
this.textureUrl = textureUrl;
init(0f);
}
public void init(float strech)
{
init(strech, 0.0F, 64, 32);
}
public void init(float par1, float par2, float par3, float par4)
{
}
public void renderEars(float par1)
{
}
/**
*/
public void renderCloak(float par1)
{
}
public void setRotationAngles(float move, float swing, float tick, float horz, float vert, float scale)
{
}
public void render(Entity entity, float move, float swing, float tick, float horz, float vert, float scale)
{
}
public void drawFirstPersonHand()
{
}
public void specials(RenderManager renderMan, EntityPlayer player)
{
}
protected void renderDrop(RenderManager renderMan, EntityPlayer player, ModelRenderer box, float scale, float scaleFactor, float posX, float posY, float posZ)
{
ItemStack drop = player.inventory.getCurrentItem();
if(drop == null)
return;
GL11.glPushMatrix();
if(box != null)
box.postRender(scale);
GL11.glTranslatef(posX, posY, posZ);
if(player.fishEntity != null)
drop = new ItemStack(Item.stick);
EnumAction enumaction = null;
if(player.getItemInUseCount() > 0)
enumaction = drop.getItemUseAction();
if(drop.itemID < 256 && RenderBlocks.renderItemIn3d(Block.blocksList[drop.itemID].getRenderType()))
{
float f4 = 0.5F * scaleFactor;
GL11.glTranslatef(0.0F, 0.1875F, -0.3125F);
f4 *= 0.75F;
GL11.glRotatef(20F, 1.0F, 0.0F, 0.0F);
GL11.glRotatef(45F, 0.0F, 1.0F, 0.0F);
GL11.glScalef(f4, -f4, f4);
} else if(drop.itemID == Item.bow.itemID) {
float f5 = 0.625F * scaleFactor;
GL11.glTranslatef(0.0F, 0.125F, 0.3125F);
GL11.glRotatef(-20F, 0.0F, 1.0F, 0.0F);
GL11.glScalef(f5, -f5, f5);
GL11.glRotatef(-100F, 1.0F, 0.0F, 0.0F);
GL11.glRotatef(45F, 0.0F, 1.0F, 0.0F);
} else if(Item.itemsList[drop.itemID].isFull3D() )
{
float f6 = 0.625F * scaleFactor;
if(Item.itemsList[drop.itemID].shouldRotateAroundWhenRendering())
{
GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F);
GL11.glTranslatef(0.0F, -0.125F, 0.0F);
}
if(player.getItemInUseCount() > 0 && enumaction == EnumAction.block)
{
GL11.glTranslatef(0.05F, 0.0F, -0.1F);
GL11.glRotatef(-50F, 0.0F, 1.0F, 0.0F);
GL11.glRotatef(-10F, 1.0F, 0.0F, 0.0F);
GL11.glRotatef(-60F, 0.0F, 0.0F, 1.0F);
}
GL11.glTranslatef(0.0F, 0.1875F, 0.0F);
GL11.glScalef(f6, -f6, f6);
GL11.glRotatef(-100F, 1.0F, 0.0F, 0.0F);
GL11.glRotatef(45F, 0.0F, 1.0F, 0.0F);
} else
{
float f7 = 0.375F * scaleFactor;
GL11.glTranslatef(0.25F, 0.1875F, -0.1875F);
GL11.glScalef(f7, f7, f7);
GL11.glRotatef(60F, 0.0F, 0.0F, 1.0F);
GL11.glRotatef(-90F, 1.0F, 0.0F, 0.0F);
GL11.glRotatef(20F, 0.0F, 0.0F, 1.0F);
}
if(drop.itemID == Item.potion.itemID)
{
int j = drop.getItem().getIconFromDamage(drop.getItemDamage());
float f9 = (float)(j >> 16 & 0xff) / 255F;
float f10 = (float)(j >> 8 & 0xff) / 255F;
float f11 = (float)(j & 0xff) / 255F;
GL11.glColor4f(f9, f10, f11, 1.0F);
renderMan.itemRenderer.renderItem(player, drop, 0);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
renderMan.itemRenderer.renderItem(player, drop, 1);
} else
renderMan.itemRenderer.renderItem(player, drop, 0);
GL11.glPopMatrix();
}
protected void renderPumpkin(RenderManager renderMan, EntityPlayer player, ModelRenderer box, float scale, float scaleFactor, float posX, float posY, float posZ)
{
ItemStack pumpkin = player.inventory.armorItemInSlot(3);
if(pumpkin == null || pumpkin.getItem().itemID >= 256)
return;
GL11.glPushMatrix();
if(box != null)
box.postRender(scale);
if(RenderBlocks.renderItemIn3d(Block.blocksList[pumpkin.itemID].getRenderType()))
{
float f1 = scaleFactor;
GL11.glTranslatef(posX, posY, posZ);
GL11.glRotatef(180F, 0.0F, 1.0F, 0.0F);
GL11.glScalef(f1, -f1, f1);
}
renderMan.itemRenderer.renderItem(player, pumpkin, 0);
GL11.glPopMatrix();
}
}