package net.tropicraft.client.entity.render;
import net.minecraft.client.model.ModelBase;
import net.minecraft.client.renderer.entity.RenderLiving;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.ItemStack;
import net.minecraft.util.MathHelper;
import net.minecraft.util.ResourceLocation;
import net.tropicraft.client.entity.model.ModelAshen;
import net.tropicraft.entity.hostile.EntityAshen;
import net.tropicraft.entity.hostile.EntityAshenHunter;
import net.tropicraft.registry.TCItemRegistry;
import net.tropicraft.util.TropicraftUtils;
import org.lwjgl.opengl.GL11;
public class RenderAshen extends RenderLiving {
private MaskRenderer mask;
private ModelAshen modelAshen;
public RenderAshen(ModelBase modelbase, float f) {
super(modelbase, f);
modelAshen = (ModelAshen) modelbase;
mask = new MaskRenderer();
}
public void renderAshen(EntityAshen entityAshen, double d, double d1, double d2,
float f, float f1) {
/*if (entityAshen.getEntityToAttack() != null && entityAshen.getDistanceToEntity(entityAshen.getEntityToAttack()) < 2.0F) {
modelAshen.swinging = true;
} else {*/
modelAshen.swinging = false;
//}
modelAshen.actionState = entityAshen.getActionState();
super.doRender(entityAshen, d, d1, d2, f, f1);
}
@Override
public void doRender(EntityLiving entityliving, double d, double d1, double d2,
float f, float f1) {
renderAshen((EntityAshen) entityliving, d, d1, d2, f, f1);
}
@Override
public void doRender(Entity entity, double d, double d1, double d2,
float f, float f1) {
renderAshen((EntityAshen) entity, d, d1, d2, f, f1);
}
private void renderMask(EntityLivingBase entityliving) {
GL11.glPushMatrix();
modelAshen.head.postRender(.045F);
TropicraftUtils.bindTextureEntity("ashen/mask");
GL11.glTranslatef(-0.03125F, 0.40625F + MathHelper.sin(((EntityAshen) entityliving).bobber), .18F);
mask.renderMask(((EntityAshen) entityliving).getMaskType());
GL11.glPopMatrix();
}
@Override
protected void renderEquippedItems(EntityLivingBase entityliving, float f) {
if (entityliving instanceof EntityAshenHunter) {
if (((EntityAshen) entityliving).getActionState() == 2) {
GL11.glPushMatrix();
modelAshen.leftArm.postRender(0.0625F);
GL11.glTranslatef(-0.35F, -0.45F, -0.225F);
//GL11.glRotatef(90F, 0.0F, 1.0F, 0.0F);
GL11.glRotatef(45F, 0.0F, 1.0F, 0.0F);
float scale = 0.3F;
GL11.glScalef(scale, scale, scale);
//TODO RenderManager.instance.itemRenderer.renderItem(entityliving, new ItemStack(TCItemRegistry.spearBamboo), 0);
GL11.glPopMatrix();
GL11.glPushMatrix();
modelAshen.rightArm.postRender(0.0625F);
/*GL11.glTranslatef(0.4F, -0.20F, -0.245F);
GL11.glRotatef(05F, 1.0F, 0.0F, 0.0F);
GL11.glRotatef(45F, 0.0F, 1.0F, 0.0F);
GL11.glRotatef(90F, 0.0F, 0.0F, 1.0F);*/
//GL11.glTranslatef(0.4F, -0.50F, -0.245F);
//GL11.glRotatef(12F, 0.0F, 0.0F, 1.0F);
GL11.glTranslatef(0.4F, -0.30F, -0.245F);
GL11.glRotatef(130F, 1.0F, 0.0F, 0.0F);
GL11.glRotatef(-90F, 0.0F, 1.0F, 0.0F);
GL11.glRotatef(5F, 0.0F, 0.0F, 1.0F);
/*GL11.glRotatef(15F, 1.0F, 0.0F, 0.0F);
GL11.glRotatef(130F, 0.0F, 1.0F, 0.0F);
GL11.glRotatef(90F, 0.0F, 0.0F, 1.0F);
GL11.glRotatef(160F, 0.0F, 1.0F, 0.0F);*/
GL11.glScalef(scale, scale, scale);
RenderManager.instance.itemRenderer.renderItem(entityliving, new ItemStack(TCItemRegistry.blowGun), 0);
GL11.glPopMatrix();
}
}
if (((EntityAshen) entityliving).hasMask()) {
renderMask(entityliving);
}
}
@Override
protected ResourceLocation getEntityTexture(Entity entity) {
return TropicraftUtils.bindTextureEntity("ashen/nativetext");
}
}