From d1cd667f4898b0fb235afddce5f213f1dbb0676a Mon Sep 17 00:00:00 2001 From: Tom Erik Date: Fri, 25 Mar 2016 20:54:25 +0100 Subject: [PATCH 1/4] draw item overlay scaled --- src/main/java/refinedstorage/gui/GuiBase.java | 26 +++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/src/main/java/refinedstorage/gui/GuiBase.java b/src/main/java/refinedstorage/gui/GuiBase.java index 6fcdc1e16..40c137eae 100755 --- a/src/main/java/refinedstorage/gui/GuiBase.java +++ b/src/main/java/refinedstorage/gui/GuiBase.java @@ -161,13 +161,35 @@ public abstract class GuiBase extends GuiContainer { itemRender.renderItemIntoGUI(stack, x, y); if (withOverlay) { - itemRender.renderItemOverlayIntoGUI(font, stack, x, y, message); - } + renderSlotOverlay(stack, message,x,y); + } zLevel = 0.0F; itemRender.zLevel = 0.0F; } + private void renderSlotOverlay(ItemStack stack, String text, int x, int y) { + if (text != null) { + GlStateManager.pushMatrix(); + GlStateManager.translate(x, y, 1); + GL11.glScalef(0.5f, 0.5f, 1); + + int stringWidth = fontRendererObj.getStringWidth(text); + GlStateManager.disableLighting(); + GlStateManager.disableRescaleNormal(); + GlStateManager.depthMask(false); + GlStateManager.enableBlend(); + GlStateManager.blendFunc(770, 771); + GlStateManager.disableDepth(); + fontRendererObj.drawString(text, 30-stringWidth, 22, 16777215); + GlStateManager.enableDepth(); + GlStateManager.enableTexture2D(); + GlStateManager.depthMask(true); + GlStateManager.enableLighting(); + GlStateManager.disableBlend(); + GlStateManager.popMatrix(); + } + } public void drawString(int x, int y, String message) { drawString(x, y, message, 4210752); } From 2ec0ec562929c16111f89576bb7c30160b85eb9b Mon Sep 17 00:00:00 2001 From: Tom Erik Date: Fri, 25 Mar 2016 21:22:25 +0100 Subject: [PATCH 2/4] render damage bar if needed --- src/main/java/refinedstorage/gui/GuiBase.java | 67 +++++++++++++++++-- 1 file changed, 63 insertions(+), 4 deletions(-) diff --git a/src/main/java/refinedstorage/gui/GuiBase.java b/src/main/java/refinedstorage/gui/GuiBase.java index 40c137eae..1ee28bec8 100755 --- a/src/main/java/refinedstorage/gui/GuiBase.java +++ b/src/main/java/refinedstorage/gui/GuiBase.java @@ -1,11 +1,18 @@ package refinedstorage.gui; +import net.minecraft.client.Minecraft; +import net.minecraft.client.entity.EntityPlayerSP; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.VertexBuffer; +import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; +import net.minecraft.util.math.MathHelper; import net.minecraft.util.text.translation.I18n; import org.lwjgl.opengl.GL11; import refinedstorage.RefinedStorage; @@ -161,7 +168,7 @@ public abstract class GuiBase extends GuiContainer { itemRender.renderItemIntoGUI(stack, x, y); if (withOverlay) { - renderSlotOverlay(stack, message,x,y); + renderSlotOverlay(stack, message,x,y); } zLevel = 0.0F; @@ -185,11 +192,63 @@ public abstract class GuiBase extends GuiContainer { GlStateManager.enableDepth(); GlStateManager.enableTexture2D(); GlStateManager.depthMask(true); - GlStateManager.enableLighting(); + GlStateManager.enableLighting(); GlStateManager.disableBlend(); GlStateManager.popMatrix(); - } - } + + } + + if (stack.getItem().showDurabilityBar(stack)) + { + double health = stack.getItem().getDurabilityForDisplay(stack); + int j = (int)Math.round(13.0D - health * 13.0D); + int i = (int)Math.round(255.0D - health * 255.0D); + GlStateManager.disableLighting(); + GlStateManager.disableDepth(); + GlStateManager.disableTexture2D(); + GlStateManager.disableAlpha(); + GlStateManager.disableBlend(); + Tessellator tessellator = Tessellator.getInstance(); + VertexBuffer vertexbuffer = tessellator.getBuffer(); + this.draw(vertexbuffer, x + 2, y + 13, 13, 2, 0, 0, 0, 255); + this.draw(vertexbuffer, x + 2, y + 13, 12, 1, (255 - i) / 4, 64, 0, 255); + this.draw(vertexbuffer, x + 2, y + 13, j, 1, 255 - i, i, 0, 255); + //GlStateManager.enableBlend(); // Forge: Disable Blend because it screws with a lot of things down the line. + GlStateManager.enableAlpha(); + GlStateManager.enableTexture2D(); + GlStateManager.enableLighting(); + GlStateManager.enableDepth(); + } + + EntityPlayerSP entityplayersp = Minecraft.getMinecraft().thePlayer; + float f = entityplayersp == null ? 0.0F : entityplayersp.getCooldownTracker().getCooldown(stack.getItem(), Minecraft.getMinecraft().getRenderPartialTicks()); + + if (f > 0.0F) + { + GlStateManager.disableLighting(); + GlStateManager.disableDepth(); + GlStateManager.disableTexture2D(); + Tessellator tessellator1 = Tessellator.getInstance(); + VertexBuffer vertexbuffer1 = tessellator1.getBuffer(); + this.draw(vertexbuffer1, x, y + MathHelper.floor_float(16.0F * (1.0F - f)), 16, MathHelper.ceiling_float_int(16.0F * f), 255, 255, 255, 127); + GlStateManager.enableTexture2D(); + GlStateManager.enableLighting(); + GlStateManager.enableDepth(); + } + + + } + + private void draw(VertexBuffer renderer, int x, int y, int width, int height, int red, int green, int blue, int alpha) + { + renderer.begin(7, DefaultVertexFormats.POSITION_COLOR); + renderer.pos((double)(x + 0), (double)(y + 0), 0.0D).color(red, green, blue, alpha).endVertex(); + renderer.pos((double)(x + 0), (double)(y + height), 0.0D).color(red, green, blue, alpha).endVertex(); + renderer.pos((double)(x + width), (double)(y + height), 0.0D).color(red, green, blue, alpha).endVertex(); + renderer.pos((double)(x + width), (double)(y + 0), 0.0D).color(red, green, blue, alpha).endVertex(); + Tessellator.getInstance().draw(); + } + public void drawString(int x, int y, String message) { drawString(x, y, message, 4210752); } From a9b243e67ff87740acfe74c9a173cf65efb993fc Mon Sep 17 00:00:00 2001 From: Tom Erik Date: Fri, 25 Mar 2016 21:31:42 +0100 Subject: [PATCH 3/4] shadow on text, use builtin function for damagebar --- src/main/java/refinedstorage/gui/GuiBase.java | 44 ++----------------- 1 file changed, 3 insertions(+), 41 deletions(-) diff --git a/src/main/java/refinedstorage/gui/GuiBase.java b/src/main/java/refinedstorage/gui/GuiBase.java index 1ee28bec8..65de345be 100755 --- a/src/main/java/refinedstorage/gui/GuiBase.java +++ b/src/main/java/refinedstorage/gui/GuiBase.java @@ -188,7 +188,7 @@ public abstract class GuiBase extends GuiContainer { GlStateManager.enableBlend(); GlStateManager.blendFunc(770, 771); GlStateManager.disableDepth(); - fontRendererObj.drawString(text, 30-stringWidth, 22, 16777215); + fontRendererObj.drawStringWithShadow(text, 30-stringWidth, 22, 16777215); GlStateManager.enableDepth(); GlStateManager.enableTexture2D(); GlStateManager.depthMask(true); @@ -197,46 +197,8 @@ public abstract class GuiBase extends GuiContainer { GlStateManager.popMatrix(); } - - if (stack.getItem().showDurabilityBar(stack)) - { - double health = stack.getItem().getDurabilityForDisplay(stack); - int j = (int)Math.round(13.0D - health * 13.0D); - int i = (int)Math.round(255.0D - health * 255.0D); - GlStateManager.disableLighting(); - GlStateManager.disableDepth(); - GlStateManager.disableTexture2D(); - GlStateManager.disableAlpha(); - GlStateManager.disableBlend(); - Tessellator tessellator = Tessellator.getInstance(); - VertexBuffer vertexbuffer = tessellator.getBuffer(); - this.draw(vertexbuffer, x + 2, y + 13, 13, 2, 0, 0, 0, 255); - this.draw(vertexbuffer, x + 2, y + 13, 12, 1, (255 - i) / 4, 64, 0, 255); - this.draw(vertexbuffer, x + 2, y + 13, j, 1, 255 - i, i, 0, 255); - //GlStateManager.enableBlend(); // Forge: Disable Blend because it screws with a lot of things down the line. - GlStateManager.enableAlpha(); - GlStateManager.enableTexture2D(); - GlStateManager.enableLighting(); - GlStateManager.enableDepth(); - } - - EntityPlayerSP entityplayersp = Minecraft.getMinecraft().thePlayer; - float f = entityplayersp == null ? 0.0F : entityplayersp.getCooldownTracker().getCooldown(stack.getItem(), Minecraft.getMinecraft().getRenderPartialTicks()); - - if (f > 0.0F) - { - GlStateManager.disableLighting(); - GlStateManager.disableDepth(); - GlStateManager.disableTexture2D(); - Tessellator tessellator1 = Tessellator.getInstance(); - VertexBuffer vertexbuffer1 = tessellator1.getBuffer(); - this.draw(vertexbuffer1, x, y + MathHelper.floor_float(16.0F * (1.0F - f)), 16, MathHelper.ceiling_float_int(16.0F * f), 255, 255, 255, 127); - GlStateManager.enableTexture2D(); - GlStateManager.enableLighting(); - GlStateManager.enableDepth(); - } - - + + itemRender.renderItemOverlayIntoGUI(fontRendererObj, stack, x, y, ""); } private void draw(VertexBuffer renderer, int x, int y, int width, int height, int red, int green, int blue, int alpha) From ff6d35b5065219236da762376fa0926938bb0526 Mon Sep 17 00:00:00 2001 From: Tom Erik Date: Fri, 25 Mar 2016 21:34:03 +0100 Subject: [PATCH 4/4] remove unused draw function --- src/main/java/refinedstorage/gui/GuiBase.java | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/main/java/refinedstorage/gui/GuiBase.java b/src/main/java/refinedstorage/gui/GuiBase.java index 65de345be..83c3b281d 100755 --- a/src/main/java/refinedstorage/gui/GuiBase.java +++ b/src/main/java/refinedstorage/gui/GuiBase.java @@ -201,16 +201,6 @@ public abstract class GuiBase extends GuiContainer { itemRender.renderItemOverlayIntoGUI(fontRendererObj, stack, x, y, ""); } - private void draw(VertexBuffer renderer, int x, int y, int width, int height, int red, int green, int blue, int alpha) - { - renderer.begin(7, DefaultVertexFormats.POSITION_COLOR); - renderer.pos((double)(x + 0), (double)(y + 0), 0.0D).color(red, green, blue, alpha).endVertex(); - renderer.pos((double)(x + 0), (double)(y + height), 0.0D).color(red, green, blue, alpha).endVertex(); - renderer.pos((double)(x + width), (double)(y + height), 0.0D).color(red, green, blue, alpha).endVertex(); - renderer.pos((double)(x + width), (double)(y + 0), 0.0D).color(red, green, blue, alpha).endVertex(); - Tessellator.getInstance().draw(); - } - public void drawString(int x, int y, String message) { drawString(x, y, message, 4210752); }