package sourcecoded.quantum.client.renderer.item;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemSword;
import net.minecraft.item.ItemTool;
import net.minecraftforge.client.IItemRenderer;
import org.lwjgl.opengl.GL11;
import static org.lwjgl.opengl.GL11.*;
public class ItemDepthRenderer implements IItemRenderer {
TexDepthMap[] depths;
public ItemDepthRenderer(TexDepthMap... params) {
depths = params;
}
@Override
public boolean handleRenderType(ItemStack item, ItemRenderType type) {
return type != ItemRenderType.INVENTORY;
}
@Override
public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) {
return true;
}
@Override
public void renderItem(ItemRenderType type, ItemStack item, Object... data) {
glPushMatrix();
boolean isTool = item.getItem() instanceof ItemTool || item.getItem() instanceof ItemSword;
EntityLivingBase entity = null;
if ((type == IItemRenderer.ItemRenderType.EQUIPPED) || (type == IItemRenderer.ItemRenderType.EQUIPPED_FIRST_PERSON)) {
entity = (EntityLivingBase)data[1];
}
float scale = 1.5F;
if (type == ItemRenderType.ENTITY)
scale = 1F;
else if (type == ItemRenderType.EQUIPPED_FIRST_PERSON)
scale = 1.5F;
if (isTool) {
if (type == ItemRenderType.EQUIPPED)
scale = 3F;
}
if (item.getItem() instanceof ItemSword && type == ItemRenderType.ENTITY)
scale = 0.85F;
//glEnable(GL_BLEND);
//glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
GL11.glBlendFunc(770, 771);
GL11.glEnable(3042);
//GL11.glShadeModel(7425);
glScalef(scale, scale, scale);
if (type == ItemRenderType.ENTITY) {
glRotatef(90F, 0F, 1F, 0F);
glTranslatef(-0.5F, -0.45F, 0F);
} else if (type == ItemRenderType.EQUIPPED_FIRST_PERSON){
if (isTool) {
glRotatef(40F, 0F, 1F, 0F);
glRotatef(50F, 0F, 0F, 1F);
glRotatef(170F, -1F, 0F, 0F);
glRotatef(90F, 0F, 0F, -1F);
glTranslatef(0.25F, -0.1F, -0.2F);
} else {
GL11.glRotatef(50.0F, 0.0F, 1.0F, 0.0F);
GL11.glRotatef(335.0F, 0.0F, 0.0F, 1.0F);
GL11.glTranslatef(-1F, 0F, 0.5F);
}
} else if (type == ItemRenderType.EQUIPPED) {
if (isTool) {
glRotatef(45F, -1F, 0F, 0F);
glRotatef(45F, 0F, 1F, 1F);
glRotatef(90F, 0F, -1F, 0F);
glRotatef(60F, 0F, 0F, 1F);
glTranslatef(-0.1F, -0.7F, 0F);
} else {
glTranslatef(0.5F, 0.125F, 1F);
glRotatef(90F, -1F, 1F, 1F);
}
}
Tessellator tess = Tessellator.instance;
for (TexDepthMap de : depths)
de.renderDepth(tess);
//GL11.glShadeModel(7424);
GL11.glDisable(3042);
//glDisable(GL_BLEND);
glPopMatrix();
}
}