Readded the deprecated interface ICustomItemRenderer. Added method to enforce deprecation cross Minecraft versions.

This commit is contained in:
LexManos 2012-03-20 06:43:05 -07:00
parent 5d057ea49a
commit 7c7b6d8f46
5 changed files with 149 additions and 21 deletions

View File

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

View File

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

View File

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

View File

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

View File

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