package ganymedes01.etfuturum.client.renderer.item; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import ganymedes01.etfuturum.client.OpenGLHelper; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.entity.RenderItem; import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemBow; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.IItemRenderer; @SideOnly(Side.CLIENT) public class ItemBowRenderer implements IItemRenderer { private final RenderItem renderItem = new RenderItem(); @Override public boolean handleRenderType(ItemStack stack, ItemRenderType type) { ItemStack usingItem = Minecraft.getMinecraft().thePlayer.getItemInUse(); return type == ItemRenderType.INVENTORY && usingItem != null && usingItem == stack; } @Override public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack stack, ItemRendererHelper helper) { return false; } @Override public void renderItem(ItemRenderType type, ItemStack stack, Object... data) { TextureManager textureManager = Minecraft.getMinecraft().getTextureManager(); ResourceLocation resource = textureManager.getResourceLocation(stack.getItemSpriteNumber()); EntityPlayer player = Minecraft.getMinecraft().thePlayer; ItemStack usingItem = player.getItemInUse(); int useRemaining = player.getItemInUseCount(); ItemBow bow = (ItemBow) stack.getItem(); IIcon icon = bow.getIcon(stack, 0); if (usingItem != null && usingItem == stack) { int charge = stack.getMaxItemUseDuration() - useRemaining; if (charge >= 18) icon = bow.getItemIconForUseDuration(2); else if (charge > 13) icon = bow.getItemIconForUseDuration(1); else if (charge > 0) icon = bow.getItemIconForUseDuration(0); } if (icon == null) icon = ((TextureMap) textureManager.getTexture(resource)).getAtlasSprite("missingno"); OpenGLHelper.pushMatrix(); textureManager.bindTexture(resource); OpenGLHelper.colour(bow.getColorFromItemStack(stack, 0)); OpenGLHelper.disableLighting(); OpenGLHelper.enableAlpha(); OpenGLHelper.enableBlend(); OpenGlHelper.glBlendFunc(770, 771, 1, 0); renderItem.renderIcon(0, 0, icon, 16, 16); OpenGLHelper.enableLighting(); OpenGLHelper.disableAlpha(); OpenGLHelper.disableBlend(); if (stack.hasEffect(0)) renderItem.renderEffect(textureManager, 0, 0); OpenGLHelper.popMatrix(); } }