125 lines
5.9 KiB
Diff
125 lines
5.9 KiB
Diff
--- ../src_base/minecraft/net/minecraft/client/renderer/ItemRenderer.java
|
|
+++ ../src_work/minecraft/net/minecraft/client/renderer/ItemRenderer.java
|
|
@@ -17,6 +17,8 @@
|
|
import net.minecraft.entity.EntityLivingBase;
|
|
import net.minecraft.item.EnumAction;
|
|
import net.minecraft.item.Item;
|
|
+import net.minecraft.item.ItemBlock;
|
|
+import net.minecraft.item.ItemMap;
|
|
import net.minecraft.item.ItemStack;
|
|
import net.minecraft.util.Icon;
|
|
import net.minecraft.util.MathHelper;
|
|
@@ -24,6 +26,13 @@
|
|
import org.lwjgl.opengl.GL11;
|
|
import org.lwjgl.opengl.GL12;
|
|
|
|
+import net.minecraftforge.client.ForgeHooksClient;
|
|
+import net.minecraftforge.client.IItemRenderer;
|
|
+import net.minecraftforge.client.IItemRenderer.ItemRenderType;
|
|
+import net.minecraftforge.client.MinecraftForgeClient;
|
|
+import static net.minecraftforge.client.IItemRenderer.ItemRenderType.*;
|
|
+import static net.minecraftforge.client.IItemRenderer.ItemRendererHelper.*;
|
|
+
|
|
@SideOnly(Side.CLIENT)
|
|
public class ItemRenderer
|
|
{
|
|
@@ -54,15 +63,32 @@
|
|
this.mapItemRenderer = new MapItemRenderer(par1Minecraft.gameSettings, par1Minecraft.func_110434_K());
|
|
}
|
|
|
|
+ public void renderItem(EntityLivingBase par1EntityLivingBase, ItemStack par2ItemStack, int par3)
|
|
+ {
|
|
+ this.renderItem(par1EntityLivingBase, par2ItemStack, par3, ItemRenderType.EQUIPPED);
|
|
+ }
|
|
+
|
|
/**
|
|
* Renders the item stack for being in an entity's hand Args: itemStack
|
|
*/
|
|
- public void renderItem(EntityLivingBase par1EntityLivingBase, ItemStack par2ItemStack, int par3)
|
|
+ public void renderItem(EntityLivingBase par1EntityLivingBase, ItemStack par2ItemStack, int par3, ItemRenderType type)
|
|
{
|
|
GL11.glPushMatrix();
|
|
TextureManager texturemanager = this.mc.func_110434_K();
|
|
|
|
- if (par2ItemStack.getItemSpriteNumber() == 0 && par2ItemStack.itemID < Block.blocksList.length && Block.blocksList[par2ItemStack.itemID] != null && RenderBlocks.renderItemIn3d(Block.blocksList[par2ItemStack.itemID].getRenderType()))
|
|
+ Block block = null;
|
|
+ if (par2ItemStack.getItem() instanceof ItemBlock && par2ItemStack.itemID < Block.blocksList.length)
|
|
+ {
|
|
+ block = Block.blocksList[par2ItemStack.itemID];
|
|
+ }
|
|
+
|
|
+ IItemRenderer customRenderer = MinecraftForgeClient.getItemRenderer(par2ItemStack, type);
|
|
+ if (customRenderer != null)
|
|
+ {
|
|
+ texturemanager.func_110577_a(texturemanager.func_130087_a(par2ItemStack.getItemSpriteNumber()));
|
|
+ ForgeHooksClient.renderEquippedItem(type, customRenderer, renderBlocksInstance, par1EntityLivingBase, par2ItemStack);
|
|
+ }
|
|
+ else if (block != null && par2ItemStack.getItemSpriteNumber() == 0 && RenderBlocks.renderItemIn3d(Block.blocksList[par2ItemStack.itemID].getRenderType()))
|
|
{
|
|
texturemanager.func_110577_a(texturemanager.func_130087_a(0));
|
|
this.renderBlocksInstance.renderBlockAsItem(Block.blocksList[par2ItemStack.itemID], par2ItemStack.getItemDamage(), 1.0F);
|
|
@@ -266,7 +292,7 @@
|
|
Render render;
|
|
RenderPlayer renderplayer;
|
|
|
|
- if (itemstack != null && itemstack.itemID == Item.map.itemID)
|
|
+ if (itemstack != null && itemstack.getItem() instanceof ItemMap)
|
|
{
|
|
GL11.glPushMatrix();
|
|
f12 = 0.8F;
|
|
@@ -333,11 +359,20 @@
|
|
tessellator.addVertexWithUV((double)(128 + b0), (double)(0 - b0), 0.0D, 1.0D, 0.0D);
|
|
tessellator.addVertexWithUV((double)(0 - b0), (double)(0 - b0), 0.0D, 0.0D, 0.0D);
|
|
tessellator.draw();
|
|
- MapData mapdata = Item.map.getMapData(itemstack, this.mc.theWorld);
|
|
-
|
|
- if (mapdata != null)
|
|
- {
|
|
- this.mapItemRenderer.renderMap(this.mc.thePlayer, this.mc.func_110434_K(), mapdata);
|
|
+
|
|
+ IItemRenderer custom = MinecraftForgeClient.getItemRenderer(itemstack, FIRST_PERSON_MAP);
|
|
+ MapData mapdata = ((ItemMap)itemstack.getItem()).getMapData(itemstack, this.mc.theWorld);
|
|
+
|
|
+ if (custom == null)
|
|
+ {
|
|
+ if (mapdata != null)
|
|
+ {
|
|
+ this.mapItemRenderer.renderMap(this.mc.thePlayer, this.mc.func_110434_K(), mapdata);
|
|
+ }
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ custom.renderItem(FIRST_PERSON_MAP, itemstack, mc.thePlayer, mc.func_110434_K(), mapdata);
|
|
}
|
|
|
|
GL11.glPopMatrix();
|
|
@@ -439,17 +474,20 @@
|
|
|
|
if (itemstack.getItem().requiresMultipleRenderPasses())
|
|
{
|
|
- this.renderItem(entityclientplayermp, itemstack, 0);
|
|
- int i1 = Item.itemsList[itemstack.itemID].getColorFromItemStack(itemstack, 1);
|
|
- f11 = (float)(i1 >> 16 & 255) / 255.0F;
|
|
- f13 = (float)(i1 >> 8 & 255) / 255.0F;
|
|
- f14 = (float)(i1 & 255) / 255.0F;
|
|
- GL11.glColor4f(f5 * f11, f5 * f13, f5 * f14, 1.0F);
|
|
- this.renderItem(entityclientplayermp, itemstack, 1);
|
|
+ this.renderItem(entityclientplayermp, itemstack, 0, ItemRenderType.EQUIPPED_FIRST_PERSON);
|
|
+ for (int x = 1; x < itemstack.getItem().getRenderPasses(itemstack.getItemDamage()); x++)
|
|
+ {
|
|
+ int i1 = Item.itemsList[itemstack.itemID].getColorFromItemStack(itemstack, x);
|
|
+ f11 = (float)(i1 >> 16 & 255) / 255.0F;
|
|
+ f13 = (float)(i1 >> 8 & 255) / 255.0F;
|
|
+ f14 = (float)(i1 & 255) / 255.0F;
|
|
+ GL11.glColor4f(f5 * f11, f5 * f13, f5 * f14, 1.0F);
|
|
+ this.renderItem(entityclientplayermp, itemstack, x, ItemRenderType.EQUIPPED_FIRST_PERSON);
|
|
+ }
|
|
}
|
|
else
|
|
{
|
|
- this.renderItem(entityclientplayermp, itemstack, 0);
|
|
+ this.renderItem(entityclientplayermp, itemstack, 0, ItemRenderType.EQUIPPED_FIRST_PERSON);
|
|
}
|
|
|
|
GL11.glPopMatrix();
|