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.nbt.NBTTagCompound; import net.minecraftforge.client.IItemRenderer; import org.lwjgl.opengl.GL11; import sourcecoded.quantum.item.tools.ItemRiftBow; import static org.lwjgl.opengl.GL11.*; public class ItemBowRenderer implements IItemRenderer { @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(); if (!item.hasTagCompound()) item.stackTagCompound = new NBTTagCompound(); if (!item.stackTagCompound.hasKey("iconIndex")) item.stackTagCompound.setInteger("iconIndex", -1); if (!item.stackTagCompound.hasKey("inUse")) item.stackTagCompound.setBoolean("inUse", false); TexDepthMap[] map = ItemRiftBow.getDepthMap(item.stackTagCompound.getInteger("iconIndex")); boolean isTool = true; boolean inUse = item.stackTagCompound.getBoolean("inUse"); EntityLivingBase entity = null; if ((type == ItemRenderType.EQUIPPED) || (type == 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 (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){ glRotatef(40F, 0F, 1F, 0F); glRotatef(55F, 0F, 0F, 1F); glRotatef(170F, -1F, 0F, 0F); glRotatef(90F, 0F, 0F, -1F); glTranslatef(0.25F, -0.1F, -0.2F); if (inUse) { glTranslatef(0F, 0.12F, -0.2F); } } else if (type == ItemRenderType.EQUIPPED) { glRotatef(45F, -1F, 0F, 0F); glRotatef(45F, 0F, 1F, 1F); glRotatef(90F, 0F, -1F, 0F); glRotatef(60F, 0F, 0F, 1F); glTranslatef(-0.2F, -1F, 0F); } Tessellator tess = Tessellator.instance; for (TexDepthMap de : map) de.renderDepth(tess); //GL11.glShadeModel(7424); GL11.glDisable(3042); //glDisable(GL_BLEND); glPopMatrix(); } }