Small fix to decrease the number of glBindTexture calls that are immediately overridden.

This commit is contained in:
LexManos 2011-12-11 11:50:55 +00:00
parent e79b5d1937
commit 5c60c2246c
3 changed files with 47 additions and 28 deletions

View File

@ -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) { public static void renderCustomItem(ICustomItemRenderer customRenderer, RenderBlocks renderBlocks,int itemID, int meta, float f) {
Tessellator tessellator = Tessellator.instance; Tessellator tessellator = Tessellator.instance;
if (renderBlocks.useInventoryTint) { if (renderBlocks.useInventoryTint) {

View File

@ -19,24 +19,27 @@
+ ICustomItemRenderer customRenderer = MinecraftForgeClient.getCustomItemRenderer(itemstack.itemID); + ICustomItemRenderer customRenderer = MinecraftForgeClient.getCustomItemRenderer(itemstack.itemID);
+ +
+ if (customRenderer != null) { + if (customRenderer != null) {
+ GL11.glBindTexture(3553 /*GL_TEXTURE_2D*/, mc.renderEngine.getTexture("/terrain.png")); + String tex = ForgeHooksClient.getTexture("/terrain.png", itemstack.getItem());
+ ForgeHooksClient.overrideTexture (itemstack.getItem()); + GL11.glBindTexture(3553 /*GL_TEXTURE_2D*/, mc.renderEngine.getTexture(tex));
+ ForgeHooksClient.renderCustomItem(customRenderer, renderBlocksInstance, itemstack.itemID, itemstack.getItemDamage(), entityliving.getEntityBrightness(1.0F)); + ForgeHooksClient.renderCustomItem(customRenderer, renderBlocksInstance, itemstack.itemID, itemstack.getItemDamage(), entityliving.getEntityBrightness(1.0F));
+ } else if(itemstack.itemID < 256 && RenderBlocks.renderItemIn3d(Block.blocksList[itemstack.itemID].getRenderType())) + } else if(itemstack.itemID < 256 && RenderBlocks.renderItemIn3d(Block.blocksList[itemstack.itemID].getRenderType()))
{ {
GL11.glBindTexture(3553 /*GL_TEXTURE_2D*/, mc.renderEngine.getTexture("/terrain.png")); - GL11.glBindTexture(3553 /*GL_TEXTURE_2D*/, mc.renderEngine.getTexture("/terrain.png"));
+ ForgeHooksClient.overrideTexture (Block.blocksList[itemstack.itemID]); + 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); renderBlocksInstance.renderBlockAsItem(Block.blocksList[itemstack.itemID], itemstack.getItemDamage(), 1.0F);
} else } else
{ {
if(itemstack.itemID < 256) if(itemstack.itemID < 256)
{ {
GL11.glBindTexture(3553 /*GL_TEXTURE_2D*/, mc.renderEngine.getTexture("/terrain.png")); - GL11.glBindTexture(3553 /*GL_TEXTURE_2D*/, mc.renderEngine.getTexture("/terrain.png"));
+ ForgeHooksClient.overrideTexture (Block.blocksList[itemstack.itemID]); + String tex = ForgeHooksClient.getTexture("/terrain.png", Block.blocksList[itemstack.itemID]);
+ GL11.glBindTexture(3553 /*GL_TEXTURE_2D*/, mc.renderEngine.getTexture(tex));
} else } else
{ {
GL11.glBindTexture(3553 /*GL_TEXTURE_2D*/, mc.renderEngine.getTexture("/gui/items.png")); - GL11.glBindTexture(3553 /*GL_TEXTURE_2D*/, mc.renderEngine.getTexture("/gui/items.png"));
+ ForgeHooksClient.overrideTexture (Item.itemsList[itemstack.itemID]); + 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; Tessellator tessellator = Tessellator.instance;
int j = entityliving.getItemIcon(itemstack, i); int j = entityliving.getItemIcon(itemstack, i);

View File

@ -11,7 +11,7 @@
import java.util.Random; import java.util.Random;
import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL11;
@@ -54,10 +58,36 @@ @@ -54,10 +58,34 @@
} }
GL11.glTranslatef((float)d, (float)d1 + f2, (float)d2); GL11.glTranslatef((float)d, (float)d1 + f2, (float)d2);
GL11.glEnable(32826 /*GL_RESCALE_NORMAL_EXT*/); GL11.glEnable(32826 /*GL_RESCALE_NORMAL_EXT*/);
@ -21,8 +21,7 @@
+ +
+ if (customRenderer != null) { + if (customRenderer != null) {
+ GL11.glRotatef(f3, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(f3, 0.0F, 1.0F, 0.0F);
+ loadTexture("/terrain.png"); + loadTexture(ForgeHooksClient.getTexture("/terrain.png", itemstack.getItem()));
+ ForgeHooksClient.overrideTexture(itemstack.getItem());
+ float f4 = 0.25F; + float f4 = 0.25F;
+ f4 = 0.5F; + f4 = 0.5F;
+ GL11.glScalef(f4, f4, f4); + GL11.glScalef(f4, f4, f4);
@ -44,24 +43,25 @@
+ } else if(itemstack.itemID < 256 && RenderBlocks.renderItemIn3d(Block.blocksList[itemstack.itemID].getRenderType())) + } else if(itemstack.itemID < 256 && RenderBlocks.renderItemIn3d(Block.blocksList[itemstack.itemID].getRenderType()))
{ {
GL11.glRotatef(f3, 0.0F, 1.0F, 0.0F); GL11.glRotatef(f3, 0.0F, 1.0F, 0.0F);
loadTexture("/terrain.png"); - loadTexture("/terrain.png");
+ ForgeHooksClient.overrideTexture(Block.blocksList[itemstack.itemID]); + loadTexture(ForgeHooksClient.getTexture("/terrain.png", Block.blocksList[itemstack.itemID]));
float f4 = 0.25F; float f4 = 0.25F;
int j = Block.blocksList[itemstack.itemID].getRenderType(); int j = Block.blocksList[itemstack.itemID].getRenderType();
if(j == 1 || j == 19 || j == 12 || j == 2) 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) if(itemstack.itemID < 256)
{ {
loadTexture("/terrain.png"); - loadTexture("/terrain.png");
+ ForgeHooksClient.overrideTexture(Block.blocksList[itemstack.itemID]); + loadTexture(ForgeHooksClient.getTexture("/terrain.png", Block.blocksList[itemstack.itemID]));
} else } else
{ {
loadTexture("/gui/items.png"); - loadTexture("/gui/items.png");
+ ForgeHooksClient.overrideTexture(Item.itemsList[itemstack.itemID]); + loadTexture(ForgeHooksClient.getTexture("/gui/items.png", Item.itemsList[itemstack.itemID]));
} }
if(field_27004_a) 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) 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); + ICustomItemRenderer customRenderer = MinecraftForgeClient.getCustomItemRenderer(i);
+ if (customRenderer != null) { + if (customRenderer != null) {
+ int j1 = i; + 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]; + Item item = Item.itemsList[i];
+ ForgeHooksClient.overrideTexture (Item.itemsList [i]);
+ GL11.glPushMatrix(); + GL11.glPushMatrix();
+ GL11.glTranslatef(l - 2, i1 + 3, -3F); + GL11.glTranslatef(l - 2, i1 + 3, -3F);
+ GL11.glScalef(10F, 10F, 10F); + GL11.glScalef(10F, 10F, 10F);
@ -95,20 +95,24 @@
+ } else if(i < 256 && RenderBlocks.renderItemIn3d(Block.blocksList[i].getRenderType())) + } else if(i < 256 && RenderBlocks.renderItemIn3d(Block.blocksList[i].getRenderType()))
{ {
int j1 = i; int j1 = i;
renderengine.bindTexture(renderengine.getTexture("/terrain.png")); - renderengine.bindTexture(renderengine.getTexture("/terrain.png"));
+ ForgeHooksClient.overrideTexture (Block.blocksList[i]); + String tex = ForgeHooksClient.getTexture("/terrain.png", Block.blocksList[i]);
+ renderengine.bindTexture(renderengine.getTexture(tex));
Block block = Block.blocksList[j1]; Block block = Block.blocksList[j1];
GL11.glPushMatrix(); GL11.glPushMatrix();
GL11.glTranslatef(l - 2, i1 + 3, -3F + zLevel); GL11.glTranslatef(l - 2, i1 + 3, -3F + zLevel);
@@ -215,9 +274,11 @@ @@ -214,10 +269,12 @@
GL11.glDisable(2896 /*GL_LIGHTING*/);
if(i < 256) if(i < 256)
{ {
renderengine.bindTexture(renderengine.getTexture("/terrain.png")); - renderengine.bindTexture(renderengine.getTexture("/terrain.png"));
+ ForgeHooksClient.overrideTexture (Block.blocksList[i]); + String tex = ForgeHooksClient.getTexture("/terrain.png", Block.blocksList[i]);
+ renderengine.bindTexture(renderengine.getTexture(tex));
} else } else
{ {
renderengine.bindTexture(renderengine.getTexture("/gui/items.png")); - renderengine.bindTexture(renderengine.getTexture("/gui/items.png"));
+ ForgeHooksClient.overrideTexture(Item.itemsList[i]); + String tex = ForgeHooksClient.getTexture("/gui/items.png", Item.itemsList[i]);
+ renderengine.bindTexture(renderengine.getTexture(tex));
} }
int k1 = Item.itemsList[i].getColorFromDamage(j); int k1 = Item.itemsList[i].getColorFromDamage(j);
float f = (float)(k1 >> 16 & 0xff) / 255F; float f = (float)(k1 >> 16 & 0xff) / 255F;