package joshie.harvest.tools.render; import joshie.harvest.api.core.ITiered; import joshie.harvest.api.core.ITiered.ToolTier; import joshie.harvest.core.lib.HFModInfo; import joshie.harvest.core.util.annotations.HFEvents; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.item.ItemStack; import net.minecraftforge.client.event.RenderTooltipEvent; import net.minecraftforge.fml.client.config.GuiUtils; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.relauncher.Side; @HFEvents(Side.CLIENT) @SuppressWarnings("unused") public class RenderToolLevel { @SubscribeEvent @SuppressWarnings("ConstantConditions") public void onTooltipRender(RenderTooltipEvent.PostText event) { if (event.getStack() == null || Minecraft.getMinecraft().currentScreen == null) return; //Do nothing if stack is null ItemStack stack = event.getStack(); if (stack.getItem() instanceof ITiered) { ITiered tiered = ((ITiered)stack.getItem()); double level = tiered.getLevel(stack); ToolTier tier = tiered.getTier(stack); GuiScreen gui = Minecraft.getMinecraft().currentScreen; GlStateManager.disableRescaleNormal(); RenderHelper.disableStandardItemLighting(); GlStateManager.disableLighting(); GlStateManager.disableDepth(); int k = level < 10 ? 65 : level < 100 ? 70 : 80; int i1 = event.getX(); int j1 = event.getY() + 18 + (11 * (event.getLines().size() - 1)); int k1 = 7; if (i1 + k > gui.width) { i1 -= 28 + k; } if (j1 + k1 + 6 > gui.height) { j1 = gui.height - k1 - 6; } int zLevel = (int) 500.0F; int l1 = -267386864; GuiUtils.drawGradientRect(zLevel, i1 - 3, j1 - 4, i1 + k + 3, j1 - 3, l1, l1); GuiUtils.drawGradientRect(zLevel, i1 - 3, j1 + k1 + 3, i1 + k + 3, j1 + k1 + 4, l1, l1); GuiUtils.drawGradientRect(zLevel, i1 - 3, j1 - 3, i1 + k + 3, j1 + k1 + 3, l1, l1); GuiUtils.drawGradientRect(zLevel, i1 - 4, j1 - 3, i1 - 3, j1 + k1 + 3, l1, l1); GuiUtils.drawGradientRect(zLevel, i1 + k + 3, j1 - 3, i1 + k + 4, j1 + k1 + 3, l1, l1); int i2 = 1347420415; int j2 = (i2 & 16711422) >> 1 | i2 & -16777216; GuiUtils.drawGradientRect(zLevel, i1 - 3, j1 - 3 + 1, i1 - 3 + 1, j1 + k1 + 3 - 1, i2, j2); GuiUtils.drawGradientRect(zLevel, i1 + k + 2, j1 - 3 + 1, i1 + k + 3, j1 + k1 + 3 - 1, i2, j2); GuiUtils.drawGradientRect(zLevel, i1 - 3, j1 - 3, i1 + k + 3, j1 - 3 + 1, i2, i2); GuiUtils.drawGradientRect(zLevel, i1 - 3, j1 + k1 + 2, i1 + k + 3, j1 + k1 + 3, j2, j2); GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); gui.mc.renderEngine.bindTexture(HFModInfo.TOOLELEMENTS); gui.drawTexturedModalRect(i1 - 1, j1 - 1, 0, 8, 52, 9); int posY = tier != null && tier.ordinal() >= ToolTier.MYSTRIL.ordinal() ? 26 : 17; int width = ((int)level >> 1) + 2; gui.drawTexturedModalRect(i1 - 1, j1 - 1, 0, posY, width, 9); GlStateManager.pushMatrix(); GlStateManager.disableBlend(); GlStateManager.translate(53F, 0F, 0F); gui.mc.fontRendererObj.drawString((int)level + "%", i1, j1, 0xFFFFFF); GlStateManager.enableBlend(); GlStateManager.popMatrix(); GlStateManager.enableLighting(); GlStateManager.enableDepth(); RenderHelper.enableStandardItemLighting(); GlStateManager.enableRescaleNormal(); } } }