From 5c60c2246cc4752c82a7e48da5d17e29d4f773e7 Mon Sep 17 00:00:00 2001 From: LexManos Date: Sun, 11 Dec 2011 11:50:55 +0000 Subject: [PATCH] Small fix to decrease the number of glBindTexture calls that are immediately overridden. --- .../minecraft/src/forge/ForgeHooksClient.java | 12 +++++ .../net/minecraft/src/ItemRenderer.java.patch | 19 ++++---- .../net/minecraft/src/RenderItem.java.patch | 44 ++++++++++--------- 3 files changed, 47 insertions(+), 28 deletions(-) diff --git a/forge/forge_client/src/net/minecraft/src/forge/ForgeHooksClient.java b/forge/forge_client/src/net/minecraft/src/forge/ForgeHooksClient.java index af3871964..e3c892e8b 100644 --- a/forge/forge_client/src/net/minecraft/src/forge/ForgeHooksClient.java +++ b/forge/forge_client/src/net/minecraft/src/forge/ForgeHooksClient.java @@ -160,6 +160,18 @@ public class ForgeHooksClient { } } + public static String getTexture(String def, Object item) + { + if (item instanceof ITextureProvider) + { + return ((ITextureProvider)item).getTextureFile(); + } + else + { + return def; + } + } + public static void renderCustomItem(ICustomItemRenderer customRenderer, RenderBlocks renderBlocks,int itemID, int meta, float f) { Tessellator tessellator = Tessellator.instance; if (renderBlocks.useInventoryTint) { diff --git a/forge/patches/minecraft/net/minecraft/src/ItemRenderer.java.patch b/forge/patches/minecraft/net/minecraft/src/ItemRenderer.java.patch index a38f491e9..a5dbc7acf 100644 --- a/forge/patches/minecraft/net/minecraft/src/ItemRenderer.java.patch +++ b/forge/patches/minecraft/net/minecraft/src/ItemRenderer.java.patch @@ -19,24 +19,27 @@ + ICustomItemRenderer customRenderer = MinecraftForgeClient.getCustomItemRenderer(itemstack.itemID); + + if (customRenderer != null) { -+ GL11.glBindTexture(3553 /*GL_TEXTURE_2D*/, mc.renderEngine.getTexture("/terrain.png")); -+ ForgeHooksClient.overrideTexture (itemstack.getItem()); ++ String tex = ForgeHooksClient.getTexture("/terrain.png", itemstack.getItem()); ++ GL11.glBindTexture(3553 /*GL_TEXTURE_2D*/, mc.renderEngine.getTexture(tex)); + ForgeHooksClient.renderCustomItem(customRenderer, renderBlocksInstance, itemstack.itemID, itemstack.getItemDamage(), entityliving.getEntityBrightness(1.0F)); + } else if(itemstack.itemID < 256 && RenderBlocks.renderItemIn3d(Block.blocksList[itemstack.itemID].getRenderType())) { - GL11.glBindTexture(3553 /*GL_TEXTURE_2D*/, mc.renderEngine.getTexture("/terrain.png")); -+ ForgeHooksClient.overrideTexture (Block.blocksList[itemstack.itemID]); +- GL11.glBindTexture(3553 /*GL_TEXTURE_2D*/, mc.renderEngine.getTexture("/terrain.png")); ++ String tex = ForgeHooksClient.getTexture("/terrain.png", Block.blocksList[itemstack.itemID]); ++ GL11.glBindTexture(3553 /*GL_TEXTURE_2D*/, mc.renderEngine.getTexture(tex)); renderBlocksInstance.renderBlockAsItem(Block.blocksList[itemstack.itemID], itemstack.getItemDamage(), 1.0F); } else { if(itemstack.itemID < 256) { - GL11.glBindTexture(3553 /*GL_TEXTURE_2D*/, mc.renderEngine.getTexture("/terrain.png")); -+ ForgeHooksClient.overrideTexture (Block.blocksList[itemstack.itemID]); +- GL11.glBindTexture(3553 /*GL_TEXTURE_2D*/, mc.renderEngine.getTexture("/terrain.png")); ++ String tex = ForgeHooksClient.getTexture("/terrain.png", Block.blocksList[itemstack.itemID]); ++ GL11.glBindTexture(3553 /*GL_TEXTURE_2D*/, mc.renderEngine.getTexture(tex)); } else { - GL11.glBindTexture(3553 /*GL_TEXTURE_2D*/, mc.renderEngine.getTexture("/gui/items.png")); -+ ForgeHooksClient.overrideTexture (Item.itemsList[itemstack.itemID]); +- GL11.glBindTexture(3553 /*GL_TEXTURE_2D*/, mc.renderEngine.getTexture("/gui/items.png")); ++ String tex = ForgeHooksClient.getTexture("/gui/items.png", Item.itemsList[itemstack.itemID]); ++ GL11.glBindTexture(3553 /*GL_TEXTURE_2D*/, mc.renderEngine.getTexture(tex)); } Tessellator tessellator = Tessellator.instance; int j = entityliving.getItemIcon(itemstack, i); diff --git a/forge/patches/minecraft/net/minecraft/src/RenderItem.java.patch b/forge/patches/minecraft/net/minecraft/src/RenderItem.java.patch index 08da9b35e..59bf5a751 100644 --- a/forge/patches/minecraft/net/minecraft/src/RenderItem.java.patch +++ b/forge/patches/minecraft/net/minecraft/src/RenderItem.java.patch @@ -11,7 +11,7 @@ import java.util.Random; import org.lwjgl.opengl.GL11; -@@ -54,10 +58,36 @@ +@@ -54,10 +58,34 @@ } GL11.glTranslatef((float)d, (float)d1 + f2, (float)d2); GL11.glEnable(32826 /*GL_RESCALE_NORMAL_EXT*/); @@ -21,8 +21,7 @@ + + if (customRenderer != null) { + GL11.glRotatef(f3, 0.0F, 1.0F, 0.0F); -+ loadTexture("/terrain.png"); -+ ForgeHooksClient.overrideTexture(itemstack.getItem()); ++ loadTexture(ForgeHooksClient.getTexture("/terrain.png", itemstack.getItem())); + float f4 = 0.25F; + f4 = 0.5F; + GL11.glScalef(f4, f4, f4); @@ -44,24 +43,25 @@ + } else if(itemstack.itemID < 256 && RenderBlocks.renderItemIn3d(Block.blocksList[itemstack.itemID].getRenderType())) { GL11.glRotatef(f3, 0.0F, 1.0F, 0.0F); - loadTexture("/terrain.png"); -+ ForgeHooksClient.overrideTexture(Block.blocksList[itemstack.itemID]); +- loadTexture("/terrain.png"); ++ loadTexture(ForgeHooksClient.getTexture("/terrain.png", Block.blocksList[itemstack.itemID])); float f4 = 0.25F; int j = Block.blocksList[itemstack.itemID].getRenderType(); if(j == 1 || j == 19 || j == 12 || j == 2) -@@ -108,9 +138,11 @@ +@@ -107,10 +135,10 @@ + int i = itemstack.getIconIndex(); if(itemstack.itemID < 256) { - loadTexture("/terrain.png"); -+ ForgeHooksClient.overrideTexture(Block.blocksList[itemstack.itemID]); +- loadTexture("/terrain.png"); ++ loadTexture(ForgeHooksClient.getTexture("/terrain.png", Block.blocksList[itemstack.itemID])); } else { - loadTexture("/gui/items.png"); -+ ForgeHooksClient.overrideTexture(Item.itemsList[itemstack.itemID]); +- loadTexture("/gui/items.png"); ++ loadTexture(ForgeHooksClient.getTexture("/gui/items.png", Item.itemsList[itemstack.itemID])); } if(field_27004_a) { -@@ -162,10 +194,37 @@ +@@ -162,10 +190,37 @@ public void drawItemIntoGui(FontRenderer fontrenderer, RenderEngine renderengine, int i, int j, int k, int l, int i1) { @@ -69,9 +69,9 @@ + ICustomItemRenderer customRenderer = MinecraftForgeClient.getCustomItemRenderer(i); + if (customRenderer != null) { + int j1 = i; -+ renderengine.bindTexture(renderengine.getTexture("/terrain.png")); ++ String tex = ForgeHooksClient.getTexture("/terrain.png", Item.itemsList [i]); ++ renderengine.bindTexture(renderengine.getTexture(tex)); + Item item = Item.itemsList[i]; -+ ForgeHooksClient.overrideTexture (Item.itemsList [i]); + GL11.glPushMatrix(); + GL11.glTranslatef(l - 2, i1 + 3, -3F); + GL11.glScalef(10F, 10F, 10F); @@ -95,20 +95,24 @@ + } else if(i < 256 && RenderBlocks.renderItemIn3d(Block.blocksList[i].getRenderType())) { int j1 = i; - renderengine.bindTexture(renderengine.getTexture("/terrain.png")); -+ ForgeHooksClient.overrideTexture (Block.blocksList[i]); +- renderengine.bindTexture(renderengine.getTexture("/terrain.png")); ++ String tex = ForgeHooksClient.getTexture("/terrain.png", Block.blocksList[i]); ++ renderengine.bindTexture(renderengine.getTexture(tex)); Block block = Block.blocksList[j1]; GL11.glPushMatrix(); GL11.glTranslatef(l - 2, i1 + 3, -3F + zLevel); -@@ -215,9 +274,11 @@ +@@ -214,10 +269,12 @@ + GL11.glDisable(2896 /*GL_LIGHTING*/); if(i < 256) { - renderengine.bindTexture(renderengine.getTexture("/terrain.png")); -+ ForgeHooksClient.overrideTexture (Block.blocksList[i]); +- renderengine.bindTexture(renderengine.getTexture("/terrain.png")); ++ String tex = ForgeHooksClient.getTexture("/terrain.png", Block.blocksList[i]); ++ renderengine.bindTexture(renderengine.getTexture(tex)); } else { - renderengine.bindTexture(renderengine.getTexture("/gui/items.png")); -+ ForgeHooksClient.overrideTexture(Item.itemsList[i]); +- renderengine.bindTexture(renderengine.getTexture("/gui/items.png")); ++ String tex = ForgeHooksClient.getTexture("/gui/items.png", Item.itemsList[i]); ++ renderengine.bindTexture(renderengine.getTexture(tex)); } int k1 = Item.itemsList[i].getColorFromDamage(j); float f = (float)(k1 >> 16 & 0xff) / 255F;