Merge pull request #15 from newthead/master
Improved Custom Item Render Interface
This commit is contained in:
commit
952fb54a44
|
@ -16,6 +16,8 @@ import net.minecraft.src.ItemStack;
|
|||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import java.util.*;
|
||||
import net.minecraft.src.*;
|
||||
import org.lwjgl.opengl.GL12;
|
||||
|
||||
public class ForgeHooksClient
|
||||
{
|
||||
|
@ -250,20 +252,37 @@ public class ForgeHooksClient
|
|||
}
|
||||
}
|
||||
|
||||
public static void renderCustomItem(ICustomItemRenderer customRenderer, RenderBlocks renderBlocks, int itemID, int metadata, float brightness)
|
||||
public static void renderEntityItem(IItemRenderer customRenderer, RenderBlocks renderBlocks, EntityItem item)
|
||||
{
|
||||
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);
|
||||
customRenderer.renderEntityItem(renderBlocks, item);
|
||||
}
|
||||
|
||||
//ModLoader.RenderInvBlock(this, block, i, k);
|
||||
customRenderer.renderInventory(renderBlocks, itemID, metadata);
|
||||
public static void renderEquippedItem(IItemRenderer customRenderer, RenderBlocks renderBlocks, EntityLiving entity, ItemStack item)
|
||||
{
|
||||
if (customRenderer.renderEquippedItemAsBlock(item))
|
||||
{
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslatef(-0.5F, -0.5F, -0.5F);
|
||||
customRenderer.renderEquippedItem(renderBlocks, entity, item);
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
else
|
||||
{
|
||||
GL11.glPushMatrix();
|
||||
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
|
||||
GL11.glTranslatef(0.0F, -0.3F, 0.0F);
|
||||
GL11.glScalef(1.5F, 1.5F, 1.5F);
|
||||
GL11.glRotatef(50.0F, 0.0F, 1.0F, 0.0F);
|
||||
GL11.glRotatef(335.0F, 0.0F, 0.0F, 1.0F);
|
||||
GL11.glTranslatef(-0.9375F, -0.0625F, 0.0F);
|
||||
customRenderer.renderEquippedItem(renderBlocks, entity, item);
|
||||
GL11.glDisable(GL12.GL_RESCALE_NORMAL);
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
}
|
||||
|
||||
public static void renderInventoryItem(IItemRenderer customRenderer, RenderBlocks renderBlocks, ItemStack item)
|
||||
{
|
||||
customRenderer.renderInventoryItem(renderBlocks, item);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
package net.minecraft.src.forge;
|
||||
|
||||
import net.minecraft.src.RenderBlocks;
|
||||
|
||||
public interface ICustomItemRenderer
|
||||
{
|
||||
public void renderInventory(RenderBlocks render, int itemID, int metadata);
|
||||
}
|
|
@ -0,0 +1,78 @@
|
|||
package net.minecraft.src.forge;
|
||||
|
||||
import net.minecraft.src.EntityItem;
|
||||
import net.minecraft.src.EntityLiving;
|
||||
import net.minecraft.src.ItemStack;
|
||||
import net.minecraft.src.RenderBlocks;
|
||||
|
||||
public interface IItemRenderer
|
||||
{
|
||||
/** Checks if this renderer should handle a specific item's render type
|
||||
* @param item The item we are trying to render
|
||||
* @param type A render type to check if this renderer handles
|
||||
* @return true if this renderer should handle the given render type,
|
||||
* otherwise false
|
||||
*/
|
||||
public boolean handleRenderType(ItemStack item, ItemRenderType type);
|
||||
|
||||
/** Called to render an in-world item, e.g. one that has been thrown or
|
||||
* dropped. The appropriate OpenGL transformations and scaling have already
|
||||
* been applied, so Tessellator location (0,0,0) is the center of the
|
||||
* EntityItem.
|
||||
* @param render The RenderBlocks instance
|
||||
* @param item The in-world item to be rendered
|
||||
*/
|
||||
public void renderEntityItem(RenderBlocks render, EntityItem item);
|
||||
|
||||
/** Determines if a rotation effect should be used when rendering an
|
||||
* EntityItem, like most default blocks do.
|
||||
* @param item the item we are trying to render
|
||||
* @return true if the EntityItem should rotate, otherwise false
|
||||
*/
|
||||
public boolean useEntityItemRotationEffect(ItemStack item);
|
||||
|
||||
/** Determines if an up-and-down bobbing effect should be used when
|
||||
* rendering an EntityItem, like all default blocks and items do.
|
||||
* @param item the item we are trying to render
|
||||
* @return true if the EntityItem should bob up and down, otherwise false
|
||||
*/
|
||||
public boolean useEntityItemBobbingEffect(ItemStack item);
|
||||
|
||||
/** Called to render an item currently held in-hand by a living entity. If
|
||||
* rendering as a 3D block, the item will be rotated to a 45-degree angle.
|
||||
* To render a 2D texture with some thickness (like default items), see
|
||||
* net.minecraft.src.ItemRenderer. In either case, rendering should be done
|
||||
* in local coordinates from (0,0,0)-(1,1,1).
|
||||
* @param render The RenderBlocks instance
|
||||
* @param entity The entity holding this item
|
||||
* @param item The equipped item to be rendered
|
||||
*/
|
||||
public void renderEquippedItem(RenderBlocks render, EntityLiving entity, ItemStack item);
|
||||
|
||||
/** Determines if the currently equipped item should be rendered as a 3D
|
||||
* block or as a 2D texture.
|
||||
* @param item the item we are trying to render
|
||||
* @return true if the equipped item should be rendered as a 3D block,
|
||||
* otherwise false
|
||||
*/
|
||||
public boolean renderEquippedItemAsBlock(ItemStack item);
|
||||
|
||||
/** Called to render an item in a GUI inventory slot. If rendering as a 3D
|
||||
* block, the appropriate OpenGL translations and scaling have already been
|
||||
* applied, and the rendering should be done in local coordinates from
|
||||
* (0,0,0)-(1,1,1). If rendering as a 2D texture, the rendering should be in
|
||||
* GUI pixel coordinates from (0, 0, 0)-(16, 16, 0).
|
||||
* @param render The RenderBlocks instance
|
||||
* @param item The item stack to render
|
||||
*/
|
||||
public void renderInventoryItem(RenderBlocks render, ItemStack item);
|
||||
|
||||
/** Determines if the item should be rendered in GUI inventory slots as a 3D
|
||||
* block or as a 2D texture.
|
||||
* @param item the item we are trying to render
|
||||
* @return true if the inventory item should be rendered as a 3D block,
|
||||
* otherwise false
|
||||
*/
|
||||
public boolean renderInventoryItemAsBlock(ItemStack item);
|
||||
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
package net.minecraft.src.forge;
|
||||
|
||||
public enum ItemRenderType
|
||||
{
|
||||
ENTITY, // Render type for in-world EntityItems
|
||||
EQUIPPED, // Render type for an item equipped in-hand
|
||||
INVENTORY; // Render type for items shown in a GUI inventory slot
|
||||
}
|
|
@ -7,6 +7,7 @@ package net.minecraft.src.forge;
|
|||
|
||||
import net.minecraft.src.Block;
|
||||
import net.minecraft.src.Item;
|
||||
import net.minecraft.src.ItemStack;
|
||||
import net.minecraft.src.ModLoader;
|
||||
import net.minecraft.src.RenderBlocks;
|
||||
|
||||
|
@ -84,16 +85,27 @@ public class MinecraftForgeClient
|
|||
return ForgeHooksClient.renderPass;
|
||||
}
|
||||
|
||||
private static ICustomItemRenderer[] customItemRenderers = new ICustomItemRenderer[Item.itemsList.length];
|
||||
private static IItemRenderer[] customItemRenderers = new IItemRenderer[Item.itemsList.length];
|
||||
|
||||
public static void registerCustomItemRenderer(int itemID, ICustomItemRenderer renderer)
|
||||
/** Register a custom renderer for a specific item. This can be used to
|
||||
* render the item in-world as an EntityItem, when the item is equipped, or
|
||||
* when the item is in an inventory slot.
|
||||
* @param itemID The item ID (shifted index) to handle rendering.
|
||||
* @param renderer The IItemRenderer interface that handles rendering for
|
||||
* this item.
|
||||
*/
|
||||
public static void registerItemRenderer(int itemID, IItemRenderer renderer)
|
||||
{
|
||||
customItemRenderers[itemID] = renderer;
|
||||
}
|
||||
|
||||
public static ICustomItemRenderer getCustomItemRenderer (int itemID)
|
||||
public static IItemRenderer getItemRenderer(ItemStack item, ItemRenderType type)
|
||||
{
|
||||
return customItemRenderers[itemID];
|
||||
IItemRenderer renderer = customItemRenderers[item.itemID];
|
||||
if (renderer != null && renderer.handleRenderType(item, type)) {
|
||||
return customItemRenderers[item.itemID];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private static boolean hasInit = false;
|
||||
|
|
|
@ -1,31 +1,32 @@
|
|||
--- ../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,10 @@
|
||||
@@ -1,6 +1,11 @@
|
||||
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;
|
||||
+
|
||||
import org.lwjgl.opengl.GL11;
|
||||
import org.lwjgl.opengl.GL12;
|
||||
|
||||
@@ -33,21 +37,27 @@
|
||||
@@ -33,21 +38,27 @@
|
||||
public void renderItem(EntityLiving par1EntityLiving, ItemStack par2ItemStack, int par3)
|
||||
{
|
||||
GL11.glPushMatrix();
|
||||
+ ICustomItemRenderer customRenderer = MinecraftForgeClient.getCustomItemRenderer(par2ItemStack.itemID);
|
||||
+ IItemRenderer customRenderer = MinecraftForgeClient.getItemRenderer(par2ItemStack, ItemRenderType.EQUIPPED);
|
||||
|
||||
- if (par2ItemStack.itemID < 256 && RenderBlocks.renderItemIn3d(Block.blocksList[par2ItemStack.itemID].getRenderType()))
|
||||
+ if (customRenderer != null)
|
||||
+ {
|
||||
+ GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.mc.renderEngine.getTexture(ForgeHooksClient.getTexture("/terrain.png", par2ItemStack.getItem())));
|
||||
+ ForgeHooksClient.renderCustomItem(customRenderer, renderBlocksInstance, par2ItemStack.itemID, par2ItemStack.getItemDamage(), par1EntityLiving.getEntityBrightness(1.0F));
|
||||
+ }
|
||||
+ 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(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()))
|
||||
+ {
|
||||
+ 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);
|
||||
}
|
||||
|
@ -34,12 +35,12 @@
|
|||
if (par2ItemStack.itemID < 256)
|
||||
{
|
||||
- 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", Block.blocksList[par2ItemStack.itemID])));
|
||||
+ GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.mc.renderEngine.getTexture(ForgeHooksClient.getTexture("/terrain.png", par2ItemStack.getItem())));
|
||||
}
|
||||
else
|
||||
{
|
||||
- GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.mc.renderEngine.getTexture("/gui/items.png"));
|
||||
+ GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.mc.renderEngine.getTexture(ForgeHooksClient.getTexture("/gui/items.png", Item.itemsList[par2ItemStack.itemID])));
|
||||
+ GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.mc.renderEngine.getTexture(ForgeHooksClient.getTexture("/gui/items.png", par2ItemStack.getItem())));
|
||||
}
|
||||
|
||||
Tessellator var4 = Tessellator.instance;
|
||||
|
|
|
@ -1,31 +1,48 @@
|
|||
--- ../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,11 @@
|
||||
@@ -1,6 +1,12 @@
|
||||
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;
|
||||
+
|
||||
import org.lwjgl.opengl.GL11;
|
||||
import org.lwjgl.opengl.GL12;
|
||||
|
||||
@@ -54,11 +59,31 @@
|
||||
float var19;
|
||||
@@ -55,10 +61,57 @@
|
||||
float var18;
|
||||
float var23;
|
||||
-
|
||||
|
||||
- if (var10.itemID < 256 && RenderBlocks.renderItemIn3d(Block.blocksList[var10.itemID].getRenderType()))
|
||||
+
|
||||
+ ICustomItemRenderer customRenderer = MinecraftForgeClient.getCustomItemRenderer(var10.itemID);
|
||||
+ IItemRenderer customRenderer = MinecraftForgeClient.getItemRenderer(var10, ItemRenderType.ENTITY);
|
||||
+ if (customRenderer != null)
|
||||
{
|
||||
GL11.glRotatef(var12, 0.0F, 1.0F, 0.0F);
|
||||
- this.loadTexture("/terrain.png");
|
||||
+ loadTexture(ForgeHooksClient.getTexture("/terrain.png", var10.getItem()));
|
||||
+ GL11.glScalef(0.5F, 0.5F, 0.5F);
|
||||
+ if (customRenderer.useEntityItemRotationEffect(var10))
|
||||
+ {
|
||||
+ GL11.glRotatef(var12, 0.0F, 1.0F, 0.0F);
|
||||
+ }
|
||||
+ if (!customRenderer.useEntityItemBobbingEffect(var10))
|
||||
+ {
|
||||
+ GL11.glTranslatef(0.0F, -var11, 0.0F);
|
||||
+ }
|
||||
+
|
||||
+ if (var10.itemID < 256 && RenderBlocks.renderItemIn3d(Block.blocksList[var10.itemID].getRenderType()))
|
||||
+ {
|
||||
+ this.loadTexture(ForgeHooksClient.getTexture("/terrain.png", var10.getItem()));
|
||||
+ float var21 = 0.25F;
|
||||
+ var15 = Block.blocksList[var10.itemID].getRenderType();
|
||||
+
|
||||
+ if (var15 == 1 || var15 == 19 || var15 == 12 || var15 == 2)
|
||||
+ {
|
||||
+ var21 = 0.5F;
|
||||
+ }
|
||||
+
|
||||
+ GL11.glScalef(var21, var21, var21);
|
||||
+
|
||||
+ for(int j = 0; j < var13; j++)
|
||||
+ {
|
||||
+ GL11.glPushMatrix();
|
||||
|
@ -36,18 +53,27 @@
|
|||
+ ((random.nextFloat() * 2.0F - 1.0F) * 0.2F) / 0.5F,
|
||||
+ ((random.nextFloat() * 2.0F - 1.0F) * 0.2F) / 0.5F);
|
||||
+ }
|
||||
+ ForgeHooksClient.renderCustomItem(customRenderer, renderBlocks, var10.itemID, var10.getItemDamage(), par1EntityItem.getEntityBrightness(par9));
|
||||
+ ForgeHooksClient.renderEntityItem(customRenderer, renderBlocks, par1EntityItem);
|
||||
+ GL11.glPopMatrix();
|
||||
+ }
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ this.loadTexture(ForgeHooksClient.getTexture(var10.itemID < 256 ? "/terrain.png" : "/gui/items.png", var10.getItem()));
|
||||
+ GL11.glScalef(0.5F, 0.5F, 0.5F);
|
||||
+ ForgeHooksClient.renderEntityItem(customRenderer, renderBlocks, par1EntityItem);
|
||||
+ }
|
||||
+
|
||||
+ }
|
||||
+ else if (var10.itemID < 256 && RenderBlocks.renderItemIn3d(Block.blocksList[var10.itemID].getRenderType()))
|
||||
+ {
|
||||
+ GL11.glRotatef(var12, 0.0F, 1.0F, 0.0F);
|
||||
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 +119,7 @@
|
||||
@@ -94,7 +147,7 @@
|
||||
if (var10.getItem().func_46058_c())
|
||||
{
|
||||
GL11.glScalef(0.5F, 0.5F, 0.5F);
|
||||
|
@ -56,7 +82,7 @@
|
|||
|
||||
for (var14 = 0; var14 <= 1; ++var14)
|
||||
{
|
||||
@@ -120,11 +145,11 @@
|
||||
@@ -120,11 +173,11 @@
|
||||
|
||||
if (var10.itemID < 256)
|
||||
{
|
||||
|
@ -70,46 +96,16 @@
|
|||
}
|
||||
|
||||
if (this.field_27004_a)
|
||||
@@ -186,10 +211,35 @@
|
||||
float var11;
|
||||
float var12;
|
||||
float var13;
|
||||
-
|
||||
- if (par3 < 256 && RenderBlocks.renderItemIn3d(Block.blocksList[par3].getRenderType()))
|
||||
+
|
||||
+ 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();
|
||||
+ }
|
||||
+ else if (par3 < 256 && RenderBlocks.renderItemIn3d(Block.blocksList[par3].getRenderType()))
|
||||
@@ -189,7 +242,7 @@
|
||||
|
||||
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 +271,7 @@
|
||||
@@ -221,7 +274,7 @@
|
||||
if (Item.itemsList[par3].func_46058_c())
|
||||
{
|
||||
GL11.glDisable(GL11.GL_LIGHTING);
|
||||
|
@ -118,7 +114,7 @@
|
|||
|
||||
for (var8 = 0; var8 <= 1; ++var8)
|
||||
{
|
||||
@@ -247,11 +297,11 @@
|
||||
@@ -247,11 +300,11 @@
|
||||
|
||||
if (par3 < 256)
|
||||
{
|
||||
|
@ -132,3 +128,64 @@
|
|||
}
|
||||
|
||||
var8 = Item.itemsList[par3].getColorFromDamage(par4, 0);
|
||||
@@ -279,8 +332,59 @@
|
||||
{
|
||||
if (par3ItemStack != null)
|
||||
{
|
||||
- this.drawItemIntoGui(par1FontRenderer, par2RenderEngine, par3ItemStack.itemID, par3ItemStack.getItemDamage(), par3ItemStack.getIconIndex(), par4, par5);
|
||||
+ IItemRenderer customRenderer = MinecraftForgeClient.getItemRenderer(par3ItemStack, ItemRenderType.INVENTORY);
|
||||
+ if (customRenderer != null)
|
||||
+ {
|
||||
+ par2RenderEngine.bindTexture(par2RenderEngine.getTexture(ForgeHooksClient.getTexture(par3ItemStack.itemID < 256 ? "/terrain.png" : "/gui/items.png", Item.itemsList[par3ItemStack.itemID])));
|
||||
+ if (customRenderer.renderInventoryItemAsBlock(par3ItemStack))
|
||||
+ {
|
||||
+ GL11.glPushMatrix();
|
||||
+ GL11.glTranslatef((float)(par4 - 2), (float)(par5 + 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 color = Item.itemsList[par3ItemStack.itemID].getColorFromDamage(par4, 0);
|
||||
+ float r = (float)(color >> 16 & 0xff) / 255F;
|
||||
+ float g = (float)(color >> 8 & 0xff) / 255F;
|
||||
+ float b = (float)(color & 0xff) / 255F;
|
||||
+ if(field_27004_a)
|
||||
+ {
|
||||
+ GL11.glColor4f(r, g, b, 1.0F);
|
||||
+ }
|
||||
+ GL11.glRotatef(-90F, 0.0F, 1.0F, 0.0F);
|
||||
+ renderBlocks.useInventoryTint = field_27004_a;
|
||||
+ ForgeHooksClient.renderInventoryItem(customRenderer, renderBlocks, par3ItemStack);
|
||||
+ renderBlocks.useInventoryTint = true;
|
||||
+ GL11.glPopMatrix();
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ 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;
|
||||
+ float b = (float)(color & 255) / 255.0F;
|
||||
+
|
||||
+ if (this.field_27004_a)
|
||||
+ {
|
||||
+ GL11.glColor4f(r, g, b, 1.0F);
|
||||
+ }
|
||||
+
|
||||
+ ForgeHooksClient.renderInventoryItem(customRenderer, renderBlocks, par3ItemStack);
|
||||
+ GL11.glPopMatrix();
|
||||
+ GL11.glEnable(GL11.GL_LIGHTING);
|
||||
+ }
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ this.drawItemIntoGui(par1FontRenderer, par2RenderEngine, par3ItemStack.itemID, par3ItemStack.getItemDamage(), par3ItemStack.getIconIndex(), par4, par5);
|
||||
+ }
|
||||
+
|
||||
if (par3ItemStack != null && par3ItemStack.hasEffect())
|
||||
{
|
||||
GL11.glDepthFunc(GL11.GL_GREATER);
|
||||
|
|
Loading…
Reference in New Issue