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 16b381780..bc4382d88 100644 --- a/forge/forge_client/src/net/minecraft/src/forge/ForgeHooksClient.java +++ b/forge/forge_client/src/net/minecraft/src/forge/ForgeHooksClient.java @@ -251,6 +251,24 @@ public class ForgeHooksClient return def; } } + + @Deprecated //Deprecated in favor of new more Robust IItemRenderer, Remove in next MC version + public static void renderCustomItem(ICustomItemRenderer customRenderer, RenderBlocks renderBlocks, int itemID, int metadata, float brightness) + { + MinecraftForgeClient.checkMinecraftVersion("Minecraft Minecraft 1.2.3", "Deprecated call to MC 1.2.3 ForgeHooksClient.renderCustomItem on: %version%"); + Tessellator tessellator = Tessellator.instance; + if (renderBlocks.useInventoryTint) + { + int j = 0xffffff;//block.getRenderColor(i); + float f1 = (float) (j >> 16 & 0xff) / 255F; + float f3 = (float) (j >> 8 & 0xff) / 255F; + float f5 = (float) (j & 0xff) / 255F; + GL11.glColor4f(f1 * brightness, f3 * brightness, f5 * brightness, 1.0F); + } + + //ModLoader.RenderInvBlock(this, block, i, k); + customRenderer.renderInventory(renderBlocks, itemID, metadata); + } public static void renderEntityItem(IItemRenderer customRenderer, RenderBlocks renderBlocks, EntityItem item) { diff --git a/forge/forge_client/src/net/minecraft/src/forge/ICustomItemRenderer.java b/forge/forge_client/src/net/minecraft/src/forge/ICustomItemRenderer.java new file mode 100644 index 000000000..6143ada81 --- /dev/null +++ b/forge/forge_client/src/net/minecraft/src/forge/ICustomItemRenderer.java @@ -0,0 +1,10 @@ +package net.minecraft.src.forge; + +import net.minecraft.src.RenderBlocks; + +@Deprecated //Deprecated in favor of new more Robust IItemRenderer, Remove in next MC version +public interface ICustomItemRenderer +{ + @Deprecated + public void renderInventory(RenderBlocks render, int itemID, int metadata); +} \ No newline at end of file diff --git a/forge/forge_client/src/net/minecraft/src/forge/MinecraftForgeClient.java b/forge/forge_client/src/net/minecraft/src/forge/MinecraftForgeClient.java index 4d7c19965..ca9d0bb82 100755 --- a/forge/forge_client/src/net/minecraft/src/forge/MinecraftForgeClient.java +++ b/forge/forge_client/src/net/minecraft/src/forge/MinecraftForgeClient.java @@ -5,6 +5,8 @@ package net.minecraft.src.forge; +import org.lwjgl.opengl.Display; + import net.minecraft.src.Block; import net.minecraft.src.Item; import net.minecraft.src.ItemStack; @@ -85,6 +87,23 @@ public class MinecraftForgeClient return ForgeHooksClient.renderPass; } + @Deprecated //Deprecated in favor of new more Robust IItemRenderer, Remove in next MC version + private static ICustomItemRenderer[] customItemRenderersOld = new ICustomItemRenderer[Item.itemsList.length]; + + @Deprecated //Deprecated in favor of new more Robust IItemRenderer, Remove in next MC version + public static void registerCustomItemRenderer(int itemID, ICustomItemRenderer renderer) + { + MinecraftForgeClient.checkMinecraftVersion("Minecraft Minecraft 1.2.3", "Deprecated call to MC 1.2.3 MinecraftForgeClient.registerCustomItemRenderer on: %version%"); + customItemRenderersOld[itemID] = renderer; + } + + @Deprecated //Deprecated in favor of new more Robust IItemRenderer, Remove in next MC version + public static ICustomItemRenderer getCustomItemRenderer (int itemID) + { + MinecraftForgeClient.checkMinecraftVersion("Minecraft Minecraft 1.2.3", "Deprecated call to MC 1.2.3 MinecraftForgeClient.getCustomItemRenderer on: %version%"); + return customItemRenderersOld[itemID]; + } + private static IItemRenderer[] customItemRenderers = new IItemRenderer[Item.itemsList.length]; /** Register a custom renderer for a specific item. This can be used to @@ -123,4 +142,20 @@ public class MinecraftForgeClient { init(); } + + /*** + * This is a function that is used to enforce deprecation of code. + * It checks the current Display's title against the passed in argument. + * If they do not match (such is the case in different versionf of MC) it exits the process with a error + * + * @param version The version to find, usually "Minecraft Minecraft 1.2.3" + * @param message The error message to display int eh crash log + */ + public static void checkMinecraftVersion(String version, String message) + { + if (!Display.getTitle().equals(version)) + { + MinecraftForge.killMinecraft("Minecraft Forge", message.replaceAll("%version%", Display.getTitle())); + } + } } diff --git a/forge/patches/minecraft/net/minecraft/src/ItemRenderer.java.patch b/forge/patches/minecraft/net/minecraft/src/ItemRenderer.java.patch index 8214b898f..5485ab066 100644 --- a/forge/patches/minecraft/net/minecraft/src/ItemRenderer.java.patch +++ b/forge/patches/minecraft/net/minecraft/src/ItemRenderer.java.patch @@ -1,10 +1,11 @@ --- ../src_base/minecraft/net/minecraft/src/ItemRenderer.java 0000-00-00 00:00:00.000000000 -0000 +++ ../src_work/minecraft/net/minecraft/src/ItemRenderer.java 0000-00-00 00:00:00.000000000 -0000 -@@ -1,6 +1,11 @@ +@@ -1,6 +1,12 @@ package net.minecraft.src; import net.minecraft.client.Minecraft; +import net.minecraft.src.forge.ForgeHooksClient; ++import net.minecraft.src.forge.ICustomItemRenderer; +import net.minecraft.src.forge.IItemRenderer; +import net.minecraft.src.forge.ItemRenderType; +import net.minecraft.src.forge.MinecraftForgeClient; @@ -12,21 +13,29 @@ import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; -@@ -33,21 +38,27 @@ +@@ -33,21 +39,35 @@ public void renderItem(EntityLiving par1EntityLiving, ItemStack par2ItemStack, int par3) { GL11.glPushMatrix(); -+ IItemRenderer customRenderer = MinecraftForgeClient.getItemRenderer(par2ItemStack, ItemRenderType.EQUIPPED); ++ IItemRenderer customRenderer = MinecraftForgeClient.getItemRenderer(par2ItemStack, ItemRenderType.EQUIPPED); ++ ICustomItemRenderer customRendererOld = MinecraftForgeClient.getCustomItemRenderer(par2ItemStack.itemID); - if (par2ItemStack.itemID < 256 && RenderBlocks.renderItemIn3d(Block.blocksList[par2ItemStack.itemID].getRenderType())) + if (customRenderer != null) - { -- GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.mc.renderEngine.getTexture("/terrain.png")); ++ { + GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.mc.renderEngine.getTexture(ForgeHooksClient.getTexture(par2ItemStack.itemID < 256 ? "/terrain.png" : "/gui/items.png", par2ItemStack.getItem()))); + ForgeHooksClient.renderEquippedItem(customRenderer, renderBlocksInstance, par1EntityLiving, par2ItemStack); + } -+ else if (par2ItemStack.itemID < 256 && RenderBlocks.renderItemIn3d(Block.blocksList[par2ItemStack.itemID].getRenderType())) ++ //Deprecation Start ++ else if (customRendererOld != null) + { ++ GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.mc.renderEngine.getTexture(ForgeHooksClient.getTexture("/terrain.png", par2ItemStack.getItem()))); ++ ForgeHooksClient.renderCustomItem(customRendererOld, renderBlocksInstance, par2ItemStack.itemID, par2ItemStack.getItemDamage(), par1EntityLiving.getEntityBrightness(1.0F)); ++ } ++ //Deprecation End ++ else if (par2ItemStack.itemID < 256 && RenderBlocks.renderItemIn3d(Block.blocksList[par2ItemStack.itemID].getRenderType())) + { +- GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.mc.renderEngine.getTexture("/terrain.png")); + GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.mc.renderEngine.getTexture(ForgeHooksClient.getTexture("/terrain.png", par2ItemStack.getItem()))); this.renderBlocksInstance.renderBlockAsItem(Block.blocksList[par2ItemStack.itemID], par2ItemStack.getItemDamage(), 1.0F); } diff --git a/forge/patches/minecraft/net/minecraft/src/RenderItem.java.patch b/forge/patches/minecraft/net/minecraft/src/RenderItem.java.patch index b50b5ff58..5fcdeddac 100644 --- a/forge/patches/minecraft/net/minecraft/src/RenderItem.java.patch +++ b/forge/patches/minecraft/net/minecraft/src/RenderItem.java.patch @@ -1,11 +1,12 @@ --- ../src_base/minecraft/net/minecraft/src/RenderItem.java 0000-00-00 00:00:00.000000000 -0000 +++ ../src_work/minecraft/net/minecraft/src/RenderItem.java 0000-00-00 00:00:00.000000000 -0000 -@@ -1,6 +1,12 @@ +@@ -1,6 +1,13 @@ package net.minecraft.src; import java.util.Random; + +import net.minecraft.src.forge.ForgeHooksClient; ++import net.minecraft.src.forge.ICustomItemRenderer; +import net.minecraft.src.forge.IItemRenderer; +import net.minecraft.src.forge.ItemRenderType; +import net.minecraft.src.forge.MinecraftForgeClient; @@ -13,14 +14,16 @@ import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; -@@ -55,10 +61,57 @@ +@@ -55,10 +62,80 @@ float var18; float var23; - if (var10.itemID < 256 && RenderBlocks.renderItemIn3d(Block.blocksList[var10.itemID].getRenderType())) + IItemRenderer customRenderer = MinecraftForgeClient.getItemRenderer(var10, ItemRenderType.ENTITY); ++ ICustomItemRenderer customRendererOld = MinecraftForgeClient.getCustomItemRenderer(var10.itemID); ++ + if (customRenderer != null) - { ++ { + if (customRenderer.useEntityItemRotationEffect(var10)) + { + GL11.glRotatef(var12, 0.0F, 1.0F, 0.0F); @@ -65,15 +68,36 @@ + } + + } -+ else if (var10.itemID < 256 && RenderBlocks.renderItemIn3d(Block.blocksList[var10.itemID].getRenderType())) ++ //Deprecation Start ++ else if (customRendererOld != null) + { ++ GL11.glRotatef(var12, 0.0F, 1.0F, 0.0F); ++ loadTexture(ForgeHooksClient.getTexture("/terrain.png", var10.getItem())); ++ GL11.glScalef(0.5F, 0.5F, 0.5F); ++ for(int j = 0; j < var13; j++) ++ { ++ GL11.glPushMatrix(); ++ if (j > 0) ++ { ++ GL11.glTranslatef( ++ ((random.nextFloat() * 2.0F - 1.0F) * 0.2F) / 0.5F, ++ ((random.nextFloat() * 2.0F - 1.0F) * 0.2F) / 0.5F, ++ ((random.nextFloat() * 2.0F - 1.0F) * 0.2F) / 0.5F); ++ } ++ ForgeHooksClient.renderCustomItem(customRendererOld, renderBlocks, var10.itemID, var10.getItemDamage(), par1EntityItem.getEntityBrightness(par9)); ++ GL11.glPopMatrix(); ++ } ++ } ++ //Deprecation End ++ else if (var10.itemID < 256 && RenderBlocks.renderItemIn3d(Block.blocksList[var10.itemID].getRenderType())) + { GL11.glRotatef(var12, 0.0F, 1.0F, 0.0F); - this.loadTexture("/terrain.png"); + this.loadTexture(ForgeHooksClient.getTexture("/terrain.png", Block.blocksList[var10.itemID])); float var21 = 0.25F; var15 = Block.blocksList[var10.itemID].getRenderType(); -@@ -94,7 +147,7 @@ +@@ -94,7 +171,7 @@ if (var10.getItem().func_46058_c()) { GL11.glScalef(0.5F, 0.5F, 0.5F); @@ -82,7 +106,7 @@ for (var14 = 0; var14 <= 1; ++var14) { -@@ -120,11 +173,11 @@ +@@ -120,11 +197,11 @@ if (var10.itemID < 256) { @@ -96,16 +120,49 @@ } if (this.field_27004_a) -@@ -189,7 +242,7 @@ - - if (par3 < 256 && RenderBlocks.renderItemIn3d(Block.blocksList[par3].getRenderType())) +@@ -186,10 +263,38 @@ + float var11; + float var12; + float var13; +- +- if (par3 < 256 && RenderBlocks.renderItemIn3d(Block.blocksList[par3].getRenderType())) ++ ++ //Deprecation Start ++ ICustomItemRenderer customRenderer = MinecraftForgeClient.getCustomItemRenderer(par3); ++ ++ if (customRenderer != null) ++ { ++ par2RenderEngine.bindTexture(par2RenderEngine.getTexture(ForgeHooksClient.getTexture("/terrain.png", Item.itemsList[par3]))); ++ GL11.glPushMatrix(); ++ GL11.glTranslatef((float)(par6 - 2), (float)(par7 + 3), -3.0F + this.zLevel); ++ GL11.glScalef(10F, 10F, 10F); ++ GL11.glTranslatef(1.0F, 0.5F, 1.0F); ++ GL11.glScalef(1.0F, 1.0F, -1F); ++ GL11.glRotatef(210F, 1.0F, 0.0F, 0.0F); ++ GL11.glRotatef(45F, 0.0F, 1.0F, 0.0F); ++ int l1 = Item.itemsList[par3].getColorFromDamage(par4, 0); ++ float f2 = (float)(l1 >> 16 & 0xff) / 255F; ++ float f4 = (float)(l1 >> 8 & 0xff) / 255F; ++ float f5 = (float)(l1 & 0xff) / 255F; ++ if(field_27004_a) ++ { ++ GL11.glColor4f(f2, f4, f5, 1.0F); ++ } ++ GL11.glRotatef(-90F, 0.0F, 1.0F, 0.0F); ++ renderBlocks.useInventoryTint = field_27004_a; ++ ForgeHooksClient.renderCustomItem(customRenderer, renderBlocks, par3, par4, 1.0F); ++ renderBlocks.useInventoryTint = true; ++ GL11.glPopMatrix(); ++ } ++ //Deprecation End ++ else if (par3 < 256 && RenderBlocks.renderItemIn3d(Block.blocksList[par3].getRenderType())) { - par2RenderEngine.bindTexture(par2RenderEngine.getTexture("/terrain.png")); + par2RenderEngine.bindTexture(par2RenderEngine.getTexture(ForgeHooksClient.getTexture("/terrain.png", Block.blocksList[par3]))); Block var15 = Block.blocksList[par3]; GL11.glPushMatrix(); GL11.glTranslatef((float)(par6 - 2), (float)(par7 + 3), -3.0F + this.zLevel); -@@ -221,7 +274,7 @@ +@@ -221,7 +326,7 @@ if (Item.itemsList[par3].func_46058_c()) { GL11.glDisable(GL11.GL_LIGHTING); @@ -114,7 +171,7 @@ for (var8 = 0; var8 <= 1; ++var8) { -@@ -247,11 +300,11 @@ +@@ -247,11 +352,11 @@ if (par3 < 256) { @@ -128,7 +185,7 @@ } var8 = Item.itemsList[par3].getColorFromDamage(par4, 0); -@@ -279,8 +332,59 @@ +@@ -279,7 +384,58 @@ { if (par3ItemStack != null) { @@ -165,7 +222,7 @@ + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glPushMatrix(); + GL11.glTranslatef((float)(par4), (float)(par5), -3.0F + this.zLevel); - ++ + int color = Item.itemsList[par3ItemStack.itemID].getColorFromDamage(par4, 0); + float r = (float)(color >> 16 & 255) / 255.0F; + float g = (float)(color >> 8 & 255) / 255.0F; @@ -185,7 +242,6 @@ + { + this.drawItemIntoGui(par1FontRenderer, par2RenderEngine, par3ItemStack.itemID, par3ItemStack.getItemDamage(), par3ItemStack.getIconIndex(), par4, par5); + } -+ + if (par3ItemStack != null && par3ItemStack.hasEffect()) { - GL11.glDepthFunc(GL11.GL_GREATER);