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) {
Tessellator tessellator = Tessellator.instance;
if (renderBlocks.useInventoryTint) {

View File

@ -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);

View File

@ -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;