Initial patch update to 1.6, Does not compile, need to update references to the old TexturePack system.

This commit is contained in:
LexManos 2013-06-30 05:50:11 -07:00
parent 7326f00a85
commit d2144f274b
126 changed files with 1527 additions and 1666 deletions

View file

@ -19,8 +19,8 @@ import net.minecraft.block.Block;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.client.texturepacks.ITexturePack;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
@ -28,47 +28,34 @@ import net.minecraft.util.MathHelper;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.client.model.ModelBiped;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.RenderEngine;
import net.minecraft.client.renderer.RenderGlobal;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.entity.RenderItem;
import net.minecraft.client.renderer.texture.TextureManager;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraftforge.client.IItemRenderer.ItemRenderType;
import net.minecraftforge.client.event.DrawBlockHighlightEvent;
import net.minecraftforge.client.event.RenderWorldLastEvent;
import net.minecraftforge.client.event.TextureLoadEvent;
import net.minecraftforge.client.event.TextureStitchEvent;
import net.minecraftforge.common.IArmorTextureProvider;
import net.minecraftforge.common.MinecraftForge;
import static net.minecraftforge.client.IItemRenderer.ItemRenderType.*;
import static net.minecraftforge.client.IItemRenderer.ItemRendererHelper.*;
public class ForgeHooksClient
{
static RenderEngine engine()
static TextureManager engine()
{
return FMLClientHandler.instance().getClient().renderEngine;
}
@Deprecated //Deprecated in 1.5.1, move to the more detailed one below.
@SuppressWarnings("deprecation")
public static String getArmorTexture(ItemStack armor, String _default)
{
String result = null;
if (armor.getItem() instanceof IArmorTextureProvider)
{
result = ((IArmorTextureProvider)armor.getItem()).getArmorTextureFile(armor);
}
return result != null ? result : _default;
}
public static String getArmorTexture(Entity entity, ItemStack armor, String _default, int slot, int layer)
public static String getArmorTexture(Entity entity, ItemStack armor, String _default, int slot, int layer, String type)
{
String result = armor.getItem().getArmorTexture(armor, entity, slot, layer);
return result != null ? result : _default;
}
public static boolean renderEntityItem(EntityItem entity, ItemStack item, float bobing, float rotation, Random random, RenderEngine engine, RenderBlocks renderBlocks)
public static boolean renderEntityItem(EntityItem entity, ItemStack item, float bobing, float rotation, Random random, TextureManager engine, RenderBlocks renderBlocks)
{
IItemRenderer customRenderer = MinecraftForgeClient.getItemRenderer(item, ENTITY);
if (customRenderer == null)
@ -86,7 +73,7 @@ public class ForgeHooksClient
}
boolean is3D = customRenderer.shouldUseRenderHelper(ENTITY, item, BLOCK_3D);
engine.bindTexture(item.getItemSpriteNumber() == 0 ? "/terrain.png" : "/gui/items.png");
engine.func_110577_a(item.getItemSpriteNumber() == 0 ? TextureMap.field_110575_b : TextureMap.field_110576_c);
Block block = (item.itemID < Block.blocksList.length ? Block.blocksList[item.itemID] : null);
if (is3D || (block != null && RenderBlocks.renderItemIn3d(block.getRenderType())))
{
@ -127,7 +114,7 @@ public class ForgeHooksClient
return true;
}
public static boolean renderInventoryItem(RenderBlocks renderBlocks, RenderEngine engine, ItemStack item, boolean inColor, float zLevel, float x, float y)
public static boolean renderInventoryItem(RenderBlocks renderBlocks, TextureManager engine, ItemStack item, boolean inColor, float zLevel, float x, float y)
{
IItemRenderer customRenderer = MinecraftForgeClient.getItemRenderer(item, INVENTORY);
if (customRenderer == null)
@ -135,7 +122,7 @@ public class ForgeHooksClient
return false;
}
engine.bindTexture(item.getItemSpriteNumber() == 0 ? "/terrain.png" : "/gui/items.png");
engine.func_110577_a(item.getItemSpriteNumber() == 0 ? TextureMap.field_110575_b : TextureMap.field_110576_c);
if (customRenderer.shouldUseRenderHelper(INVENTORY, item, INVENTORY_BLOCK))
{
GL11.glPushMatrix();
@ -182,14 +169,8 @@ public class ForgeHooksClient
}
return true;
}
@Deprecated
public static void renderEquippedItem(IItemRenderer customRenderer, RenderBlocks renderBlocks, EntityLiving entity, ItemStack item)
{
renderEquippedItem(ItemRenderType.EQUIPPED, customRenderer, renderBlocks, entity, item);
}
public static void renderEquippedItem(ItemRenderType type, IItemRenderer customRenderer, RenderBlocks renderBlocks, EntityLiving entity, ItemStack item)
public static void renderEquippedItem(ItemRenderType type, IItemRenderer customRenderer, RenderBlocks renderBlocks, EntityLivingBase entity, ItemStack item)
{
if (customRenderer.shouldUseRenderHelper(type, item, EQUIPPED_BLOCK))
{
@ -216,7 +197,7 @@ public class ForgeHooksClient
//Optifine Helper Functions u.u, these are here specifically for Optifine
//Note: When using Optfine, these methods are invoked using reflection, which
//incurs a major performance penalty.
public static void orientBedCamera(Minecraft mc, EntityLiving entity)
public static void orientBedCamera(Minecraft mc, EntityLivingBase entity)
{
int x = MathHelper.floor_double(entity.posX);
int y = MathHelper.floor_double(entity.posY);
@ -285,7 +266,7 @@ public class ForgeHooksClient
renderPass = pass;
}
public static ModelBiped getArmorModel(EntityLiving entityLiving, ItemStack itemStack, int slotID, ModelBiped _default)
public static ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, int slotID, ModelBiped _default)
{
ModelBiped modelbiped = itemStack.getItem().getArmorModel(entityLiving, itemStack, slotID);
return modelbiped == null ? _default : modelbiped;

View file

@ -9,6 +9,7 @@ import net.minecraft.client.gui.GuiControls;
import net.minecraft.client.gui.GuiSlot;
import net.minecraft.client.settings.KeyBinding;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.util.EnumChatFormatting;
public class GuiControlsScrollPanel extends GuiSlot
@ -60,7 +61,7 @@ public class GuiControlsScrollPanel extends GuiSlot
}
@Override
protected void drawBackground() {}
protected void func_130003_c() {}
@Override
public void drawScreen(int mX, int mY, float f)
@ -91,7 +92,7 @@ public class GuiControlsScrollPanel extends GuiSlot
boolean flag = _mouseX >= xPosition && _mouseY >= yPosition && _mouseX < xPosition + width && _mouseY < yPosition + height;
int k = (flag ? 2 : 1);
mc.renderEngine.bindTexture("/gui/gui.png");
mc.renderEngine.func_110577_a(TextureMap.field_110576_c);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
controls.drawTexturedModalRect(xPosition, yPosition, 0, 46 + k * 20, width / 2, height);
controls.drawTexturedModalRect(xPosition + width / 2, yPosition, 200 - width / 2, 46 + k * 20, width / 2, height);

View file

@ -24,6 +24,8 @@ import net.minecraft.client.multiplayer.NetClientHandler;
import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.entity.RenderItem;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.client.resources.ResourceLocation;
import net.minecraft.crash.CallableMinecraftVersion;
import net.minecraft.entity.boss.BossStatus;
import net.minecraft.entity.player.InventoryPlayer;
@ -112,7 +114,7 @@ public class GuiIngameForge extends GuiIngame
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
zLevel = -90.0F;
rand.setSeed((long)(updateCounter * 312871));
mc.renderEngine.bindTexture("/gui/icons.png");
mc.renderEngine.func_110577_a(TextureMap.field_110576_c);
if (renderCrosshairs) renderCrosshairs(width, height);
if (renderBossHealth) renderBossHealth();
@ -167,7 +169,7 @@ public class GuiIngameForge extends GuiIngame
GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
mc.renderEngine.bindTexture("/gui/gui.png");
mc.renderEngine.func_110577_a("/gui/gui.png");
InventoryPlayer inv = mc.thePlayer.inventory;
drawTexturedModalRect(width / 2 - 91, height - 22, 0, 0, 182, 22);
@ -311,7 +313,7 @@ public class GuiIngameForge extends GuiIngame
}
int health = mc.thePlayer.getHealth();
int healthLast = mc.thePlayer.prevHealth;
float healthLast = mc.thePlayer.prevHealth;
int left = width / 2 - 91;
int top = height - 39;

View file

@ -1,18 +1,16 @@
package net.minecraftforge.client.event;
import net.minecraft.client.renderer.entity.RenderLiving;
import net.minecraft.client.renderer.entity.RenderPlayer;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.client.render.entity.RendererLivingEntity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraftforge.event.Cancelable;
import net.minecraftforge.event.Event;
public abstract class RenderLivingEvent extends Event
{
public final EntityLiving entity;
public final RenderLiving renderer;
public final EntityLivingBase entity;
public final RendererLivingEntity renderer;
public RenderLivingEvent(EntityLiving entity, RenderLiving renderer)
public RenderLivingEvent(EntityLivingBase entity, RendererLivingEntity renderer)
{
this.entity = entity;
this.renderer = renderer;
@ -20,16 +18,16 @@ public abstract class RenderLivingEvent extends Event
public abstract static class Specials extends RenderLivingEvent
{
public Specials(EntityLiving entity, RenderLiving renderer){ super(entity, renderer); }
public Specials(EntityLivingBase entity, RendererLivingEntity renderer){ super(entity, renderer); }
@Cancelable
public static class Pre extends Specials
{
public Pre(EntityLiving entity, RenderLiving renderer){ super(entity, renderer); }
public Pre(EntityLivingBase entity, RendererLivingEntity renderer){ super(entity, renderer); }
}
public static class Post extends Specials
{
public Post(EntityLiving entity, RenderLiving renderer){ super(entity, renderer); }
public Post(EntityLivingBase entity, RendererLivingEntity renderer){ super(entity, renderer); }
}
}
}

View file

@ -1,158 +1,162 @@
#Main Forge Access Transformer configuration file
# Tessellator
public-f bgd.a #FD:Tessellator/field_78398_a #instance
public bgd.u #FD:Tessellator/field_78409_u #drawMode
public bgd.v #FD:Tessellator/field_78408_v #xOffset
public bgd.w #FD:Tessellator/field_78407_w #yOffset
public bgd.x #FD:Tessellator/field_78417_x #zOffset
public bgd.z #FD:Tessellator/field_78415_z #isDrawing
public-f bfc.a #FD:Tessellator/field_78398_a #instance
public bfc.u #FD:Tessellator/field_78409_u #drawMode
public bfc.v #FD:Tessellator/field_78408_v #xOffset
public bfc.w #FD:Tessellator/field_78407_w #yOffset
public bfc.x #FD:Tessellator/field_78417_x #zOffset
public bfc.z #FD:Tessellator/field_78415_z #isDrawing
# ItemPickaxe
public wu.<init>(ILwl;)V #MD:ItemPickaxe/<init>(ILnet/minecraft/src/EnumToolMaterial;) #constructor
public+f wu.c #FD:ItemPickaxe/field_77867_c #blocksEffectiveAgainst
public yh.<init>(ILxx;)V #MD:ItemPickaxe/<init>(ILnet/minecraft/src/EnumToolMaterial;) #constructor
public+f yh.c #FD:ItemPickaxe/field_77867_c #blocksEffectiveAgainst
# ItemAxe
public wi.<init>(ILwl;)V #MD:ItemAxe/<init>(ILnet/minecraft/src/EnumToolMaterial;) #constructor
public+f wi.c #FD:ItemAxe/field_77868_c #blocksEffectiveAgainst
public xu.<init>(ILxx;)V #MD:ItemAxe/<init>(ILnet/minecraft/src/EnumToolMaterial;) #constructor
public+f xu.c #FD:ItemAxe/field_77868_c #blocksEffectiveAgainst
# ItemSpade
public xf.<init>(ILwl;)V #MD:ItemSpade/<init>(ILnet/minecraft/src/EnumToolMaterial;) #constructor
public+f xf.c #FD:ItemSpade/field_77866_c #blocksEffectiveAgainst
public ys.<init>(ILxx;)V #MD:ItemSpade/<init>(ILnet/minecraft/src/EnumToolMaterial;) #constructor
public+f ys.c #FD:ItemSpade/field_77866_c #blocksEffectiveAgainst
# ItemTool
public vr.a #FD:ItemTool/field_77864_a #efficiencyOnProperMaterial
public vr.d #FD:ItemTool/field_77865_bY #damageVsEntity
public xd.a #FD:ItemTool/field_77864_a #efficiencyOnProperMaterial
public xd.d #FD:ItemTool/field_77865_bY #damageVsEntity
# EntityEnderman
public rv.d #FD:EntityEnderman/field_70827_d #carriableBlocks
public tc.br #FD:EntityEnderman/field_70827_d #carriableBlocks
# RenderEngine
public bge.f(Ljava/lang/String;)I #MD:RenderEngine/func_78341_b #getTexture
public bge.i #FD:RenderEngine/field_94154_l #terrainTextureMap
public bge.j #FD:RenderEngine/field_94155_m #itemTextureMap
# -- MISSING MAPPING public bge.f(Ljava/lang/String;)I #MD:RenderEngine/func_78341_b #getTexture
# -- MISSING MAPPING public bge.i #FD:RenderEngine/field_94154_l #terrainTextureMap
# -- MISSING MAPPING public bge.j #FD:RenderEngine/field_94155_m #itemTextureMap
# RenderGlobal
public bfy.h #FD:RenderGlobal/field_72769_h #theWorld
public bfy.i #FD:RenderGlobal/field_72770_i #renderEngine
public bfy.q #FD:RenderGlobal/field_72777_q #mc
public bfy.r #FD:RenderGlobal/field_72776_r #globalRenderBlocks
public bfy.E #FD:RenderGlobal/field_72738_E #damagedBlocks
public bex.k #FD:RenderGlobal/field_72769_h #theWorld
public bex.l #FD:RenderGlobal/field_72770_i #renderEngine
public bex.t #FD:RenderGlobal/field_72777_q #mc
public bex.u #FD:RenderGlobal/field_72776_r #globalRenderBlocks
public bex.H #FD:RenderGlobal/field_72738_E #damagedBlocks
# SoundManager
public bkc.a #FD:SoundManager/field_77381_a #sndSystem
public bkc.b #FD:SoundManager/field_77379_b #soundPoolSounds
public bkc.c #FD:SoundManager/field_77380_c #soundPoolStreaming
public bkc.d #FD:SoundManager/field_77377_d #soundPoolMusic
public bla.b #FD:SoundManager/field_77381_a #sndSystem
public bla.d #FD:SoundManager/field_77379_b #soundPoolSounds
public bla.e #FD:SoundManager/field_77380_c #soundPoolStreaming
public bla.f #FD:SoundManager/field_77377_d #soundPoolMusic
# EntityMinecart
protected ri.* #FD:EntityMinecart/* # All private -> protected
protected sp.* #FD:EntityMinecart/* # All private -> protected
# -- MISSING MAPPING public py.h()Z #MD:EntityMinecart/func_70490_h #isMinecartPowered
# Block
public apa.<init>(ILaif;)V #MD:Block/<init>(ILnet/minecraft/src/Material;) #Constructor
public apa.<init>(IILaif;)V #MD:Block/<init>(IILnet/minecraft/src/Material;) #Constructor
public apa.cB #FD:Block/field_72029_cc #blockResistance
public apa.cA #FD:Block/field_71989_cb #blockHardness
public aqr.<init>(ILaju;)V #MD:Block/<init>(ILnet/minecraft/src/Material;) #Constructor
public aqr.<init>(IILaju;)V #MD:Block/<init>(IILnet/minecraft/src/Material;) #Constructor
public aqr.cH #FD:Block/field_72029_cc #blockResistance
public aqr.cG #FD:Block/field_71989_cb #blockHardness
# -- MISSING MAPPING public amq.r()Lamq; #MD:Block/func_71912_p #setRequiresSelfNotify
public apa.a(Lape;)Lapa; #MD:Block/func_71884_a #setStepSound
public apa.b(F)Lapa; #MD:Block/func_71894_b #setResistance
public apa.c(F)Lapa; #MD:Block/func_71848_c #setHardness
public apa.k(I)Lapa; #MD:Block/func_71868_h #setLightOpacity
public apa.a(F)Lapa; #MD:Block/func_71900_a #setLightValue
public apa.r()Lapa; #MD:Block/func_71875_q #setBlockUnbreakable
public apa.b(Z)Lapa; #MD:Block/func_71907_b #setTickRandomly
public apa.a(FFFFFF)V #MD:Block/func_71905_a #setBlockBounds
public aqr.a(Laqv;)Laqr; #MD:Block/func_71884_a #setStepSound
public aqr.b(F)Laqr; #MD:Block/func_71894_b #setResistance
public aqr.c(F)Laqr; #MD:Block/func_71848_c #setHardness
public aqr.k(I)Laqr; #MD:Block/func_71868_h #setLightOpacity
public aqr.a(F)Laqr; #MD:Block/func_71900_a #setLightValue
public aqr.r()Laqr; #MD:Block/func_71875_q #setBlockUnbreakable
public aqr.b(Z)Laqr; #MD:Block/func_71907_b #setTickRandomly
public aqr.a(FFFFFF)V #MD:Block/func_71905_a #setBlockBounds
# NetServerHandler
public jh.f #FD:NetServerHandler/field_72572_g #playerInAirTime
public jw.f #FD:NetServerHandler/field_72572_g #playerInAirTime
# TileEntity
public aqp.k #FD:TileEntity/field_70331_k #worldObj
public ash.k #FD:TileEntity/field_70331_k #worldObj
# BlockLeavesBase
public api.d #FD:BlockLeavesBase/field_72131_c #graphicsLevel
public aqz.d #FD:BlockLeavesBase/field_72131_c #graphicsLevel
# Item
public wk.<init>(I)V #MD:Item/<init>(I) #Constructor
public wk.e(I)Lwk; #MD:Item/func_77656_e #setMaxDamage
public-f wk.h(Lwm;)Llx; #MD:Item/func_77650_f #getIconIndex
public wk.c(Ljava/lang/String;)Lwk; #MD:Item/func_77631_c #setPotionEffect
public xw.<init>(I)V #MD:Item/<init>(I) #Constructor
public xw.e(I)Lxw; #MD:Item/func_77656_e #setMaxDamage
public-f xw.h(Lxy;)Lmo; #MD:Item/func_77650_f #getIconIndex
public xw.c(Ljava/lang/String;)Lxw; #MD:Item/func_77631_c #setPotionEffect
# RailLogic
public alc #CL:BlockBaseRailLogic
public alc.a()I #MD:BlockBaseRailLogic/func_94505_a #getNAdjacentTiles
public amr #CL:BlockBaseRailLogic
public amr.a()I #MD:BlockBaseRailLogic/func_94505_a #getNAdjacentTiles
# EntityPlayer
public sq.a(Lrh;)V #MD:EntityPlayer/func_71012_a #joinEntityItemWithWorld
public sq.h()V #MD:EntityPlayer/func_71053_j #closeScreen
public sq.b #FD:EntityPlayer/field_71076_b #sleepTimer
public tz.a(Lso;)V #MD:EntityPlayer/func_71012_a #joinEntityItemWithWorld
public tz.i()V #MD:EntityPlayer/func_71053_j #closeScreen
public tz.b #FD:EntityPlayer/field_71076_b #sleepTimer
# EntityPlayerMP
public bdv.a(Lrh;)V #MD:EntityClientPlayerMP/func_71012_a #joinEntityItemWithWorld
public bcu.a(Lso;)V #MD:EntityClientPlayerMP/func_71012_a #joinEntityItemWithWorld
# World Gen Chests Related
public lp.* #FD:WeightedRandomChestContent/* #all
public iz.S #FD:WorldServer/field_73069_S #bonusChestContent
public aem.a #FD:StructureMineshaftPieces/field_78818_a #mineshaftChestContents
public afq.i #FD:ComponentScatteredFeatureDesertPyramid/field_74941_i #itemsToGenerateInTemple
public afr.l #FD:ComponentScatteredFeatureJunglePyramid/field_74943_l #junglePyramidsChestContents
public afr.m #FD:ComponentScatteredFeatureJunglePyramid/field_74944_m #junglePyramidsDispenserContents
public agb.a #FD:ComponentStrongholdChestCorridor/field_75003_a #strongholdChestContents
public agf.b #FD:ComponentStrongholdLibrary/field_75007_b #strongholdLibraryChestContents
public agk.c #FD:ComponentStrongholdRoomCrossing/field_75014_c #strongholdCorridorChestContents
public ahl.a #FD:ComponentVillageHouse2/field_74918_a #villageBlacksmithChestContents
public mg.* #FD:WeightedRandomChestContent/* #all
public jo.T #FD:WorldServer/field_73069_S #bonusChestContent
public agb.a #FD:StructureMineshaftPieces/field_78818_a #mineshaftChestContents
public ahf.i #FD:ComponentScatteredFeatureDesertPyramid/field_74941_i #itemsToGenerateInTemple
public ahg.l #FD:ComponentScatteredFeatureJunglePyramid/field_74943_l #junglePyramidsChestContents
public ahg.m #FD:ComponentScatteredFeatureJunglePyramid/field_74944_m #junglePyramidsDispenserContents
public ahq.a #FD:ComponentStrongholdChestCorridor/field_75003_a #strongholdChestContents
public ahu.b #FD:ComponentStrongholdLibrary/field_75007_b #strongholdLibraryChestContents
public ahz.c #FD:ComponentStrongholdRoomCrossing/field_75014_c #strongholdCorridorChestContents
public aja.a #FD:ComponentVillageHouse2/field_74918_a #villageBlacksmithChestContents
# AnvilChunkLoader.chunkSaveLocation
public acj.d #FD:AnvilChunkLoader/field_75825_d
public ady.d #FD:AnvilChunkLoader/field_75825_d
# ChunkProviderServer.currentChunkLoader
public iy.e #FD:ChunkProviderServer/field_73247_e
public jn.e #FD:ChunkProviderServer/field_73247_e
# PlayerManager
public iw.a(IIZ)Lix; #MD:PlayerManager/func_72690_a #getOrCreateChunkWatcher
public jl.a(IIZ)Ljm; #MD:PlayerManager/func_72690_a #getOrCreateChunkWatcher
# PlayerInstance
public ix #CL:PlayerInstance
public jm #CL:PlayerInstance
# World
public-f aab.A #FD:World/field_72982_D #villageCollectionObj
public aab.G #FD:World/field_72993_I #activeChunkSet
public-f abq.A #FD:World/field_72982_D #villageCollectionObj
public abq.G #FD:World/field_72993_I #activeChunkSet
# EntityLiving
public ng.be #FD:EntityLiving/field_70728_aV #experienceValue
public ng.bt #FD:EntityLiving/field_94063_bt #combatTracker
public ng.bp #FD:EntityLiving/field_70715_bh #targetTasks
public oc.b #FD:EntityLiving/field_70728_aV #experienceValue
# -- MISSING MAPPING public ng.bt #FD:EntityLiving/field_94063_bt #combatTracker
public oc.d #FD:EntityLiving/field_70715_bh #targetTasks
# GuiFlatPresets
public axm.a(Ljava/lang/String;ILaav;Ljava/util/List;[Laei;)V #MD:GuiFlatPresets/func_82294_a
public axm.a(Ljava/lang/String;ILaav;[Laei;)V #MD:GuiFlatPresets/func_82297_a
public avp.a(Ljava/lang/String;ILack;Ljava/util/List;[Lafx;)V #MD:GuiFlatPresets/func_82294_a
public avp.a(Ljava/lang/String;ILack;[Lafx;)V #MD:GuiFlatPresets/func_82297_a
# BiomeGenBase
public aav.*() #MD:BiomeGenBase/* #Everything protected->public
public ack.*() #MD:BiomeGenBase/* #Everything protected->public
# MapGenVillage
public-f agz.e #FD:MapGenVillage/field_75055_e #villageSpawnBiomes
public-f aio.e #FD:MapGenVillage/field_75055_e #villageSpawnBiomes
# ShapedRecipes
public+f yn.d #FD:ShapedRecipes/field_77574_d #recipeItems
public+f yn.b #FD:ShapedRecipes/field_77576_b #recipeWidth
public+f yn.c #FD:ShapedRecipes/field_77577_c #recipeHeight
public+f aac.d #FD:ShapedRecipes/field_77574_d #recipeItems
public+f aac.b #FD:ShapedRecipes/field_77576_b #recipeWidth
public+f aac.c #FD:ShapedRecipes/field_77577_c #recipeHeight
# ShapelessRecipes
public yo.b #FD:ShapelessRecipes/field_77579_b #recipeItems
public aad.b #FD:ShapelessRecipes/field_77579_b #recipeItems
# GuiContainer
protected ayl.a(Lul;)V #MD:GuiContainer/func_74192_a #drawSlotInventory
protected awo.a(Lvy;)V #MD:GuiContainer/func_74192_a #drawSlotInventory
# ContainerPlayer
protected tz.h #FD:ContainerPlayer/field_82862_h #player
protected vp.h #FD:ContainerPlayer/field_82862_h #player
# BlockButton
protected ali.n(Laab;III)V #MD:BlockButton/func_82535_o #checkActivation
protected-f ali.a #FD:BlockButton/field_82537_a #sensible
protected amx.n(Labq;III)V #MD:BlockButton/func_82535_o #checkActivation
protected-f amx.a #FD:BlockButton/field_82537_a #sensible
# BiomeDecorator
public aaz.* #FD:BiomeDecorator/* # All private -> protected
public aco.* #FD:BiomeDecorator/* # All private -> protected
# CreativeTabs
public-f ve.a #FD:CreativeTabs/field_78032_a # creativeTabArray non-final
public-f wq.a #FD:CreativeTabs/field_78032_a # creativeTabArray non-final
# Packet
public ei.a(IZZLjava/lang/Class;)V #MD:Packet/func_73285_a #addIdClassMapping
public ew.a(IZZLjava/lang/Class;)V #MD:Packet/func_73285_a #addIdClassMapping
# SaveHandler
public ajt.b()Ljava/io/File; #MD:SaveHandler/func_75765_b
public ali.b()Ljava/io/File; #MD:SaveHandler/func_75765_b
# World stuff
public aab.b(Lmp;)V #MD:World/func_72847_b #releaseEntitySkin
public aab.m #FD:World/field_73003_n #prevRainingStrength
public aab.n #FD:World/field_73004_o #rainingStrength
public aab.p #FD:World/field_73017_q #thunderingStrength
public aab.o #FD:World/field_73018_p #prevThunderingStrength
public abq.b(Lnj;)V #MD:World/func_72847_b #releaseEntitySkin
public abq.m #FD:World/field_73003_n #prevRainingStrength
public abq.n #FD:World/field_73004_o #rainingStrength
public abq.p #FD:World/field_73017_q #thunderingStrength
public abq.o #FD:World/field_73018_p #prevThunderingStrength
#WorldClient
public bds.b(Lmp;)V #MD:WorldClient/func_72847_b #releaseEntitySkin
public bcr.b(Lnj;)V #MD:WorldClient/func_72847_b #releaseEntitySkin
#WorldServer
public iz.b(Lmp;)V #MD:WorldServer/func_72847_b #releaseEntitySkin
public iz.N #FD:WorldServer/field_73068_P #allPlayersSleeping
public jo.b(Lnj;)V #MD:WorldServer/func_72847_b #releaseEntitySkin
public jo.N #FD:WorldServer/field_73068_P #allPlayersSleeping
#TextureMap
public bir.a #FD:TextureMap/field_94255_a
public bir.b #FD:TextureMap/field_94253_b
public bir.c #FD:TextureMap/field_94254_c
public bir.d #FD:TextureMap/field_94251_d
public bhw.g #FD:TextureMap/field_94255_a
# -- MISSING MAPPING public bir.b #FD:TextureMap/field_94253_b
public bhw.h #FD:TextureMap/field_94254_c
# -- MISSING MAPPING public bir.d #FD:TextureMap/field_94251_d
#Potion
public mk.b(II)Lmk; #MD:Potion/func_76399_b #setIconIndex
public ne.b(II)Lne; #MD:Potion/func_76399_b #setIconIndex
#PotionHelper
public xu.m #FD:PotionHelper/field_77927_l #potionRequirements
public xu.n #FD:PotionHelper/field_77928_m #potionAmplifiers
public zj.m #FD:PotionHelper/field_77927_l #potionRequirements
public zj.n #FD:PotionHelper/field_77928_m #potionAmplifiers
#PotionEffect
public ml.b #FD:PotionEffect/field_76460_b #duration
public nf.b #FD:PotionEffect/field_76460_b #duration
#BlockFluid
protected ane.a #FD:BlockFluid/field_94425_a #theIcon
protected aou.a #FD:BlockFluid/field_94425_a #theIcon
#GuiIngame
protected aww.* #FD:GuiIngame/* # All private -> protected
protected aww.*() #MD:GuiIngame/* # All private -> protected
protected auz.* #FD:GuiIngame/* # All private -> protected
protected auz.*() #MD:GuiIngame/* # All private -> protected
#ItemStack
default wm.e #FD:ItemStack/field_77991_e # make default access for itemDamage
default xy.f #FD:ItemStack/field_77991_e # make default access for itemDamage
#GuiSlot
protected avw.b(IIII)V #MD:GuiSlot/func_77206_b #overlayBackground
#EntityPlayer
public tz.bu #FD:EntityPlayer/field_71092_bJ #username

View file

@ -1,6 +1,7 @@
package net.minecraftforge.common;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.ChatMessageComponent;
import net.minecraft.util.ChunkCoordinates;
import net.minecraft.world.World;
@ -9,8 +10,7 @@ public class FakePlayer extends EntityPlayer
{
public FakePlayer(World world, String name)
{
super(world);
this.username = name;
super(world, name);
}
public void sendChatToPlayer(String s){}
@ -19,4 +19,7 @@ public class FakePlayer extends EntityPlayer
{
return new ChunkCoordinates(0,0,0);
}
@Override
public void func_110122_a(ChatMessageComponent chatmessagecomponent){}
}

View file

@ -1,16 +1,14 @@
package net.minecraftforge.common;
import java.util.*;
import java.util.Map.Entry;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.ListMultimap;
import cpw.mods.fml.common.FMLLog;
import cpw.mods.fml.common.Loader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import net.minecraft.block.Block;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
@ -19,6 +17,8 @@ import net.minecraft.item.ItemAxe;
import net.minecraft.item.ItemPickaxe;
import net.minecraft.item.ItemSpade;
import net.minecraft.item.ItemStack;
import net.minecraft.network.NetServerHandler;
import net.minecraft.util.ChatMessageComponent;
import net.minecraft.util.DamageSource;
import net.minecraft.util.EnumMovingObjectType;
import net.minecraft.util.MovingObjectPosition;
@ -26,9 +26,16 @@ import net.minecraft.util.WeightedRandom;
import net.minecraft.util.WeightedRandomItem;
import net.minecraft.world.World;
import net.minecraftforge.event.ForgeEventFactory;
import net.minecraftforge.event.ServerChatEvent;
import net.minecraftforge.event.entity.item.ItemTossEvent;
import net.minecraftforge.event.entity.living.*;
import net.minecraftforge.event.entity.living.LivingEvent.*;
import net.minecraftforge.event.entity.living.LivingAttackEvent;
import net.minecraftforge.event.entity.living.LivingDeathEvent;
import net.minecraftforge.event.entity.living.LivingDropsEvent;
import net.minecraftforge.event.entity.living.LivingEvent.LivingJumpEvent;
import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent;
import net.minecraftforge.event.entity.living.LivingFallEvent;
import net.minecraftforge.event.entity.living.LivingHurtEvent;
import net.minecraftforge.event.entity.living.LivingSetAttackTargetEvent;
public class ForgeHooks
{
@ -307,54 +314,49 @@ public class ForgeHooks
//Optifine Helper Functions u.u, these are here specifically for Optifine
//Note: When using Optfine, these methods are invoked using reflection, which
//incurs a major performance penalty.
public static void onLivingSetAttackTarget(EntityLiving entity, EntityLiving target)
public static void onLivingSetAttackTarget(EntityLivingBase entity, EntityLivingBase target)
{
MinecraftForge.EVENT_BUS.post(new LivingSetAttackTargetEvent(entity, target));
}
public static boolean onLivingUpdate(EntityLiving entity)
public static boolean onLivingUpdate(EntityLivingBase entity)
{
return MinecraftForge.EVENT_BUS.post(new LivingUpdateEvent(entity));
}
public static boolean onLivingAttack(EntityLiving entity, DamageSource src, int amount)
public static boolean onLivingAttack(EntityLivingBase entity, DamageSource src, float amount)
{
return MinecraftForge.EVENT_BUS.post(new LivingAttackEvent(entity, src, amount));
}
public static int onLivingHurt(EntityLiving entity, DamageSource src, int amount)
public static float onLivingHurt(EntityLivingBase entity, DamageSource src, float amount)
{
LivingHurtEvent event = new LivingHurtEvent(entity, src, amount);
return (MinecraftForge.EVENT_BUS.post(event) ? 0 : event.ammount);
}
public static boolean onLivingDeath(EntityLiving entity, DamageSource src)
public static boolean onLivingDeath(EntityLivingBase entity, DamageSource src)
{
return MinecraftForge.EVENT_BUS.post(new LivingDeathEvent(entity, src));
}
public static boolean onLivingDrops(EntityLiving entity, DamageSource source, ArrayList<EntityItem> drops, int lootingLevel, boolean recentlyHit, int specialDropValue)
public static boolean onLivingDrops(EntityLivingBase entity, DamageSource source, ArrayList<EntityItem> drops, int lootingLevel, boolean recentlyHit, int specialDropValue)
{
return MinecraftForge.EVENT_BUS.post(new LivingDropsEvent(entity, source, drops, lootingLevel, recentlyHit, specialDropValue));
}
public static float onLivingFall(EntityLiving entity, float distance)
public static float onLivingFall(EntityLivingBase entity, float distance)
{
LivingFallEvent event = new LivingFallEvent(entity, distance);
return (MinecraftForge.EVENT_BUS.post(event) ? 0.0f : event.distance);
}
public static boolean isLivingOnLadder(Block block, World world, int x, int y, int z, EntityLiving entity)
public static boolean isLivingOnLadder(Block block, World world, int x, int y, int z, EntityLivingBase entity)
{
return block != null && block.isLadder(world, x, y, z, entity);
}
@Deprecated //See above
public static boolean isLivingOnLadder(Block block, World world, int x, int y, int z)
{
return block != null && block.isLadder(world, x, y, z);
}
public static void onLivingJump(EntityLiving entity)
public static void onLivingJump(EntityLivingBase entity)
{
MinecraftForge.EVENT_BUS.post(new LivingJumpEvent(entity));
}
@ -386,4 +388,14 @@ public class ForgeHooks
Block block = Block.blocksList[world.getBlockId(x, y, z)];
return (block == null ? 0 : block.getEnchantPowerBonus(world, x, y, z));
}
public static ChatMessageComponent onServerChatEvent(NetServerHandler net, String raw, ChatMessageComponent comp)
{
ServerChatEvent event = new ServerChatEvent(net.playerEntity, raw, comp);
if (MinecraftForge.EVENT_BUS.post(event))
{
return null;
}
return event.component;
}
}

View file

@ -9,7 +9,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import net.minecraft.util.DamageSource;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemArmor;
import net.minecraft.item.ItemStack;
@ -39,7 +39,7 @@ public interface ISpecialArmor
* @param slot The armor slot the item is in.
* @return A ArmorProperties instance holding information about how the armor effects damage.
*/
public ArmorProperties getProperties(EntityLiving player, ItemStack armor, DamageSource source, double damage, int slot);
public ArmorProperties getProperties(EntityLivingBase player, ItemStack armor, DamageSource source, double damage, int slot);
/**
* Get the displayed effective armor.
@ -63,7 +63,7 @@ public interface ISpecialArmor
* @param damage The amount of damage being applied to the armor
* @param slot The armor slot the item is in.
*/
public abstract void damageArmor(EntityLiving entity, ItemStack stack, DamageSource source, int damage, int slot);
public abstract void damageArmor(EntityLivingBase entity, ItemStack stack, DamageSource source, int damage, int slot);
public static class ArmorProperties implements Comparable<ArmorProperties>
{
@ -90,7 +90,7 @@ public interface ISpecialArmor
* @param damage The total damage being done
* @return The left over damage that has not been absorbed by the armor
*/
public static int ApplyArmor(EntityLiving entity, ItemStack[] inventory, DamageSource source, double damage)
public static float ApplyArmor(EntityLivingBase entity, ItemStack[] inventory, DamageSource source, double damage)
{
if (DEBUG)
{
@ -167,13 +167,11 @@ public interface ISpecialArmor
}
damage -= (damage * ratio);
}
damage += entity.carryoverDamage;
if (DEBUG)
{
System.out.println("Return: " + (int)(damage / 25D) + " " + damage);
System.out.println("Return: " + (int)(damage / 25.0F) + " " + damage);
}
entity.carryoverDamage = (int)damage % 25;
return (int)(damage / 25D);
return (float)(damage / 25.0F);
}
/**

View file

@ -1,19 +1,20 @@
package net.minecraftforge.event;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.util.ChatMessageComponent;
@Cancelable
public class ServerChatEvent extends Event
{
public final String message, username;
public final EntityPlayerMP player;
public String line;
public ServerChatEvent(EntityPlayerMP player, String message, String line)
public ChatMessageComponent component;
public ServerChatEvent(EntityPlayerMP player, String message, ChatMessageComponent line)
{
super();
this.message = message;
this.player = player;
this.username = player.username;
this.line = line;
this.component = component;
}
}

View file

@ -1,6 +1,7 @@
package net.minecraftforge.event.entity.living;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase;
import net.minecraftforge.event.Cancelable;
import net.minecraftforge.event.Event;
@ -16,9 +17,9 @@ public class EnderTeleportEvent extends LivingEvent
public double targetX;
public double targetY;
public double targetZ;
public int attackDamage;
public float attackDamage;
public EnderTeleportEvent(EntityLiving entity, double targetX, double targetY, double targetZ, int attackDamage)
public EnderTeleportEvent(EntityLivingBase entity, double targetX, double targetY, double targetZ, float attackDamage)
{
super(entity);
this.targetX = targetX;

View file

@ -1,15 +1,15 @@
package net.minecraftforge.event.entity.living;
import net.minecraft.util.DamageSource;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase;
import net.minecraftforge.event.Cancelable;
@Cancelable
public class LivingAttackEvent extends LivingEvent
{
public final DamageSource source;
public final int ammount;
public LivingAttackEvent(EntityLiving entity, DamageSource source, int ammount)
public final float ammount;
public LivingAttackEvent(EntityLivingBase entity, DamageSource source, float ammount)
{
super(entity);
this.source = source;

View file

@ -1,14 +1,14 @@
package net.minecraftforge.event.entity.living;
import net.minecraft.util.DamageSource;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase;
import net.minecraftforge.event.Cancelable;
@Cancelable
public class LivingDeathEvent extends LivingEvent
{
public final DamageSource source;
public LivingDeathEvent(EntityLiving entity, DamageSource source)
public LivingDeathEvent(EntityLivingBase entity, DamageSource source)
{
super(entity);
this.source = source;

View file

@ -4,7 +4,7 @@ import java.util.ArrayList;
import net.minecraft.util.DamageSource;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase;
import net.minecraftforge.event.Cancelable;
@Cancelable
@ -16,7 +16,7 @@ public class LivingDropsEvent extends LivingEvent
public final boolean recentlyHit;
public final int specialDropValue;
public LivingDropsEvent(EntityLiving entity, DamageSource source, ArrayList<EntityItem> drops, int lootingLevel, boolean recentlyHit, int specialDropValue)
public LivingDropsEvent(EntityLivingBase entity, DamageSource source, ArrayList<EntityItem> drops, int lootingLevel, boolean recentlyHit, int specialDropValue)
{
super(entity);
this.source = source;

View file

@ -1,13 +1,13 @@
package net.minecraftforge.event.entity.living;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase;
import net.minecraftforge.event.Cancelable;
import net.minecraftforge.event.entity.EntityEvent;
public class LivingEvent extends EntityEvent
{
public final EntityLiving entityLiving;
public LivingEvent(EntityLiving entity)
public final EntityLivingBase entityLiving;
public LivingEvent(EntityLivingBase entity)
{
super(entity);
entityLiving = entity;
@ -16,11 +16,11 @@ public class LivingEvent extends EntityEvent
@Cancelable
public static class LivingUpdateEvent extends LivingEvent
{
public LivingUpdateEvent(EntityLiving e){ super(e); }
public LivingUpdateEvent(EntityLivingBase e){ super(e); }
}
public static class LivingJumpEvent extends LivingEvent
{
public LivingJumpEvent(EntityLiving e){ super(e); }
public LivingJumpEvent(EntityLivingBase e){ super(e); }
}
}

View file

@ -1,13 +1,13 @@
package net.minecraftforge.event.entity.living;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase;
import net.minecraftforge.event.Cancelable;
@Cancelable
public class LivingFallEvent extends LivingEvent
{
public float distance;
public LivingFallEvent(EntityLiving entity, float distance)
public LivingFallEvent(EntityLivingBase entity, float distance)
{
super(entity);
this.distance = distance;

View file

@ -1,15 +1,15 @@
package net.minecraftforge.event.entity.living;
import net.minecraft.util.DamageSource;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase;
import net.minecraftforge.event.Cancelable;
@Cancelable
public class LivingHurtEvent extends LivingEvent
{
public final DamageSource source;
public int ammount;
public LivingHurtEvent(EntityLiving entity, DamageSource source, int ammount)
public float ammount;
public LivingHurtEvent(EntityLivingBase entity, DamageSource source, float ammount)
{
super(entity);
this.source = source;

View file

@ -1,12 +1,12 @@
package net.minecraftforge.event.entity.living;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase;
public class LivingSetAttackTargetEvent extends LivingEvent
{
public final EntityLiving target;
public LivingSetAttackTargetEvent(EntityLiving entity, EntityLiving target)
public final EntityLivingBase target;
public LivingSetAttackTargetEvent(EntityLivingBase entity, EntityLivingBase target)
{
super(entity);
this.target = target;

View file

@ -2,6 +2,7 @@ package net.minecraftforge.transformers;
import java.util.List;
import net.minecraft.launchwrapper.IClassTransformer;
import net.minecraftforge.event.Event;
import net.minecraftforge.event.ListenerList;
@ -11,8 +12,6 @@ import static org.objectweb.asm.Opcodes.*;
import static org.objectweb.asm.Type.*;
import static org.objectweb.asm.ClassWriter.*;
import cpw.mods.fml.relauncher.IClassTransformer;
public class EventTransformer implements IClassTransformer
{
public EventTransformer()

View file

@ -18,7 +18,7 @@
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.EnumCreatureType;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.item.EntityXPOrb;
@ -54,7 +54,7 @@
/**
* used as foreach item, if item.tab = current tab, display it on the screen
*/
@@ -454,9 +471,10 @@
@@ -460,9 +477,10 @@
return this.needsRandomTick;
}
@ -66,7 +66,7 @@
}
/**
@@ -479,7 +497,7 @@
@@ -485,7 +503,7 @@
*/
public float getBlockBrightness(IBlockAccess par1IBlockAccess, int par2, int par3, int par4)
{
@ -75,7 +75,7 @@
}
@SideOnly(Side.CLIENT)
@@ -489,7 +507,7 @@
@@ -495,7 +513,7 @@
*/
public int getMixedBrightnessForBlock(IBlockAccess par1IBlockAccess, int par2, int par3, int par4)
{
@ -84,7 +84,7 @@
}
@SideOnly(Side.CLIENT)
@@ -639,7 +657,13 @@
@@ -645,7 +663,13 @@
/**
* ejects contained items into the world, and notifies neighbours of an update, as appropriate
*/
@ -99,7 +99,7 @@
/**
* Returns the quantity of items to drop on block destruction.
@@ -664,7 +688,7 @@
@@ -670,7 +694,7 @@
public float getPlayerRelativeBlockHardness(EntityPlayer par1EntityPlayer, World par2World, int par3, int par4, int par5)
{
float f = this.getBlockHardness(par2World, par3, par4, par5);
@ -108,7 +108,7 @@
}
/**
@@ -682,18 +706,13 @@
@@ -688,18 +712,13 @@
{
if (!par1World.isRemote)
{
@ -131,7 +131,7 @@
}
}
}
@@ -926,7 +945,8 @@
@@ -932,7 +951,8 @@
public boolean canPlaceBlockAt(World par1World, int par2, int par3, int par4)
{
int l = par1World.getBlockId(par2, par3, par4);
@ -141,7 +141,7 @@
}
/**
@@ -1086,7 +1106,7 @@
@@ -1092,7 +1112,7 @@
par2EntityPlayer.addStat(StatList.mineBlockStatArray[this.blockID], 1);
par2EntityPlayer.addExhaustion(0.025F);
@ -150,7 +150,7 @@
{
ItemStack itemstack = this.createStackedBlock(par6);
@@ -1102,12 +1122,13 @@
@@ -1108,12 +1128,13 @@
}
}
@ -165,7 +165,7 @@
}
/**
@@ -1443,4 +1464,950 @@
@@ -1453,4 +1474,945 @@
canBlockGrass[0] = true;
StatList.initBreakableStats();
}
@ -200,12 +200,7 @@
+ * @param entity The entity trying to use the ladder, CAN be null.
+ * @return True if the block should act like a ladder
+ */
+ public boolean isLadder(World world, int x, int y, int z, EntityLiving entity)
+ {
+ return isLadder(world, x, y, z);
+ }
+ @Deprecated //See EntityLiving sensitive version above
+ public boolean isLadder(World world, int x, int y, int z)
+ public boolean isLadder(World world, int x, int y, int z, EntityLivingBase entity)
+ {
+ return false;
+ }
@ -575,7 +570,7 @@
+ * @param player The player or camera entity, null in some cases.
+ * @return True to treat this as a bed
+ */
+ public boolean isBed(World world, int x, int y, int z, EntityLiving player)
+ public boolean isBed(World world, int x, int y, int z, EntityLivingBase player)
+ {
+ return blockID == Block.bed.blockID;
+ }

View file

@ -8,12 +8,12 @@
+
final BlockRailBase theRail;
public BlockBaseRailLogic(BlockRailBase par1, World par2, int par3, int par4, int par5)
public BlockBaseRailLogic(BlockRailBase par1BlockRailBase, World par2World, int par3, int par4, int par5)
@@ -27,17 +29,11 @@
this.railY = par4;
this.railZ = par5;
int l = par2.getBlockId(par3, par4, par5);
- int i1 = par2.getBlockMetadata(par3, par4, par5);
int l = par2World.getBlockId(par3, par4, par5);
- int i1 = par2World.getBlockMetadata(par3, par4, par5);
-
- if (((BlockRailBase)Block.blocksList[l]).isPowered)
- {
@ -26,9 +26,9 @@
- }
+
+ BlockRailBase target = (BlockRailBase)Block.blocksList[l];
+ int i1 = target.getBasicRailMetadata(par2, null, par3, par4, par5);
+ isStraightRail = !target.isFlexibleRail(par2, par3, par4, par5);
+ canMakeSlopes = target.canMakeSlopes(par2, par3, par4, par5);
+ int i1 = target.getBasicRailMetadata(par2World, null, par3, par4, par5);
+ isStraightRail = !target.isFlexibleRail(par2World, par3, par4, par5);
+ canMakeSlopes = target.canMakeSlopes(par2World, par3, par4, par5);
this.setBasicRail(i1);
}

View file

@ -23,8 +23,8 @@
}
@@ -182,4 +186,22 @@
this.cactusTopIcon = par1IconRegister.registerIcon("cactus_top");
this.cactusBottomIcon = par1IconRegister.registerIcon("cactus_bottom");
this.cactusTopIcon = par1IconRegister.registerIcon(this.func_111023_E() + "_top");
this.cactusBottomIcon = par1IconRegister.registerIcon(this.func_111023_E() + "_bottom");
}
+
+ @Override

View file

@ -9,7 +9,7 @@
import java.util.Random;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IconRegister;
@@ -202,7 +204,14 @@
@@ -201,7 +203,14 @@
*/
public void dropBlockAsItemWithChance(World par1World, int par2, int par3, int par4, int par5, float par6, int par7)
{
@ -25,7 +25,7 @@
byte b0 = 1;
if (j1 >= 2)
@@ -212,8 +221,9 @@
@@ -211,8 +220,9 @@
for (int k1 = 0; k1 < b0; ++k1)
{
@ -37,8 +37,8 @@
}
@SideOnly(Side.CLIENT)
@@ -249,4 +259,10 @@
this.iconArray[i] = par1IconRegister.registerIcon(cocoaIcons[i]);
@@ -248,4 +258,10 @@
this.iconArray[i] = par1IconRegister.registerIcon(this.func_111023_E() + "_stage_" + i);
}
}
+

View file

@ -1,6 +1,6 @@
--- ../src_base/minecraft/net/minecraft/block/BlockDoor.java
+++ ../src_work/minecraft/net/minecraft/block/BlockDoor.java
@@ -303,7 +303,7 @@
@@ -290,7 +290,7 @@
{
if (this.blockMaterial == Material.iron)
{

View file

@ -19,7 +19,7 @@
this.setBurnRate(Block.planks.blockID, 5, 20);
this.setBurnRate(Block.woodDoubleSlab.blockID, 5, 20);
this.setBurnRate(Block.woodSingleSlab.blockID, 5, 20);
@@ -60,8 +65,7 @@
@@ -62,8 +67,7 @@
*/
private void setBurnRate(int par1, int par2, int par3)
{
@ -29,7 +29,7 @@
}
/**
@@ -121,12 +125,8 @@
@@ -123,12 +127,8 @@
{
if (par1World.getGameRules().getGameRuleBooleanValue("doFireTick"))
{
@ -44,7 +44,7 @@
if (!this.canPlaceBlockAt(par1World, par2, par3, par4))
{
@@ -155,7 +155,7 @@
@@ -157,7 +157,7 @@
par1World.setBlockToAir(par2, par3, par4);
}
}
@ -53,7 +53,7 @@
{
par1World.setBlockToAir(par2, par3, par4);
}
@@ -169,12 +169,12 @@
@@ -171,12 +171,12 @@
b0 = -50;
}
@ -72,7 +72,7 @@
for (int i1 = par2 - 1; i1 <= par2 + 1; ++i1)
{
@@ -228,9 +228,20 @@
@@ -230,9 +230,20 @@
return false;
}
@ -94,7 +94,7 @@
if (par6Random.nextInt(par5) < j1)
{
@@ -264,7 +275,12 @@
@@ -266,7 +277,12 @@
*/
private boolean canNeighborBurn(World par1World, int par2, int par3, int par4)
{
@ -108,7 +108,7 @@
}
/**
@@ -280,12 +296,12 @@
@@ -282,12 +298,12 @@
}
else
{
@ -127,7 +127,7 @@
return l;
}
}
@@ -300,21 +316,24 @@
@@ -302,21 +318,24 @@
/**
* Checks the specified block coordinate to see if it can catch fire. Args: blockAccess, x, y, z
@ -157,7 +157,7 @@
}
/**
@@ -372,9 +391,9 @@
@@ -374,9 +393,9 @@
float f1;
float f2;
@ -170,7 +170,7 @@
{
for (l = 0; l < 2; ++l)
{
@@ -385,7 +404,7 @@
@@ -387,7 +406,7 @@
}
}
@ -179,7 +179,7 @@
{
for (l = 0; l < 2; ++l)
{
@@ -396,7 +415,7 @@
@@ -398,7 +417,7 @@
}
}
@ -188,7 +188,7 @@
{
for (l = 0; l < 2; ++l)
{
@@ -407,7 +426,7 @@
@@ -409,7 +428,7 @@
}
}
@ -197,7 +197,7 @@
{
for (l = 0; l < 2; ++l)
{
@@ -418,7 +437,7 @@
@@ -420,7 +439,7 @@
}
}
@ -206,7 +206,7 @@
{
for (l = 0; l < 2; ++l)
{
@@ -467,4 +486,46 @@
@@ -469,4 +488,46 @@
{
return this.iconArray[0];
}

View file

@ -4,7 +4,7 @@
import java.util.Random;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.entity.EntityLiving;
+import net.minecraft.entity.EntityLivingBase;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
@ -86,7 +86,7 @@
}
+
+ @Override
+ public boolean isLadder(World world, int x, int y, int z, EntityLiving entity)
+ public boolean isLadder(World world, int x, int y, int z, EntityLivingBase entity)
+ {
+ return true;
+ }

View file

@ -19,7 +19,7 @@
+public class BlockLeaves extends BlockLeavesBase implements IShearable
{
public static final String[] LEAF_TYPES = new String[] {"oak", "spruce", "birch", "jungle"};
public static final String[][] field_94396_b = new String[][] {{"leaves", "leaves_spruce", "leaves", "leaves_jungle"}, {"leaves_opaque", "leaves_spruce_opaque", "leaves_opaque", "leaves_jungle_opaque"}};
public static final String[][] field_94396_b = new String[][] {{"leaves_oak", "leaves_spruce", "leaves_birch", "leaves_jungle"}, {"leaves_oak_opaque", "leaves_spruce_opaque", "leaves_birch_opaque", "leaves_jungle_opaque"}};
@@ -107,10 +111,9 @@
{
int j2 = par1World.getBlockId(par2 + k1, par3 + l1, par4 + i2);

View file

@ -1,6 +1,6 @@
--- ../src_base/minecraft/net/minecraft/block/BlockLog.java
+++ ../src_work/minecraft/net/minecraft/block/BlockLog.java
@@ -69,14 +69,9 @@
@@ -60,14 +60,9 @@
{
int j2 = par1World.getBlockId(par2 + k1, par3 + l1, par4 + i2);
@ -17,8 +17,8 @@
}
}
}
@@ -176,4 +171,16 @@
this.iconArray[i] = par1IconRegister.registerIcon(treeTextureTypes[i]);
@@ -125,4 +120,16 @@
this.tree_top[i] = par1IconRegister.registerIcon(this.func_111023_E() + "_" + woodType[i] + "_top");
}
}
+

View file

@ -1,7 +1,7 @@
--- ../src_base/minecraft/net/minecraft/block/BlockMushroom.java
+++ ../src_work/minecraft/net/minecraft/block/BlockMushroom.java
@@ -6,6 +6,8 @@
import net.minecraft.client.renderer.texture.IconRegister;
@@ -3,6 +3,8 @@
import java.util.Random;
import net.minecraft.world.World;
import net.minecraft.world.gen.feature.WorldGenBigMushroom;
+
@ -9,7 +9,7 @@
public class BlockMushroom extends BlockFlower
{
@@ -102,7 +104,9 @@
@@ -96,7 +98,9 @@
if (par3 >= 0 && par3 < 256)
{
int l = par1World.getBlockId(par2, par3 - 1, par4);

View file

@ -17,7 +17,7 @@
public class BlockNetherStalk extends BlockFlower
{
@@ -39,7 +42,8 @@
@@ -38,7 +41,8 @@
*/
public boolean canBlockStay(World par1World, int par2, int par3, int par4)
{
@ -27,7 +27,7 @@
}
/**
@@ -81,25 +85,7 @@
@@ -80,25 +84,7 @@
*/
public void dropBlockAsItemWithChance(World par1World, int par2, int par3, int par4, int par5, float par6, int par7)
{
@ -54,8 +54,8 @@
}
/**
@@ -143,4 +129,23 @@
this.iconArray[i] = par1IconRegister.registerIcon(field_94373_a[i]);
@@ -142,4 +128,23 @@
this.iconArray[i] = par1IconRegister.registerIcon(this.func_111023_E() + "_stage_" + i);
}
}
+

View file

@ -1,6 +1,6 @@
--- ../src_base/minecraft/net/minecraft/block/BlockPistonBase.java
+++ ../src_work/minecraft/net/minecraft/block/BlockPistonBase.java
@@ -437,7 +437,7 @@
@@ -439,7 +439,7 @@
return false;
}
@ -9,7 +9,7 @@
}
}
@@ -455,14 +455,14 @@
@@ -457,14 +457,14 @@
{
if (l1 < 13)
{
@ -26,7 +26,7 @@
{
if (!canPushBlock(i2, par0World, i1, j1, k1, true))
{
@@ -505,14 +505,14 @@
@@ -507,14 +507,14 @@
if (l1 < 13)
{
@ -43,7 +43,7 @@
{
if (!canPushBlock(i2, par1World, i1, j1, k1, true))
{
@@ -533,7 +533,9 @@
@@ -535,7 +535,9 @@
continue;
}

View file

@ -9,7 +9,7 @@
public class BlockSapling extends BlockFlower
{
public static final String[] WOOD_TYPES = new String[] {"oak", "spruce", "birch", "jungle"};
@@ -77,6 +79,8 @@
@@ -76,6 +78,8 @@
*/
public void growTree(World par1World, int par2, int par3, int par4, Random par5Random)
{

View file

@ -9,7 +9,7 @@
import java.util.Random;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.entity.EntityLiving;
+import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
@ -24,7 +24,7 @@
{
public BlockVine(int par1)
{
@@ -439,14 +444,26 @@
@@ -440,14 +445,26 @@
*/
public void harvestBlock(World par1World, EntityPlayer par2EntityPlayer, int par3, int par4, int par5, int par6)
{
@ -55,7 +55,7 @@
+ }
+
+ @Override
+ public boolean isLadder(World world, int x, int y, int z, EntityLiving entity)
+ public boolean isLadder(World world, int x, int y, int z, EntityLivingBase entity)
+ {
+ return true;
}

View file

@ -1,6 +1,6 @@
--- ../src_base/minecraft/net/minecraft/client/Minecraft.java
+++ ../src_work/minecraft/net/minecraft/client/Minecraft.java
@@ -123,6 +123,14 @@
@@ -136,6 +136,14 @@
import com.google.common.collect.MapDifference;
@ -13,9 +13,9 @@
+import net.minecraftforge.event.world.WorldEvent;
+
@SideOnly(Side.CLIENT)
public abstract class Minecraft implements Runnable, IPlayerUsage
public class Minecraft implements IPlayerUsage
{
@@ -372,7 +380,7 @@
@@ -414,7 +422,7 @@
try
{
@ -24,16 +24,16 @@
}
catch (LWJGLException lwjglexception)
{
@@ -450,7 +458,7 @@
}
@@ -493,7 +501,7 @@
this.effectRenderer = new EffectRenderer(this.theWorld, this.renderEngine);
FMLClientHandler.instance().finishMinecraftLoading();
this.checkGLError("Post startup");
- this.ingameGUI = new GuiIngame(this);
+ this.ingameGUI = new GuiIngameForge(this);
if (this.serverName != null)
{
@@ -1238,7 +1246,7 @@
@@ -1292,7 +1300,7 @@
if (this.thePlayer.canCurrentToolHarvestBlock(j, k, l))
{
@ -42,7 +42,7 @@
this.thePlayer.swingItem();
}
}
@@ -1304,7 +1312,8 @@
@@ -1358,7 +1366,8 @@
{
int j1 = itemstack != null ? itemstack.stackSize : 0;
@ -52,7 +52,7 @@
{
flag = false;
this.thePlayer.swingItem();
@@ -1330,7 +1339,8 @@
@@ -1384,7 +1393,8 @@
{
ItemStack itemstack1 = this.thePlayer.inventory.getCurrentItem();
@ -62,7 +62,7 @@
{
this.entityRenderer.itemRenderer.resetEquippedProgress2();
}
@@ -2010,6 +2020,11 @@
@@ -2032,6 +2042,11 @@
{
this.statFileWriter.syncStats();
@ -74,7 +74,7 @@
if (par1WorldClient == null)
{
NetClientHandler netclienthandler = this.getNetHandler();
@@ -2027,6 +2042,18 @@
@@ -2049,6 +2064,18 @@
if (this.theIntegratedServer != null)
{
this.theIntegratedServer.initiateShutdown();
@ -93,7 +93,7 @@
}
this.theIntegratedServer = null;
@@ -2354,103 +2381,12 @@
@@ -2219,103 +2246,12 @@
if (this.objectMouseOver != null)
{
boolean flag = this.thePlayer.capabilities.isCreativeMode;
@ -201,7 +201,7 @@
if (flag)
{
@@ -2539,11 +2475,18 @@
@@ -2397,11 +2333,18 @@
par1PlayerUsageSnooper.addData("gl_max_texture_size", Integer.valueOf(getGLMaximumTextureSize()));
}
@ -220,7 +220,7 @@
for (int i = 16384; i > 0; i >>= 1)
{
GL11.glTexImage2D(GL11.GL_PROXY_TEXTURE_2D, 0, GL11.GL_RGBA, i, i, 0, GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, (ByteBuffer)null);
@@ -2551,6 +2494,7 @@
@@ -2409,6 +2352,7 @@
if (j != 0)
{

View file

@ -10,52 +10,49 @@
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import java.io.File;
@@ -53,9 +57,11 @@
@@ -61,9 +65,11 @@
private Random rand = new Random();
private int ticksBeforeMusic;
+ public static int MUSIC_INTERVAL = 12000;
+
public SoundManager()
public SoundManager(ResourceManager par1ResourceManager, GameSettings par2GameSettings, File par3File)
{
- this.ticksBeforeMusic = this.rand.nextInt(12000);
+ this.ticksBeforeMusic = this.rand.nextInt(MUSIC_INTERVAL);
}
/**
@@ -70,6 +76,8 @@
{
this.tryToSetLibraryAndCodecs();
this.options = par2GameSettings;
this.field_130085_i = par3File;
this.soundPoolSounds = new SoundPool(par1ResourceManager, "sound", true);
@@ -75,6 +81,7 @@
SoundSystemConfig.addLibrary(LibraryLWJGLOpenAL.class);
SoundSystemConfig.setCodec("ogg", CodecJOrbis.class);
SoundSystemConfig.setCodec("wav", CodecWav.class);
+ MinecraftForge.EVENT_BUS.post(new SoundSetupEvent(this));
}
+ ModCompatibilityClient.audioModLoad(this);
catch (SoundSystemException soundsystemexception)
{
@@ -90,6 +97,7 @@
this.stopAllSounds();
this.closeMinecraft();
this.tryToSetLibraryAndCodecs();
+ MinecraftForge.EVENT_BUS.post(new SoundLoadEvent(this));
}
/**
@@ -89,6 +97,8 @@
SoundSystemConfig.setCodec("ogg", CodecJOrbis.class);
SoundSystemConfig.setCodec("mus", CodecMus.class);
SoundSystemConfig.setCodec("wav", CodecWav.class);
+ ModCompatibilityClient.audioModAddCodecs();
+ MinecraftForge.EVENT_BUS.post(new SoundSetupEvent(this));
sndSystem = new SoundSystem();
this.options.soundVolume = f;
this.options.musicVolume = f1;
@@ -179,10 +189,12 @@
}
SoundPoolEntry soundpoolentry = this.soundPoolMusic.getRandomSound();
+ soundpoolentry = ModCompatibilityClient.audioModPickBackgroundMusic(this, soundpoolentry);
+ soundpoolentry = SoundEvent.getResult(new PlayBackgroundMusicEvent(this, soundpoolentry));
if (soundpoolentry != null)
private void func_130083_h()
@@ -236,10 +244,11 @@
else
{
- this.ticksBeforeMusic = this.rand.nextInt(12000) + 12000;
+ this.ticksBeforeMusic = this.rand.nextInt(MUSIC_INTERVAL) + MUSIC_INTERVAL;
sndSystem.backgroundMusic("BgMusic", soundpoolentry.soundUrl, soundpoolentry.soundName, false);
sndSystem.setVolume("BgMusic", this.options.musicVolume);
sndSystem.play("BgMusic");
@@ -249,6 +261,7 @@
SoundPoolEntry soundpoolentry = this.soundPoolMusic.getRandomSound();
+ soundpoolentry = SoundEvent.getResult(new PlayBackgroundMusicEvent(this, soundpoolentry));
if (soundpoolentry != null)
{
- this.ticksBeforeMusic = this.rand.nextInt(12000) + 12000;
+ this.ticksBeforeMusic = this.rand.nextInt(MUSIC_INTERVAL) + MUSIC_INTERVAL;
this.sndSystem.backgroundMusic("BgMusic", soundpoolentry.func_110457_b(), soundpoolentry.func_110458_a(), false);
this.sndSystem.setVolume("BgMusic", this.options.musicVolume);
this.sndSystem.play("BgMusic");
@@ -307,6 +316,7 @@
if (par1Str != null)
{
SoundPoolEntry soundpoolentry = this.soundPoolStreaming.getRandomSoundFromSoundPool(par1Str);
@ -63,43 +60,43 @@
if (soundpoolentry != null)
{
@@ -260,6 +273,7 @@
float f3 = 16.0F;
sndSystem.newStreamingSource(true, s1, soundpoolentry.soundUrl, soundpoolentry.soundName, false, par2, par3, par4, 2, f3 * 4.0F);
sndSystem.setVolume(s1, 0.5F * this.options.soundVolume);
@@ -317,6 +327,7 @@
this.sndSystem.newStreamingSource(true, s1, soundpoolentry.func_110457_b(), soundpoolentry.func_110458_a(), false, par2, par3, par4, 2, 64.0F);
this.sndSystem.setVolume(s1, 0.5F * this.options.soundVolume);
+ MinecraftForge.EVENT_BUS.post(new PlayStreamingSourceEvent(this, s1, par2, par3, par4));
sndSystem.play(s1);
this.sndSystem.play(s1);
}
}
@@ -439,6 +453,7 @@
if (loaded && this.options.soundVolume != 0.0F)
@@ -485,6 +496,7 @@
if (this.loaded && this.options.soundVolume != 0.0F)
{
SoundPoolEntry soundpoolentry = this.soundPoolSounds.getRandomSoundFromSoundPool(par1Str);
+ soundpoolentry = SoundEvent.getResult(new PlaySoundEvent(this, soundpoolentry, par1Str, par2, par3, par4, par5, par6));
if (soundpoolentry != null && par5 > 0.0F)
{
@@ -460,6 +475,7 @@
}
@@ -506,6 +518,7 @@
sndSystem.setVolume(s1, par5 * this.options.soundVolume);
this.sndSystem.setPitch(s1, par6);
this.sndSystem.setVolume(s1, par5 * this.options.soundVolume);
+ MinecraftForge.EVENT_BUS.post(new PlaySoundSourceEvent(this, s1, par2, par3, par4));
sndSystem.play(s1);
this.sndSystem.play(s1);
}
}
@@ -474,6 +490,7 @@
if (loaded && this.options.soundVolume != 0.0F)
@@ -520,6 +533,7 @@
if (this.loaded && this.options.soundVolume != 0.0F)
{
SoundPoolEntry soundpoolentry = this.soundPoolSounds.getRandomSoundFromSoundPool(par1Str);
+ soundpoolentry = SoundEvent.getResult(new PlaySoundEffectEvent(this, soundpoolentry, par1Str, par2, par3));
if (soundpoolentry != null)
if (soundpoolentry != null && par2 > 0.0F)
{
@@ -489,6 +506,7 @@
@@ -535,6 +549,7 @@
par2 *= 0.25F;
sndSystem.setPitch(s1, par3);
sndSystem.setVolume(s1, par2 * this.options.soundVolume);
this.sndSystem.setPitch(s1, par3);
this.sndSystem.setVolume(s1, par2 * this.options.soundVolume);
+ MinecraftForge.EVENT_BUS.post(new PlaySoundEffectSourceEvent(this, s1));
sndSystem.play(s1);
this.sndSystem.play(s1);
}
}

View file

@ -1,15 +1,15 @@
--- ../src_base/minecraft/net/minecraft/client/entity/EntityPlayerSP.java
+++ ../src_work/minecraft/net/minecraft/client/entity/EntityPlayerSP.java
@@ -46,6 +46,8 @@
@@ -49,6 +49,8 @@
import net.minecraft.util.MovementInput;
import net.minecraft.util.Session;
import net.minecraft.util.StringUtils;
import net.minecraft.world.World;
+import net.minecraftforge.common.MinecraftForge;
+import net.minecraftforge.event.entity.PlaySoundAtEntityEvent;
@SideOnly(Side.CLIENT)
public class EntityPlayerSP extends EntityPlayer
@@ -661,6 +663,12 @@
public class EntityPlayerSP extends AbstractClientPlayer
@@ -685,6 +687,12 @@
public void playSound(String par1Str, float par2, float par3)
{
@ -21,4 +21,4 @@
+ par1Str = event.name;
this.worldObj.playSound(this.posX, this.posY - (double)this.yOffset, this.posZ, par1Str, par2, par3, false);
}
}

View file

@ -1,9 +1,9 @@
--- ../src_base/minecraft/net/minecraft/client/gui/GuiControls.java
+++ ../src_work/minecraft/net/minecraft/client/gui/GuiControls.java
@@ -6,6 +6,8 @@
import net.minecraft.client.settings.GameSettings;
import net.minecraft.client.settings.KeyBinding;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.StringTranslate;
+
+import net.minecraftforge.client.GuiControlsScrollPanel;
@ -18,12 +18,10 @@
public GuiControls(GuiScreen par1GuiScreen, GameSettings par2GameSettings)
{
@@ -43,15 +47,10 @@
@@ -43,14 +47,9 @@
*/
public void initGui()
{
+ scrollPane = new GuiControlsScrollPanel(this, options, mc);
StringTranslate stringtranslate = StringTranslate.getInstance();
- int i = this.getLeftBorder();
-
- for (int j = 0; j < this.options.keyBindings.length; ++j)
@ -31,13 +29,14 @@
- this.buttonList.add(new GuiSmallButton(j, i + j % 2 * 160, this.height / 6 + 24 * (j >> 1), 70, 20, this.options.getOptionDisplayString(j)));
- }
-
- this.buttonList.add(new GuiButton(200, this.width / 2 - 100, this.height / 6 + 168, stringtranslate.translateKey("gui.done")));
+ this.buttonList.add(new GuiButton(200, this.width / 2 - 100, this.height - 28, stringtranslate.translateKey("gui.done")));
+ scrollPane.registerScrollButtons(buttonList, 7, 8);
this.screenTitle = stringtranslate.translateKey("controls.title");
- this.buttonList.add(new GuiButton(200, this.width / 2 - 100, this.height / 6 + 168, I18n.func_135053_a("gui.done")));
+ scrollPane = new GuiControlsScrollPanel(this, options, mc);
+ this.buttonList.add(new GuiButton(200, this.width / 2 - 100, this.height - 28, I18n.func_135053_a("gui.done")));
+ scrollPane.func_110509_d(7, 8);
this.screenTitle = I18n.func_135053_a("controls.title");
}
@@ -59,20 +58,10 @@
@@ -58,20 +57,10 @@
* Fired when a control is clicked. This is the equivalent of ActionListener.actionPerformed(ActionEvent e).
*/
protected void actionPerformed(GuiButton par1GuiButton)
@ -59,7 +58,7 @@
}
}
@@ -81,17 +70,7 @@
@@ -80,17 +69,7 @@
*/
protected void mouseClicked(int par1, int par2, int par3)
{
@ -78,7 +77,7 @@
}
/**
@@ -99,14 +78,7 @@
@@ -98,14 +77,7 @@
*/
protected void keyTyped(char par1, int par2)
{
@ -94,7 +93,7 @@
{
super.keyTyped(par1, par2);
}
@@ -118,6 +90,7 @@
@@ -117,6 +89,7 @@
public void drawScreen(int par1, int par2, float par3)
{
this.drawDefaultBackground();
@ -102,7 +101,7 @@
this.drawCenteredString(this.fontRenderer, this.screenTitle, this.width / 2, 20, 16777215);
int k = this.getLeftBorder();
int l = 0;
@@ -158,6 +131,10 @@
@@ -157,6 +130,10 @@
break;
}
}

View file

@ -1,6 +1,6 @@
--- ../src_base/minecraft/net/minecraft/client/gui/GuiCreateWorld.java
+++ ../src_work/minecraft/net/minecraft/client/gui/GuiCreateWorld.java
@@ -377,7 +377,7 @@
@@ -376,7 +376,7 @@
}
else if (par1GuiButton.id == 8)
{
@ -9,13 +9,12 @@
}
}
}
@@ -395,7 +395,8 @@
@@ -394,7 +394,7 @@
this.buttonBonusItems.drawButton = this.moreOptions;
this.buttonWorldType.drawButton = this.moreOptions;
this.buttonAllowCommands.drawButton = this.moreOptions;
- this.buttonCustomize.drawButton = this.moreOptions && WorldType.worldTypes[this.worldTypeId] == WorldType.FLAT;
+ this.buttonCustomize.drawButton = this.moreOptions && (WorldType.worldTypes[this.worldTypeId].isCustomizable());
+
StringTranslate stringtranslate;
if (this.moreOptions)
{

View file

@ -1,6 +1,6 @@
--- ../src_base/minecraft/net/minecraft/client/gui/GuiIngame.java
+++ ../src_work/minecraft/net/minecraft/client/gui/GuiIngame.java
@@ -34,6 +34,8 @@
@@ -40,6 +40,8 @@
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;
@ -9,7 +9,7 @@
@SideOnly(Side.CLIENT)
public class GuiIngame extends Gui
{
@@ -90,9 +92,16 @@
@@ -99,9 +101,16 @@
ItemStack itemstack = this.mc.thePlayer.inventory.armorItemInSlot(3);
@ -29,30 +29,29 @@
}
if (!this.mc.thePlayer.isPotionActive(Potion.confusion))
@@ -174,7 +183,7 @@
k3 = l - 39;
l2 = k3 - 10;
- k2 = this.mc.thePlayer.getTotalArmorValue();
+ k2 = ForgeHooks.getTotalArmorValue(mc.thePlayer);
i3 = -1;
if (this.mc.thePlayer.isPotionActive(Potion.regeneration))
@@ -435,7 +444,16 @@
GL11.glPushMatrix();
@@ -275,6 +284,16 @@
GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
- fontrenderer.drawStringWithShadow(s1, i1, j1, 16777215 + (j5 << 24));
fontrenderer.drawStringWithShadow(s1, k1, i2, 16777215 + (j2 << 24));
+ FontRenderer font = highlightingItemStack.getItem().getFontRenderer(highlightingItemStack);
+ if (font != null)
+ {
+ i1 = (k - font.getStringWidth(s1)) / 2;
+ font.drawStringWithShadow(s1, i1, j1, 16777215 + (j5 << 24));
+ k1 = (k - font.getStringWidth(s1)) / 2;
+ font.drawStringWithShadow(s1, k1, i2, 16777215 + (j2 << 24));
+ }
+ else
+ {
+ fontrenderer.drawStringWithShadow(s1, i1, j1, 16777215 + (j5 << 24));
+ fontrenderer.drawStringWithShadow(s1, k1, i2, 16777215 + (j2 << 24));
+ }
GL11.glDisable(GL11.GL_BLEND);
GL11.glPopMatrix();
}
@@ -563,7 +582,7 @@
int k2 = Math.max(10 - (j2 - 2), 3);
int l2 = i2 - (j2 - 1) * k2 - 10;
float f2 = f1;
- int i3 = this.mc.thePlayer.getTotalArmorValue();
+ int i3 = ForgeHooks.getTotalArmorValue(mc.thePlayer);
int j3 = -1;
if (this.mc.thePlayer.isPotionActive(Potion.regeneration))

View file

@ -1,19 +1,10 @@
--- ../src_base/minecraft/net/minecraft/client/gui/GuiSlot.java
+++ ../src_work/minecraft/net/minecraft/client/gui/GuiSlot.java
@@ -68,6 +68,8 @@
private boolean showSelectionBox = true;
private boolean field_77243_s;
private int field_77242_t;
+
+ public String BACKGROUND_IMAGE = "/gui/background.png";
public GuiSlot(Minecraft par1Minecraft, int par2, int par3, int par4, int par5, int par6)
{
@@ -332,16 +334,7 @@
@@ -325,16 +325,7 @@
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glDisable(GL11.GL_FOG);
Tessellator tessellator = Tessellator.instance;
- this.mc.renderEngine.bindTexture("/gui/background.png");
- this.mc.func_110434_K().func_110577_a(Gui.field_110325_k);
- GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
- float f1 = 32.0F;
- tessellator.startDrawingQuads();
@ -27,27 +18,14 @@
j1 = this.width / 2 - 92 - 16;
k1 = this.top + 4 - (int)this.amountScrolled;
@@ -470,10 +463,10 @@
/**
* Overlays the background to hide scrolled items
*/
- private void overlayBackground(int par1, int par2, int par3, int par4)
+ protected void overlayBackground(int par1, int par2, int par3, int par4)
{
Tessellator tessellator = Tessellator.instance;
- this.mc.renderEngine.bindTexture("/gui/background.png");
+ this.mc.renderEngine.bindTexture(BACKGROUND_IMAGE);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
float f = 32.0F;
tessellator.startDrawingQuads();
@@ -485,4 +478,18 @@
@@ -478,4 +469,18 @@
tessellator.addVertexWithUV(0.0D, (double)par1, 0.0D, 0.0D, (double)((float)par1 / f));
tessellator.draw();
}
+
+ protected void drawContainerBackground(Tessellator tess)
+ {
+ this.mc.renderEngine.bindTexture(BACKGROUND_IMAGE);
+ this.mc.func_110434_K().func_110577_a(Gui.field_110325_k);
+ GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
+ float height = 32.0F;
+ tess.startDrawingQuads();

View file

@ -10,7 +10,7 @@
import java.util.Random;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
@@ -20,6 +23,8 @@
@@ -22,6 +25,8 @@
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;
@ -19,8 +19,8 @@
@SideOnly(Side.CLIENT)
public class GuiAchievements extends GuiScreen
{
@@ -57,6 +62,10 @@
private int isMouseButtonDown = 0;
@@ -60,6 +65,10 @@
private int isMouseButtonDown;
private StatFileWriter statFileWriter;
+ private int currentPage = -1;
@ -30,7 +30,7 @@
public GuiAchievements(StatFileWriter par1StatFileWriter)
{
this.statFileWriter = par1StatFileWriter;
@@ -64,6 +73,14 @@
@@ -67,6 +76,14 @@
short short2 = 141;
this.field_74117_m = this.guiMapX = this.field_74124_q = (double)(AchievementList.openInventory.displayColumn * 24 - short1 / 2 - 12);
this.field_74115_n = this.guiMapY = this.field_74123_r = (double)(AchievementList.openInventory.displayRow * 24 - short2 / 2);
@ -45,15 +45,15 @@
}
/**
@@ -73,6 +90,7 @@
@@ -76,6 +93,7 @@
{
this.buttonList.clear();
this.buttonList.add(new GuiSmallButton(1, this.width / 2 + 24, this.height / 2 + 74, 80, 20, StatCollector.translateToLocal("gui.done")));
this.buttonList.add(new GuiSmallButton(1, this.width / 2 + 24, this.height / 2 + 74, 80, 20, I18n.func_135053_a("gui.done")));
+ this.buttonList.add(button = new GuiSmallButton(2, (width - achievementsPaneWidth) / 2 + 24, height / 2 + 74, 125, 20, AchievementPage.getTitle(currentPage)));
}
/**
@@ -84,6 +102,16 @@
@@ -87,6 +105,16 @@
{
this.mc.displayGuiScreen((GuiScreen)null);
this.mc.setIngameFocus();
@ -70,7 +70,7 @@
}
super.actionPerformed(par1GuiButton);
@@ -306,11 +334,12 @@
@@ -314,11 +342,12 @@
int i4;
int j4;
@ -88,7 +88,7 @@
{
k3 = achievement.displayColumn * 24 - k + 11 + k1;
j3 = achievement.displayRow * 24 - l + 11 + l1;
@@ -344,9 +373,9 @@
@@ -352,9 +381,9 @@
int l4;
int i5;

View file

@ -8,7 +8,7 @@
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.RenderHelper;
@@ -139,7 +140,11 @@
@@ -143,7 +144,11 @@
}
}
@ -20,21 +20,21 @@
InventoryPlayer inventoryplayer = this.mc.thePlayer.inventory;
ItemStack itemstack = this.draggedStack == null ? inventoryplayer.getItemStack() : this.draggedStack;
@@ -203,8 +208,11 @@
@@ -207,8 +212,11 @@
GL11.glTranslatef(0.0F, 0.0F, 32.0F);
this.zLevel = 200.0F;
itemRenderer.zLevel = 200.0F;
- itemRenderer.renderItemAndEffectIntoGUI(this.fontRenderer, this.mc.renderEngine, par1ItemStack, par2, par3);
- itemRenderer.renderItemOverlayIntoGUI(this.fontRenderer, this.mc.renderEngine, par1ItemStack, par2, par3 - (this.draggedStack == null ? 0 : 8), par4Str);
- itemRenderer.func_110797_b(this.fontRenderer, this.mc.func_110434_K(), par1ItemStack, par2, par3);
- itemRenderer.func_110793_a(this.fontRenderer, this.mc.func_110434_K(), par1ItemStack, par2, par3 - (this.draggedStack == null ? 0 : 8), par4Str);
+ FontRenderer font = null;
+ if (par1ItemStack != null) font = par1ItemStack.getItem().getFontRenderer(par1ItemStack);
+ if (font == null) font = fontRenderer;
+ itemRenderer.renderItemAndEffectIntoGUI(font, this.mc.renderEngine, par1ItemStack, par2, par3);
+ itemRenderer.renderItemOverlayIntoGUI(font, this.mc.renderEngine, par1ItemStack, par2, par3 - (this.draggedStack == null ? 0 : 8), par4Str);
+ itemRenderer.func_110797_b(font, this.mc.func_110434_K(), par1ItemStack, par2, par3);
+ itemRenderer.func_110793_a(font, this.mc.func_110434_K(), par1ItemStack, par2, par3 - (this.draggedStack == null ? 0 : 8), par4Str);
this.zLevel = 0.0F;
itemRenderer.zLevel = 0.0F;
}
@@ -225,7 +233,8 @@
@@ -229,7 +237,8 @@
}
}
@ -44,7 +44,7 @@
}
/**
@@ -238,6 +247,11 @@
@@ -242,6 +251,11 @@
}
protected void func_102021_a(List par1List, int par2, int par3)
@ -56,7 +56,7 @@
{
if (!par1List.isEmpty())
{
@@ -251,7 +265,7 @@
@@ -255,7 +269,7 @@
while (iterator.hasNext())
{
String s = (String)iterator.next();
@ -65,7 +65,7 @@
if (l > k)
{
@@ -296,7 +310,7 @@
@@ -300,7 +314,7 @@
for (int k2 = 0; k2 < par1List.size(); ++k2)
{
String s1 = (String)par1List.get(k2);

View file

@ -1,15 +1,15 @@
--- ../src_base/minecraft/net/minecraft/client/gui/inventory/GuiContainerCreative.java
+++ ../src_work/minecraft/net/minecraft/client/gui/inventory/GuiContainerCreative.java
@@ -56,6 +56,8 @@
private Slot field_74235_v = null;
private boolean field_74234_w = false;
@@ -61,6 +61,8 @@
private Slot field_74235_v;
private boolean field_74234_w;
private CreativeCrafting field_82324_x;
+ private static int tabPage = 0;
+ private int maxPages = 0;
public GuiContainerCreative(EntityPlayer par1EntityPlayer)
{
@@ -196,7 +198,7 @@
@@ -201,7 +203,7 @@
return;
}
@ -18,7 +18,7 @@
{
if (par3 == 0)
{
@@ -274,6 +276,13 @@
@@ -279,6 +281,13 @@
this.setCurrentCreativeTab(CreativeTabs.creativeTabArray[i]);
this.field_82324_x = new CreativeCrafting(this.mc);
this.mc.thePlayer.inventoryContainer.addCraftingToCrafters(this.field_82324_x);
@ -32,16 +32,16 @@
}
else
{
@@ -408,7 +417,7 @@
@@ -413,7 +422,7 @@
{
CreativeTabs creativetabs = CreativeTabs.creativeTabArray[selectedTabIndex];
- if (creativetabs.drawInForegroundOfTab())
+ if (creativetabs != null && creativetabs.drawInForegroundOfTab())
{
this.fontRenderer.drawString(creativetabs.getTranslatedTabLabel(), 8, 6, 4210752);
this.fontRenderer.drawString(I18n.func_135053_a(creativetabs.getTranslatedTabLabel()), 8, 6, 4210752);
}
@@ -457,7 +466,7 @@
@@ -462,7 +471,7 @@
{
CreativeTabs creativetabs = acreativetabs[k1];
@ -50,7 +50,7 @@
{
this.setCurrentCreativeTab(creativetabs);
return;
@@ -473,11 +482,17 @@
@@ -478,11 +487,17 @@
*/
private boolean needsScrollBars()
{
@ -68,7 +68,7 @@
int i = selectedTabIndex;
selectedTabIndex = par1CreativeTabs.getTabIndex();
ContainerCreative containercreative = (ContainerCreative)this.inventorySlots;
@@ -648,21 +663,42 @@
@@ -653,21 +668,42 @@
super.drawScreen(par1, par2, par3);
CreativeTabs[] acreativetabs = CreativeTabs.creativeTabArray;
@ -86,7 +86,7 @@
- if (this.renderCreativeInventoryHoveringText(creativetabs, par1, par2))
- {
+ if (creativetabs != null && renderCreativeInventoryHoveringText(creativetabs, par1, par2))
+ if (creativetabs != null && this.renderCreativeInventoryHoveringText(creativetabs, par1, par2))
+ {
+ rendered = true;
break;
@ -100,7 +100,7 @@
+
if (this.field_74235_v != null && selectedTabIndex == CreativeTabs.tabInventory.getTabIndex() && this.isPointInRegion(this.field_74235_v.xDisplayPosition, this.field_74235_v.yDisplayPosition, 16, 16, par1, par2))
{
this.drawCreativeTabHoveringText(StringTranslate.getInstance().translateKey("inventory.binSlot"), par1, par2);
this.drawCreativeTabHoveringText(I18n.func_135053_a("inventory.binSlot"), par1, par2);
+ }
+
+ if (maxPages != 0)
@ -116,7 +116,7 @@
}
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
@@ -681,14 +717,32 @@
@@ -741,14 +777,32 @@
int k = acreativetabs.length;
int l;
@ -128,7 +128,7 @@
+ for (l = start; l < k; ++l)
{
CreativeTabs creativetabs1 = acreativetabs[l];
this.mc.renderEngine.bindTexture("/gui/allitems.png");
this.mc.func_110434_K().func_110577_a(field_110424_t);
- if (creativetabs1.getTabIndex() != selectedTabIndex)
+ if (creativetabs1 != null && creativetabs1.getTabIndex() != selectedTabIndex)
@ -141,17 +141,17 @@
+ {
+ if (creativetabs != CreativeTabs.tabAllSearch)
+ {
+ mc.renderEngine.bindTexture("/gui/allitems.png");
+ this.mc.func_110434_K().func_110577_a(field_110424_t);
+ renderCreativeTab(CreativeTabs.tabAllSearch);
+ }
+ if (creativetabs != CreativeTabs.tabInventory)
+ {
+ mc.renderEngine.bindTexture("/gui/allitems.png");
+ this.mc.func_110434_K().func_110577_a(field_110424_t);
+ renderCreativeTab(CreativeTabs.tabInventory);
}
}
@@ -706,6 +760,14 @@
@@ -766,6 +820,14 @@
this.drawTexturedModalRect(i1, k + (int)((float)(l - k - 17) * this.currentScroll), 232 + (this.needsScrollBars() ? 0 : 12), 0, 12, 15);
}
@ -166,7 +166,7 @@
this.renderCreativeTab(creativetabs);
if (creativetabs == CreativeTabs.tabInventory)
@@ -716,6 +778,15 @@
@@ -776,6 +838,15 @@
protected boolean func_74232_a(CreativeTabs par1CreativeTabs, int par2, int par3)
{
@ -182,7 +182,7 @@
int k = par1CreativeTabs.getTabColumn();
int l = 28 * k;
byte b0 = 0;
@@ -823,6 +894,7 @@
@@ -883,6 +954,7 @@
}
GL11.glDisable(GL11.GL_LIGHTING);
@ -190,16 +190,16 @@
this.drawTexturedModalRect(l, i1, j, k, 28, b0);
this.zLevel = 100.0F;
itemRenderer.zLevel = 100.0F;
@@ -830,7 +902,7 @@
@@ -890,7 +962,7 @@
i1 += 8 + (flag1 ? 1 : -1);
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
- ItemStack itemstack = new ItemStack(par1CreativeTabs.getTabIconItem());
+ ItemStack itemstack = par1CreativeTabs.getIconItemStack();
itemRenderer.renderItemAndEffectIntoGUI(this.fontRenderer, this.mc.renderEngine, itemstack, l, i1);
itemRenderer.renderItemOverlayIntoGUI(this.fontRenderer, this.mc.renderEngine, itemstack, l, i1);
itemRenderer.func_110797_b(this.fontRenderer, this.mc.func_110434_K(), itemstack, l, i1);
itemRenderer.func_110794_c(this.fontRenderer, this.mc.func_110434_K(), itemstack, l, i1);
GL11.glDisable(GL11.GL_LIGHTING);
@@ -852,6 +924,15 @@
@@ -912,6 +984,15 @@
{
this.mc.displayGuiScreen(new GuiStats(this, this.mc.statFileWriter));
}

View file

@ -2,7 +2,7 @@
+++ ../src_work/minecraft/net/minecraft/client/model/ModelBase.java
@@ -10,7 +10,6 @@
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase;
-@SideOnly(Side.CLIENT)
public abstract class ModelBase

View file

@ -8,7 +8,7 @@
public class ModelRenderer
{
/** The size of the texture file's width in pixels. */
@@ -121,7 +120,8 @@
@@ -117,7 +116,8 @@
this.rotationPointY = par2;
this.rotationPointZ = par3;
}
@ -18,7 +18,7 @@
public void render(float par1)
{
if (!this.isHidden)
@@ -204,6 +204,7 @@
@@ -200,6 +200,7 @@
}
}
@ -26,7 +26,7 @@
public void renderWithRotation(float par1)
{
if (!this.isHidden)
@@ -242,6 +243,7 @@
@@ -238,6 +239,7 @@
/**
* Allows the changing of Angles after a box has been rendered
*/
@ -34,7 +34,7 @@
public void postRender(float par1)
{
if (!this.isHidden)
@@ -286,6 +288,7 @@
@@ -282,6 +284,7 @@
/**
* Compiles a GL display list for this model
*/

View file

@ -1,6 +1,6 @@
--- ../src_base/minecraft/net/minecraft/client/multiplayer/NetClientHandler.java
+++ ../src_work/minecraft/net/minecraft/client/multiplayer/NetClientHandler.java
@@ -176,6 +176,11 @@
@@ -186,6 +186,11 @@
import net.minecraft.world.storage.MapStorage;
import org.lwjgl.input.Keyboard;
@ -12,7 +12,7 @@
@SideOnly(Side.CLIENT)
public class NetClientHandler extends NetHandler
{
@@ -762,7 +767,7 @@
@@ -778,7 +783,7 @@
public void handleKickDisconnect(Packet255KickDisconnect par1Packet255KickDisconnect)
{
@ -21,20 +21,20 @@
this.disconnected = true;
this.mc.loadWorld((WorldClient)null);
@@ -844,7 +849,11 @@
@@ -860,7 +865,11 @@
public void handleChat(Packet3Chat par1Packet3Chat)
{
par1Packet3Chat = FMLNetworkHandler.handleChatMessage(this, par1Packet3Chat);
- this.mc.ingameGUI.getChatGUI().printChatMessage(par1Packet3Chat.message);
- this.mc.ingameGUI.getChatGUI().printChatMessage(ChatMessageComponent.func_111078_c(par1Packet3Chat.message).func_111068_a(true));
+ ClientChatReceivedEvent event = new ClientChatReceivedEvent(par1Packet3Chat.message);
+ if (!MinecraftForge.EVENT_BUS.post(event) && event.message != null)
+ {
+ this.mc.ingameGUI.getChatGUI().printChatMessage(par1Packet3Chat.message);
+ this.mc.ingameGUI.getChatGUI().printChatMessage(ChatMessageComponent.func_111078_c(event.message).func_111068_a(true));
+ }
}
public void handleAnimation(Packet18Animation par1Packet18Animation)
@@ -1278,6 +1287,10 @@
@@ -1329,6 +1338,10 @@
{
tileentity.readFromNBT(par1Packet132TileEntityData.customParam1);
}

View file

@ -1,6 +1,6 @@
--- ../src_base/minecraft/net/minecraft/client/multiplayer/PlayerControllerMP.java
+++ ../src_work/minecraft/net/minecraft/client/multiplayer/PlayerControllerMP.java
@@ -20,6 +20,10 @@
@@ -22,6 +22,10 @@
import net.minecraft.world.EnumGameType;
import net.minecraft.world.World;
@ -11,7 +11,7 @@
@SideOnly(Side.CLIENT)
public class PlayerControllerMP
{
@@ -124,6 +128,12 @@
@@ -125,6 +129,12 @@
*/
public boolean onPlayerDestroyBlock(int par1, int par2, int par3, int par4)
{
@ -24,7 +24,7 @@
if (this.currentGameType.isAdventure() && !this.mc.thePlayer.canCurrentToolHarvestBlock(par1, par2, par3))
{
return false;
@@ -141,7 +151,7 @@
@@ -146,7 +156,7 @@
{
worldclient.playAuxSFX(2001, par1, par2, par3, block.blockID + (worldclient.getBlockMetadata(par1, par2, par3) << 12));
int i1 = worldclient.getBlockMetadata(par1, par2, par3);
@ -33,7 +33,7 @@
if (flag)
{
@@ -342,6 +352,12 @@
@@ -347,6 +357,12 @@
float f2 = (float)par8Vec3.zCoord - (float)par6;
boolean flag = false;
int i1;
@ -46,7 +46,7 @@
if (!par1EntityPlayer.isSneaking() || par1EntityPlayer.getHeldItem() == null)
{
@@ -384,7 +400,15 @@
@@ -389,7 +405,15 @@
}
else
{
@ -63,7 +63,7 @@
}
}
@@ -406,9 +430,10 @@
@@ -411,9 +435,10 @@
{
par1EntityPlayer.inventory.mainInventory[par1EntityPlayer.inventory.currentItem] = itemstack1;

View file

@ -23,7 +23,7 @@
}
/**
@@ -291,6 +297,12 @@
@@ -296,6 +302,12 @@
*/
protected void updateWeather()
{

View file

@ -1,14 +1,14 @@
--- ../src_base/minecraft/net/minecraft/client/particle/EffectRenderer.java
+++ ../src_work/minecraft/net/minecraft/client/particle/EffectRenderer.java
@@ -11,6 +11,7 @@
import net.minecraft.client.renderer.Tessellator;
@@ -13,6 +13,7 @@
import net.minecraft.client.resources.ResourceLocation;
import net.minecraft.entity.Entity;
import net.minecraft.util.MathHelper;
+import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.World;
import org.lwjgl.opengl.GL11;
@@ -59,9 +60,13 @@
@@ -63,9 +64,13 @@
for (int j = 0; j < this.fxLayers[i].size(); ++j)
{
EntityFX entityfx = (EntityFX)this.fxLayers[i].get(j);
@ -25,7 +25,7 @@
{
this.fxLayers[i].remove(j--);
}
@@ -111,6 +116,7 @@
@@ -115,6 +120,7 @@
for (int j = 0; j < this.fxLayers[i].size(); ++j)
{
EntityFX entityfx = (EntityFX)this.fxLayers[i].get(j);
@ -33,15 +33,15 @@
tessellator.setBrightness(entityfx.getBrightnessForRender(par2));
entityfx.renderParticle(tessellator, par2, f1, f5, f2, f3, f4);
}
@@ -139,6 +145,7 @@
for (int i = 0; i < this.fxLayers[b0].size(); ++i)
@@ -145,6 +151,7 @@
for (int i = 0; i < list.size(); ++i)
{
EntityFX entityfx = (EntityFX)this.fxLayers[b0].get(i);
EntityFX entityfx = (EntityFX)list.get(i);
+ if (entityfx == null) continue;
tessellator.setBrightness(entityfx.getBrightnessForRender(par2));
entityfx.renderParticle(tessellator, par2, f1, f5, f2, f3, f4);
entityfx.renderParticle(tessellator, par2, f2, f6, f3, f4, f5);
}
@@ -157,9 +164,9 @@
@@ -163,9 +170,9 @@
public void addBlockDestroyEffects(int par1, int par2, int par3, int par4, int par5)
{
@ -54,7 +54,7 @@
byte b0 = 4;
for (int j1 = 0; j1 < b0; ++j1)
@@ -232,4 +239,13 @@
@@ -237,4 +244,13 @@
{
return "" + (this.fxLayers[0].size() + this.fxLayers[1].size() + this.fxLayers[2].size());
}

View file

@ -1,21 +1,26 @@
--- ../src_base/minecraft/net/minecraft/client/particle/EntityDiggingFX.java
+++ ../src_work/minecraft/net/minecraft/client/particle/EntityDiggingFX.java
@@ -11,20 +11,22 @@
@@ -10,20 +10,27 @@
public class EntityDiggingFX extends EntityFX
{
private Block blockInstance;
+ private int side;
public EntityDiggingFX(World par1World, double par2, double par4, double par6, double par8, double par10, double par12, Block par14Block, int par15, int par16, RenderEngine par17RenderEngine)
public EntityDiggingFX(World par1World, double par2, double par4, double par6, double par8, double par10, double par12, Block par14Block, int par15)
{
+ this(par1World, par2, par4, par6, par8, par10, par12, par14Block, par15, par1World.rand.nextInt(6));
+ }
+
+ public EntityDiggingFX(World par1World, double par2, double par4, double par6, double par8, double par10, double par12, Block par14Block, int par15, int side)
+ {
super(par1World, par2, par4, par6, par8, par10, par12);
this.blockInstance = par14Block;
- this.setParticleIcon(par17RenderEngine, par14Block.getIcon(0, par16));
+ this.setParticleIcon(par17RenderEngine, par14Block.getIcon(par15, par16));
- this.func_110125_a(par14Block.getIcon(0, par15));
+ this.func_110125_a(par14Block.getIcon(side, par15));
this.particleGravity = par14Block.blockParticleGravity;
this.particleRed = this.particleGreen = this.particleBlue = 0.6F;
this.particleScale /= 2.0F;
+ this.side = par15;
+ this.side = side;
}
public EntityDiggingFX func_70596_a(int par1, int par2, int par3)

View file

@ -0,0 +1,45 @@
--- ../src_base/minecraft/net/minecraft/client/render/entity/RendererLivingEntity.java
+++ ../src_work/minecraft/net/minecraft/client/render/entity/RendererLivingEntity.java
@@ -18,6 +18,9 @@
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.projectile.EntityArrow;
import net.minecraft.util.MathHelper;
+import net.minecraftforge.client.event.RenderLivingEvent;
+import net.minecraftforge.common.MinecraftForge;
+
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;
@@ -29,6 +32,9 @@
/** The model to be used during the render passes. */
protected ModelBase renderPassModel;
+
+ public static float NAME_TAG_RANGE = 64.0f;
+ public static float NAME_TAG_RANGE_SNEAK = 32.0f;
public RendererLivingEntity(ModelBase par1ModelBase, float par2)
{
@@ -440,12 +446,13 @@
protected void func_130008_a(EntityLivingBase par1EntityLivingBase, double par2, double par4, double par6)
{
+ if (MinecraftForge.EVENT_BUS.post(new RenderLivingEvent.Specials.Pre(par1EntityLivingBase, this))) return;
if (this.func_110813_b(par1EntityLivingBase))
{
float f = 1.6F;
float f1 = 0.016666668F * f;
double d3 = par1EntityLivingBase.getDistanceSqToEntity(this.renderManager.livingPlayer);
- float f2 = par1EntityLivingBase.isSneaking() ? 32.0F : 64.0F;
+ float f2 = par1EntityLivingBase.isSneaking() ? NAME_TAG_RANGE_SNEAK : NAME_TAG_RANGE;
if (d3 < (double)(f2 * f2))
{
@@ -489,6 +496,7 @@
}
}
}
+ MinecraftForge.EVENT_BUS.post(new RenderLivingEvent.Specials.Post(par1EntityLivingBase, this));
}
protected boolean func_110813_b(EntityLivingBase par1EntityLivingBase)

View file

@ -1,8 +1,8 @@
--- ../src_base/minecraft/net/minecraft/client/renderer/EntityRenderer.java
+++ ../src_work/minecraft/net/minecraft/client/renderer/EntityRenderer.java
@@ -37,6 +37,11 @@
@@ -40,6 +40,11 @@
import org.lwjgl.opengl.GLContext;
import org.lwjgl.util.glu.GLU;
import org.lwjgl.util.glu.Project;
+import net.minecraftforge.client.ForgeHooksClient;
+import net.minecraftforge.client.event.DrawBlockHighlightEvent;
@ -12,7 +12,7 @@
@SideOnly(Side.CLIENT)
public class EntityRenderer
{
@@ -339,8 +344,15 @@
@@ -354,8 +359,15 @@
*/
private void updateFovModifierHand()
{
@ -30,87 +30,84 @@
this.fovModifierHandPrev = this.fovModifierHand;
this.fovModifierHand += (this.fovMultiplierTemp - this.fovModifierHand) * 0.5F;
@@ -366,7 +378,7 @@
@@ -381,7 +393,7 @@
}
else
{
- EntityPlayer entityplayer = (EntityPlayer)this.mc.renderViewEntity;
+ EntityLiving entityplayer = (EntityLiving)this.mc.renderViewEntity;
+ EntityLivingBase entityplayer = (EntityLivingBase)this.mc.renderViewEntity;
float f1 = 70.0F;
if (par2)
@@ -453,15 +465,7 @@
@@ -468,15 +480,7 @@
if (!this.mc.gameSettings.debugCamEnable)
{
- int i = this.mc.theWorld.getBlockId(MathHelper.floor_double(entityliving.posX), MathHelper.floor_double(entityliving.posY), MathHelper.floor_double(entityliving.posZ));
- int i = this.mc.theWorld.getBlockId(MathHelper.floor_double(entitylivingbase.posX), MathHelper.floor_double(entitylivingbase.posY), MathHelper.floor_double(entitylivingbase.posZ));
-
- if (i == Block.bed.blockID)
- {
- int j = this.mc.theWorld.getBlockMetadata(MathHelper.floor_double(entityliving.posX), MathHelper.floor_double(entityliving.posY), MathHelper.floor_double(entityliving.posZ));
- int j = this.mc.theWorld.getBlockMetadata(MathHelper.floor_double(entitylivingbase.posX), MathHelper.floor_double(entitylivingbase.posY), MathHelper.floor_double(entitylivingbase.posZ));
- int k = j & 3;
- GL11.glRotatef((float)(k * 90), 0.0F, 1.0F, 0.0F);
- }
-
+ ForgeHooksClient.orientBedCamera(mc, entityliving);
GL11.glRotatef(entityliving.prevRotationYaw + (entityliving.rotationYaw - entityliving.prevRotationYaw) * par1 + 180.0F, 0.0F, -1.0F, 0.0F);
GL11.glRotatef(entityliving.prevRotationPitch + (entityliving.rotationPitch - entityliving.prevRotationPitch) * par1, -1.0F, 0.0F, 0.0F);
+ ForgeHooksClient.orientBedCamera(mc, entitylivingbase);
GL11.glRotatef(entitylivingbase.prevRotationYaw + (entitylivingbase.rotationYaw - entitylivingbase.prevRotationYaw) * par1 + 180.0F, 0.0F, -1.0F, 0.0F);
GL11.glRotatef(entitylivingbase.prevRotationPitch + (entitylivingbase.rotationPitch - entitylivingbase.prevRotationPitch) * par1, -1.0F, 0.0F, 0.0F);
}
@@ -1142,23 +1146,20 @@
@@ -1152,7 +1156,10 @@
{
RenderHelper.enableStandardItemLighting();
this.mc.mcProfiler.endStartSection("entities");
+ ForgeHooksClient.setRenderPass(0);
renderglobal.renderEntities(entityliving.getPosition(par1), frustrum, par1);
- this.enableLightmap((double)par1);
- this.mc.mcProfiler.endStartSection("litParticles");
- effectrenderer.renderLitParticles(entityliving, par1);
- RenderHelper.disableStandardItemLighting();
- this.setupFog(0, par1);
- this.mc.mcProfiler.endStartSection("particles");
- effectrenderer.renderParticles(entityliving, par1);
- this.disableLightmap((double)par1);
+ ForgeHooksClient.setRenderPass(-1);
renderglobal.renderEntities(entitylivingbase.getPosition(par1), frustrum, par1);
+ ForgeHooksClient.setRenderPass(0);
+ /* Forge: Moved down
this.enableLightmap((double)par1);
this.mc.mcProfiler.endStartSection("litParticles");
effectrenderer.renderLitParticles(entitylivingbase, par1);
@@ -1161,13 +1168,17 @@
this.mc.mcProfiler.endStartSection("particles");
effectrenderer.renderParticles(entitylivingbase, par1);
this.disableLightmap((double)par1);
+ */
if (this.mc.objectMouseOver != null && entityliving.isInsideOfMaterial(Material.water) && entityliving instanceof EntityPlayer && !this.mc.gameSettings.hideGUI)
if (this.mc.objectMouseOver != null && entitylivingbase.isInsideOfMaterial(Material.water) && entitylivingbase instanceof EntityPlayer && !this.mc.gameSettings.hideGUI)
{
entityplayer = (EntityPlayer)entityliving;
entityplayer = (EntityPlayer)entitylivingbase;
GL11.glDisable(GL11.GL_ALPHA_TEST);
this.mc.mcProfiler.endStartSection("outline");
- renderglobal.drawBlockBreaking(entityplayer, this.mc.objectMouseOver, 0, entityplayer.inventory.getCurrentItem(), par1);
- renderglobal.drawSelectionBox(entityplayer, this.mc.objectMouseOver, 0, entityplayer.inventory.getCurrentItem(), par1);
- renderglobal.drawSelectionBox(entityplayer, this.mc.objectMouseOver, 0, par1);
+ if (!ForgeHooksClient.onDrawBlockHighlight(renderglobal, entityplayer, mc.objectMouseOver, 0, entityplayer.inventory.getCurrentItem(), par1))
+ {
+ renderglobal.drawBlockBreaking(entityplayer, this.mc.objectMouseOver, 0, entityplayer.inventory.getCurrentItem(), par1);
+ renderglobal.drawSelectionBox(entityplayer, this.mc.objectMouseOver, 0, entityplayer.inventory.getCurrentItem(), par1);
+ renderglobal.drawSelectionBox(entityplayer, this.mc.objectMouseOver, 0, par1);
+ }
GL11.glEnable(GL11.GL_ALPHA_TEST);
}
}
@@ -1213,6 +1214,13 @@
renderglobal.sortAndRender(entityliving, 1, (double)par1);
@@ -1222,6 +1233,13 @@
renderglobal.sortAndRender(entitylivingbase, 1, (double)par1);
}
+ RenderHelper.enableStandardItemLighting();
+ this.mc.mcProfiler.endStartSection("entities");
+ ForgeHooksClient.setRenderPass(1);
+ renderglobal.renderEntities(entityliving.getPosition(par1), frustrum, par1);
+ renderglobal.renderEntities(entitylivingbase.getPosition(par1), frustrum, par1);
+ ForgeHooksClient.setRenderPass(-1);
+ RenderHelper.disableStandardItemLighting();
+
GL11.glDepthMask(true);
GL11.glEnable(GL11.GL_CULL_FACE);
GL11.glDisable(GL11.GL_BLEND);
@@ -1222,15 +1230,18 @@
entityplayer = (EntityPlayer)entityliving;
@@ -1231,14 +1249,17 @@
entityplayer = (EntityPlayer)entitylivingbase;
GL11.glDisable(GL11.GL_ALPHA_TEST);
this.mc.mcProfiler.endStartSection("outline");
- renderglobal.drawBlockBreaking(entityplayer, this.mc.objectMouseOver, 0, entityplayer.inventory.getCurrentItem(), par1);
- renderglobal.drawSelectionBox(entityplayer, this.mc.objectMouseOver, 0, entityplayer.inventory.getCurrentItem(), par1);
- renderglobal.drawSelectionBox(entityplayer, this.mc.objectMouseOver, 0, par1);
+ if (!ForgeHooksClient.onDrawBlockHighlight(renderglobal, entityplayer, mc.objectMouseOver, 0, entityplayer.inventory.getCurrentItem(), par1))
+ {
+ renderglobal.drawBlockBreaking(entityplayer, this.mc.objectMouseOver, 0, entityplayer.inventory.getCurrentItem(), par1);
+ renderglobal.drawSelectionBox(entityplayer, this.mc.objectMouseOver, 0, entityplayer.inventory.getCurrentItem(), par1);
+ renderglobal.drawSelectionBox(entityplayer, this.mc.objectMouseOver, 0, par1);
+ }
GL11.glEnable(GL11.GL_ALPHA_TEST);
}
@ -118,12 +115,12 @@
this.mc.mcProfiler.endStartSection("destroyProgress");
GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE);
- renderglobal.drawBlockDamageTexture(Tessellator.instance, (EntityPlayer)entityliving, par1);
+ renderglobal.drawBlockDamageTexture(Tessellator.instance, entityliving, par1);
- renderglobal.drawBlockDamageTexture(Tessellator.instance, (EntityPlayer)entitylivingbase, par1);
+ renderglobal.drawBlockDamageTexture(Tessellator.instance, entitylivingbase, par1);
GL11.glDisable(GL11.GL_BLEND);
this.mc.mcProfiler.endStartSection("weather");
this.renderRainSnow(par1);
@@ -1240,6 +1251,19 @@
@@ -1248,6 +1269,20 @@
{
this.renderCloudsCheck(renderglobal, par1);
}
@ -131,12 +128,13 @@
+ //Forge: Moved section from above, now particles are the last thing to render.
+ this.enableLightmap((double)par1);
+ this.mc.mcProfiler.endStartSection("litParticles");
+ effectrenderer.renderLitParticles(entityliving, par1);
+ effectrenderer.renderLitParticles(entitylivingbase, par1);
+ RenderHelper.disableStandardItemLighting();
+ this.setupFog(0, par1);
+ this.mc.mcProfiler.endStartSection("particles");
+ effectrenderer.renderParticles(entityliving, par1);
+ effectrenderer.renderParticles(entitylivingbase, par1);
+ this.disableLightmap((double)par1);
+ //Forge: End Move
+
+ this.mc.mcProfiler.endStartSection("FRenderLast");
+ ForgeHooksClient.dispatchRenderLast(renderglobal, par1);

View file

@ -1,7 +1,7 @@
--- ../src_base/minecraft/net/minecraft/client/renderer/ItemRenderer.java
+++ ../src_work/minecraft/net/minecraft/client/renderer/ItemRenderer.java
@@ -14,6 +14,8 @@
import net.minecraft.entity.EntityLiving;
@@ -17,6 +17,8 @@
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.EnumAction;
import net.minecraft.item.Item;
+import net.minecraft.item.ItemBlock;
@ -9,7 +9,7 @@
import net.minecraft.item.ItemStack;
import net.minecraft.util.Icon;
import net.minecraft.util.MathHelper;
@@ -21,6 +23,13 @@
@@ -24,6 +26,13 @@
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;
@ -23,25 +23,25 @@
@SideOnly(Side.CLIENT)
public class ItemRenderer
{
@@ -46,15 +55,40 @@
this.mc = par1Minecraft;
this.mapItemRenderer = new MapItemRenderer(par1Minecraft.fontRenderer, par1Minecraft.gameSettings, par1Minecraft.renderEngine);
@@ -54,15 +63,32 @@
this.mapItemRenderer = new MapItemRenderer(par1Minecraft.gameSettings, par1Minecraft.func_110434_K());
}
+
+ public void renderItem(EntityLiving par1EntityLiving, ItemStack par2ItemStack, int par3)
+ {
+ this.renderItem(par1EntityLiving, par2ItemStack, par3, ItemRenderType.EQUIPPED);
+ }
+ 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(EntityLiving par1EntityLiving, ItemStack par2ItemStack, int par3)
+ public void renderItem(EntityLiving par1EntityLiving, ItemStack par2ItemStack, int par3, ItemRenderType type)
- 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 && Block.blocksList[par2ItemStack.itemID] != null && RenderBlocks.renderItemIn3d(Block.blocksList[par2ItemStack.itemID].getRenderType()))
- 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)
+ {
@ -49,24 +49,16 @@
+ }
+
+ IItemRenderer customRenderer = MinecraftForgeClient.getItemRenderer(par2ItemStack, type);
+ //Backwards compatibility, Remove in 1.6, For 1.5 if they implement EQUIPPED then
+ //they must handle it how it was when 1.5 began.
+ if (customRenderer == null && type == ItemRenderType.EQUIPPED_FIRST_PERSON)
+ {
+ type = ItemRenderType.EQUIPPED;
+ customRenderer = MinecraftForgeClient.getItemRenderer(par2ItemStack, type);
+ }
+
+ if (customRenderer != null)
+ {
+ this.mc.renderEngine.bindTexture(par2ItemStack.getItemSpriteNumber() == 0 ? "/terrain.png" : "/gui/items.png");
+ ForgeHooksClient.renderEquippedItem(type, customRenderer, renderBlocksInstance, par1EntityLiving, par2ItemStack);
+ 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()))
{
this.mc.renderEngine.bindTexture("/terrain.png");
texturemanager.func_110577_a(texturemanager.func_130087_a(0));
this.renderBlocksInstance.renderBlockAsItem(Block.blocksList[par2ItemStack.itemID], par2ItemStack.getItemDamage(), 1.0F);
@@ -272,7 +306,7 @@
@@ -266,7 +292,7 @@
Render render;
RenderPlayer renderplayer;
@ -74,8 +66,8 @@
+ if (itemstack != null && itemstack.getItem() instanceof ItemMap)
{
GL11.glPushMatrix();
f4 = 0.8F;
@@ -340,11 +374,20 @@
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();
@ -83,7 +75,7 @@
-
- if (mapdata != null)
- {
- this.mapItemRenderer.renderMap(this.mc.thePlayer, this.mc.renderEngine, mapdata);
- this.mapItemRenderer.func_111275_a(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);
@ -92,34 +84,34 @@
+ {
+ if (mapdata != null)
+ {
+ this.mapItemRenderer.renderMap(this.mc.thePlayer, this.mc.renderEngine, mapdata);
+ this.mapItemRenderer.func_111275_a(this.mc.thePlayer, this.mc.func_110434_K(), mapdata);
+ }
+ }
+ else
+ {
+ custom.renderItem(FIRST_PERSON_MAP, itemstack, mc.thePlayer, mc.renderEngine, mapdata);
+ custom.renderItem(FIRST_PERSON_MAP, itemstack, mc.thePlayer, mc.func_110434_K(), mapdata);
}
GL11.glPopMatrix();
@@ -446,17 +489,20 @@
@@ -439,17 +474,20 @@
if (itemstack.getItem().requiresMultipleRenderPasses())
{
- this.renderItem(entityclientplayermp, itemstack, 0);
- int i1 = Item.itemsList[itemstack.itemID].getColorFromItemStack(itemstack, 1);
- f10 = (float)(i1 >> 16 & 255) / 255.0F;
- f11 = (float)(i1 >> 8 & 255) / 255.0F;
- f12 = (float)(i1 & 255) / 255.0F;
- GL11.glColor4f(f3 * f10, f3 * f11, f3 * f12, 1.0F);
- 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);
+ f10 = (float)(i1 >> 16 & 255) / 255.0F;
+ f11 = (float)(i1 >> 8 & 255) / 255.0F;
+ f12 = (float)(i1 & 255) / 255.0F;
+ GL11.glColor4f(f3 * f10, f3 * f11, f3 * f12, 1.0F);
+ 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);
+ }
}

View file

@ -3,7 +3,7 @@
@@ -25,6 +25,10 @@
* True if the renderer supports multitextures and the OpenGL version != 1.3
*/
private static boolean useMultitextureARB = false;
private static boolean useMultitextureARB;
+
+ /* Stores the last values sent into setLightmapTextureCoords */
+ public static float lastBrightnessX = 0.0f;

View file

@ -1,6 +1,6 @@
--- ../src_base/minecraft/net/minecraft/client/renderer/RenderBlocks.java
+++ ../src_work/minecraft/net/minecraft/client/renderer/RenderBlocks.java
@@ -44,6 +44,8 @@
@@ -45,6 +45,8 @@
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;
@ -9,7 +9,7 @@
@SideOnly(Side.CLIENT)
public class RenderBlocks
{
@@ -533,9 +535,8 @@
@@ -534,9 +536,8 @@
public boolean renderBlockBed(Block par1Block, int par2, int par3, int par4)
{
Tessellator tessellator = Tessellator.instance;
@ -21,7 +21,7 @@
float f = 0.5F;
float f1 = 1.0F;
float f2 = 0.8F;
@@ -544,6 +545,7 @@
@@ -545,6 +546,7 @@
tessellator.setBrightness(j1);
tessellator.setColorOpaque_F(f, f, f);
Icon icon = this.getBlockIcon(par1Block, this.blockAccess, par2, par3, par4, 0);
@ -29,7 +29,7 @@
double d0 = (double)icon.getMinU();
double d1 = (double)icon.getMaxU();
double d2 = (double)icon.getMinV();
@@ -560,6 +562,7 @@
@@ -561,6 +563,7 @@
tessellator.setBrightness(par1Block.getMixedBrightnessForBlock(this.blockAccess, par2, par3 + 1, par4));
tessellator.setColorOpaque_F(f1, f1, f1);
icon = this.getBlockIcon(par1Block, this.blockAccess, par2, par3, par4, 1);
@ -37,7 +37,7 @@
d0 = (double)icon.getMinU();
d1 = (double)icon.getMaxU();
d2 = (double)icon.getMinV();
@@ -2351,7 +2354,7 @@
@@ -2358,7 +2361,7 @@
double d9;
double d10;
@ -46,7 +46,7 @@
{
float f1 = 0.2F;
float f2 = 0.0625F;
@@ -2371,7 +2374,7 @@
@@ -2378,7 +2381,7 @@
d0 = d5;
}
@ -55,7 +55,7 @@
{
tessellator.addVertexWithUV((double)((float)par2 + f1), (double)((float)par3 + f + f2), (double)(par4 + 1), d2, d1);
tessellator.addVertexWithUV((double)(par2 + 0), (double)((float)(par3 + 0) + f2), (double)(par4 + 1), d2, d3);
@@ -2383,7 +2386,7 @@
@@ -2390,7 +2393,7 @@
tessellator.addVertexWithUV((double)((float)par2 + f1), (double)((float)par3 + f + f2), (double)(par4 + 1), d2, d1);
}
@ -64,7 +64,7 @@
{
tessellator.addVertexWithUV((double)((float)(par2 + 1) - f1), (double)((float)par3 + f + f2), (double)(par4 + 0), d0, d1);
tessellator.addVertexWithUV((double)(par2 + 1 - 0), (double)((float)(par3 + 0) + f2), (double)(par4 + 0), d0, d3);
@@ -2395,7 +2398,7 @@
@@ -2402,7 +2405,7 @@
tessellator.addVertexWithUV((double)((float)(par2 + 1) - f1), (double)((float)par3 + f + f2), (double)(par4 + 0), d0, d1);
}
@ -73,7 +73,7 @@
{
tessellator.addVertexWithUV((double)(par2 + 0), (double)((float)par3 + f + f2), (double)((float)par4 + f1), d2, d1);
tessellator.addVertexWithUV((double)(par2 + 0), (double)((float)(par3 + 0) + f2), (double)(par4 + 0), d2, d3);
@@ -2407,7 +2410,7 @@
@@ -2414,7 +2417,7 @@
tessellator.addVertexWithUV((double)(par2 + 0), (double)((float)par3 + f + f2), (double)((float)par4 + f1), d2, d1);
}
@ -82,7 +82,7 @@
{
tessellator.addVertexWithUV((double)(par2 + 1), (double)((float)par3 + f + f2), (double)((float)(par4 + 1) - f1), d0, d1);
tessellator.addVertexWithUV((double)(par2 + 1), (double)((float)(par3 + 0) + f2), (double)(par4 + 1 - 0), d0, d3);
@@ -2419,7 +2422,7 @@
@@ -2426,7 +2429,7 @@
tessellator.addVertexWithUV((double)(par2 + 1), (double)((float)par3 + f + f2), (double)((float)(par4 + 1) - f1), d0, d1);
}
@ -91,7 +91,7 @@
{
d5 = (double)par2 + 0.5D + 0.5D;
d6 = (double)par2 + 0.5D - 0.5D;
@@ -3050,10 +3053,10 @@
@@ -3057,10 +3060,10 @@
double d17 = (double)par2 + 0.5D + 0.0625D;
double d18 = (double)par4 + 0.5D - 0.0625D;
double d19 = (double)par4 + 0.5D + 0.0625D;
@ -105,4 +105,4 @@
+ boolean flag3 = par1BlockPane.canPaneConnectTo(this.blockAccess,par2, par3, par4, EAST);
boolean flag4 = par1BlockPane.shouldSideBeRendered(this.blockAccess, par2, par3 + 1, par4, 1);
boolean flag5 = par1BlockPane.shouldSideBeRendered(this.blockAccess, par2, par3 - 1, par4, 0);
double d20 = 0.01D;

View file

@ -1,6 +1,6 @@
--- ../src_base/minecraft/net/minecraft/client/renderer/RenderGlobal.java
+++ ../src_work/minecraft/net/minecraft/client/renderer/RenderGlobal.java
@@ -65,6 +65,9 @@
@@ -67,6 +67,9 @@
import org.lwjgl.opengl.ARBOcclusionQuery;
import org.lwjgl.opengl.GL11;
@ -10,7 +10,7 @@
@SideOnly(Side.CLIENT)
public class RenderGlobal implements IWorldAccess
{
@@ -443,35 +446,47 @@
@@ -446,35 +449,47 @@
*/
public void renderEntities(Vec3 par1Vec3, ICamera par2ICamera, float par3)
{
@ -26,32 +26,32 @@
else
{
this.theWorld.theProfiler.startSection("prepare");
- TileEntityRenderer.instance.cacheActiveRenderInfo(this.theWorld, this.renderEngine, this.mc.fontRenderer, this.mc.renderViewEntity, par3);
- RenderManager.instance.cacheActiveRenderInfo(this.theWorld, this.renderEngine, this.mc.fontRenderer, this.mc.renderViewEntity, this.mc.pointedEntityLiving, this.mc.gameSettings, par3);
- TileEntityRenderer.instance.cacheActiveRenderInfo(this.theWorld, this.mc.func_110434_K(), this.mc.fontRenderer, this.mc.renderViewEntity, par3);
- RenderManager.instance.cacheActiveRenderInfo(this.theWorld, this.mc.func_110434_K(), this.mc.fontRenderer, this.mc.renderViewEntity, this.mc.pointedEntityLiving, this.mc.gameSettings, par3);
- this.countEntitiesTotal = 0;
- this.countEntitiesRendered = 0;
- this.countEntitiesHidden = 0;
- EntityLiving entityliving = this.mc.renderViewEntity;
- RenderManager.renderPosX = entityliving.lastTickPosX + (entityliving.posX - entityliving.lastTickPosX) * (double)par3;
- RenderManager.renderPosY = entityliving.lastTickPosY + (entityliving.posY - entityliving.lastTickPosY) * (double)par3;
- RenderManager.renderPosZ = entityliving.lastTickPosZ + (entityliving.posZ - entityliving.lastTickPosZ) * (double)par3;
- TileEntityRenderer.staticPlayerX = entityliving.lastTickPosX + (entityliving.posX - entityliving.lastTickPosX) * (double)par3;
- TileEntityRenderer.staticPlayerY = entityliving.lastTickPosY + (entityliving.posY - entityliving.lastTickPosY) * (double)par3;
- TileEntityRenderer.staticPlayerZ = entityliving.lastTickPosZ + (entityliving.posZ - entityliving.lastTickPosZ) * (double)par3;
- EntityLivingBase entitylivingbase = this.mc.renderViewEntity;
- RenderManager.renderPosX = entitylivingbase.lastTickPosX + (entitylivingbase.posX - entitylivingbase.lastTickPosX) * (double)par3;
- RenderManager.renderPosY = entitylivingbase.lastTickPosY + (entitylivingbase.posY - entitylivingbase.lastTickPosY) * (double)par3;
- RenderManager.renderPosZ = entitylivingbase.lastTickPosZ + (entitylivingbase.posZ - entitylivingbase.lastTickPosZ) * (double)par3;
- TileEntityRenderer.staticPlayerX = entitylivingbase.lastTickPosX + (entitylivingbase.posX - entitylivingbase.lastTickPosX) * (double)par3;
- TileEntityRenderer.staticPlayerY = entitylivingbase.lastTickPosY + (entitylivingbase.posY - entitylivingbase.lastTickPosY) * (double)par3;
- TileEntityRenderer.staticPlayerZ = entitylivingbase.lastTickPosZ + (entitylivingbase.posZ - entitylivingbase.lastTickPosZ) * (double)par3;
+ if (pass == 0)
+ {
+ TileEntityRenderer.instance.cacheActiveRenderInfo(this.theWorld, this.renderEngine, this.mc.fontRenderer, this.mc.renderViewEntity, par3);
+ RenderManager.instance.cacheActiveRenderInfo(this.theWorld, this.renderEngine, this.mc.fontRenderer, this.mc.renderViewEntity, this.mc.pointedEntityLiving, this.mc.gameSettings, par3);
+ TileEntityRenderer.instance.cacheActiveRenderInfo(this.theWorld, this.mc.func_110434_K(), this.mc.fontRenderer, this.mc.renderViewEntity, par3);
+ RenderManager.instance.cacheActiveRenderInfo(this.theWorld, this.mc.func_110434_K(), this.mc.fontRenderer, this.mc.renderViewEntity, this.mc.pointedEntityLiving, this.mc.gameSettings, par3);
+ this.countEntitiesTotal = 0;
+ this.countEntitiesRendered = 0;
+ this.countEntitiesHidden = 0;
+ EntityLiving entityliving = this.mc.renderViewEntity;
+ RenderManager.renderPosX = entityliving.lastTickPosX + (entityliving.posX - entityliving.lastTickPosX) * (double)par3;
+ RenderManager.renderPosY = entityliving.lastTickPosY + (entityliving.posY - entityliving.lastTickPosY) * (double)par3;
+ RenderManager.renderPosZ = entityliving.lastTickPosZ + (entityliving.posZ - entityliving.lastTickPosZ) * (double)par3;
+ TileEntityRenderer.staticPlayerX = entityliving.lastTickPosX + (entityliving.posX - entityliving.lastTickPosX) * (double)par3;
+ TileEntityRenderer.staticPlayerY = entityliving.lastTickPosY + (entityliving.posY - entityliving.lastTickPosY) * (double)par3;
+ TileEntityRenderer.staticPlayerZ = entityliving.lastTickPosZ + (entityliving.posZ - entityliving.lastTickPosZ) * (double)par3;
+ EntityLivingBase entitylivingbase = this.mc.renderViewEntity;
+ RenderManager.renderPosX = entitylivingbase.lastTickPosX + (entitylivingbase.posX - entitylivingbase.lastTickPosX) * (double)par3;
+ RenderManager.renderPosY = entitylivingbase.lastTickPosY + (entitylivingbase.posY - entitylivingbase.lastTickPosY) * (double)par3;
+ RenderManager.renderPosZ = entitylivingbase.lastTickPosZ + (entitylivingbase.posZ - entitylivingbase.lastTickPosZ) * (double)par3;
+ TileEntityRenderer.staticPlayerX = entitylivingbase.lastTickPosX + (entitylivingbase.posX - entitylivingbase.lastTickPosX) * (double)par3;
+ TileEntityRenderer.staticPlayerY = entitylivingbase.lastTickPosY + (entitylivingbase.posY - entitylivingbase.lastTickPosY) * (double)par3;
+ TileEntityRenderer.staticPlayerZ = entitylivingbase.lastTickPosZ + (entitylivingbase.posZ - entitylivingbase.lastTickPosZ) * (double)par3;
+ }
this.mc.entityRenderer.enableLightmap((double)par3);
this.theWorld.theProfiler.endStartSection("global");
@ -71,7 +71,7 @@
++this.countEntitiesRendered;
if (entity.isInRangeToRenderVec3D(par1Vec3))
@@ -485,6 +500,7 @@
@@ -488,6 +503,7 @@
for (i = 0; i < list.size(); ++i)
{
entity = (Entity)list.get(i);
@ -79,7 +79,7 @@
if (entity.isInRangeToRenderVec3D(par1Vec3) && (entity.ignoreFrustumCheck || par2ICamera.isBoundingBoxInFrustum(entity.boundingBox) || entity.riddenByEntity == this.mc.thePlayer) && (entity != this.mc.renderViewEntity || this.mc.gameSettings.thirdPersonView != 0 || this.mc.renderViewEntity.isPlayerSleeping()) && this.theWorld.blockExists(MathHelper.floor_double(entity.posX), 0, MathHelper.floor_double(entity.posZ)))
{
@@ -498,7 +514,11 @@
@@ -501,7 +517,11 @@
for (i = 0; i < this.tileEntities.size(); ++i)
{
@ -92,7 +92,7 @@
}
this.mc.entityRenderer.disableLightmap((double)par3);
@@ -933,6 +953,12 @@
@@ -936,6 +956,12 @@
*/
public void renderSky(float par1)
{
@ -105,7 +105,7 @@
if (this.mc.theWorld.provider.dimensionId == 1)
{
GL11.glDisable(GL11.GL_FOG);
@@ -1171,6 +1197,13 @@
@@ -1174,6 +1200,13 @@
public void renderClouds(float par1)
{
@ -119,15 +119,15 @@
if (this.mc.theWorld.provider.isSurfaceWorld())
{
if (this.mc.gameSettings.fancyGraphics)
@@ -1599,6 +1632,11 @@
@@ -1582,6 +1615,11 @@
}
public void drawBlockDamageTexture(Tessellator par1Tessellator, EntityPlayer par2EntityPlayer, float par3)
+ {
+ drawBlockDamageTexture(par1Tessellator, (EntityLiving)par2EntityPlayer, par3);
+ drawBlockDamageTexture(par1Tessellator, (EntityLivingBase)par2EntityPlayer, par3);
+ }
+
+ public void drawBlockDamageTexture(Tessellator par1Tessellator, EntityLiving par2EntityPlayer, float par3)
+ public void drawBlockDamageTexture(Tessellator par1Tessellator, EntityLivingBase par2EntityPlayer, float par3)
{
double d0 = par2EntityPlayer.lastTickPosX + (par2EntityPlayer.posX - par2EntityPlayer.lastTickPosX) * (double)par3;
double d1 = par2EntityPlayer.lastTickPosY + (par2EntityPlayer.posY - par2EntityPlayer.lastTickPosY) * (double)par3;

View file

@ -23,7 +23,7 @@
* Boolean used to check whether quads should be drawn as two triangles. Initialized to false and never changed.
*/
@@ -25,16 +33,16 @@
private static boolean tryVBO = false;
private static boolean tryVBO;
/** The byte buffer used for GL allocation. */
- private ByteBuffer byteBuffer;
@ -44,10 +44,10 @@
/** Raw integer array. */
private int[] rawBuffer;
@@ -110,10 +118,10 @@
public boolean isDrawing = false;
public boolean isDrawing;
/** Whether we are currently using VBO or not. */
- private boolean useVBO = false;
- private boolean useVBO;
+ private static boolean useVBO = false;
/** An IntBuffer used to store the indices of vertex buffer objects. */
@ -57,7 +57,7 @@
/**
* The index of the last VBO used. This is used in round-robin fashion, sequentially, through the vboCount vertex
@@ -122,25 +130,28 @@
private int vboIndex = 0;
private int vboIndex;
/** Number of vertex buffer objects allocated for use. */
- private int vboCount = 10;

View file

@ -1,23 +1,15 @@
--- ../src_base/minecraft/net/minecraft/client/renderer/WorldRenderer.java
+++ ../src_work/minecraft/net/minecraft/client/renderer/WorldRenderer.java
@@ -17,13 +17,15 @@
import net.minecraft.world.chunk.Chunk;
import org.lwjgl.opengl.GL11;
+import net.minecraftforge.client.ForgeHooksClient;
+
@SideOnly(Side.CLIENT)
public class WorldRenderer
{
@@ -23,7 +23,7 @@
/** Reference to the World object. */
public World worldObj;
private int glRenderList = -1;
- private static Tessellator tessellator = Tessellator.instance;
+ //private static Tessellator tessellator = Tessellator.instance;
public static int chunksUpdated = 0;
public static int chunksUpdated;
public int posX;
public int posY;
@@ -192,15 +194,16 @@
@@ -192,15 +192,16 @@
GL11.glTranslatef(-8.0F, -8.0F, -8.0F);
GL11.glScalef(f, f, f);
GL11.glTranslatef(8.0F, 8.0F, 8.0F);
@ -37,7 +29,7 @@
{
TileEntity tileentity = chunkcache.getBlockTileEntity(k2, i2, j2);
@@ -212,14 +215,15 @@
@@ -212,14 +213,15 @@
int i3 = block.getRenderBlockPass();
@ -56,7 +48,7 @@
}
}
}
@@ -228,10 +232,11 @@
@@ -228,10 +230,11 @@
if (flag2)
{

View file

@ -1,7 +1,7 @@
--- ../src_base/minecraft/net/minecraft/client/renderer/entity/RenderBiped.java
+++ ../src_work/minecraft/net/minecraft/client/renderer/entity/RenderBiped.java
@@ -11,9 +11,15 @@
import net.minecraft.entity.EntityLiving;
@@ -14,9 +14,15 @@
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.EnumArmorMaterial;
import net.minecraft.item.Item;
+import net.minecraft.item.ItemBlock;
@ -16,25 +16,72 @@
@SideOnly(Side.CLIENT)
public class RenderBiped extends RenderLiving
@@ -59,7 +65,7 @@
@@ -49,11 +55,13 @@
this.field_82425_h = new ModelBiped(0.5F);
}
+ @Deprecated //Use the more sensitve version getArmorResource below
public static ResourceLocation func_110857_a(ItemArmor par0ItemArmor, int par1)
{
return func_110858_a(par0ItemArmor, par1, (String)null);
}
+ @Deprecated //Use the more sensitve version getArmorResource below
public static ResourceLocation func_110858_a(ItemArmor par0ItemArmor, int par1, String par2Str)
{
String s1 = String.format("textures/models/armor/%s_layer_%d%s.png", new Object[] {bipedArmorFilenamePrefix[par0ItemArmor.renderIndex], Integer.valueOf(par1 == 2 ? 2 : 1), par2Str == null ? "" : String.format("_%s", new Object[]{par2Str})});
@@ -68,6 +76,33 @@
return resourcelocation;
}
+ /**
+ * More generic ForgeHook version of the above function, it allows for Items to have more control over what texture they provide.
+ *
+ * @param entity Entity wearing the armor
+ * @param stack ItemStack for the armor
+ * @param slot Slot ID that the item is in
+ * @param type Subtype, can be null or "overlay"
+ * @return ResourceLocation pointing at the armor's texture
+ */
+ public static ResourceLocation getArmorResource(Entity entity, ItemStack stack, int slot, String type)
+ {
+ ItemArmor item = (ItemArmor)stack.getItem();
+ String s1 = String.format("textures/models/armor/%s_layer_%d%s.png",
+ bipedArmorFilenamePrefix[item.renderIndex], (slot == 2 ? 2 : 1), type == null ? "" : String.format("_%s", type));
+
+ s1 = ForgeHooksClient.getArmorTexture(entity, stack, s1, slot, (slot == 2 ? 2 : 1), type);
+ ResourceLocation resourcelocation = (ResourceLocation)field_110859_k.get(s1);
+
+ if (resourcelocation == null)
+ {
+ resourcelocation = new ResourceLocation(s1);
+ field_110859_k.put(s1, resourcelocation);
+ }
+
+ return resourcelocation;
+ }
+
protected int func_130006_a(EntityLiving par1EntityLiving, int par2, float par3)
{
ItemStack itemstack = par1EntityLiving.getCurrentArmor(3 - par2);
@@ -79,7 +114,7 @@
if (item instanceof ItemArmor)
{
ItemArmor itemarmor = (ItemArmor)item;
- this.loadTexture("/armor/" + bipedArmorFilenamePrefix[itemarmor.renderIndex] + "_" + (par2 == 2 ? 2 : 1) + ".png");
+ this.loadTexture(ForgeHooksClient.getArmorTexture(par1EntityLiving, itemstack, "/armor/" + bipedArmorFilenamePrefix[itemarmor.renderIndex] + "_" + (par2 == 2 ? 2 : 1) + ".png", par2, 1));
- this.func_110776_a(func_110857_a(itemarmor, par2));
+ this.func_110776_a(getArmorResource(par1EntityLiving, itemstack, par2, null));
ModelBiped modelbiped = par2 == 2 ? this.field_82425_h : this.field_82423_g;
modelbiped.bipedHead.showModel = par2 == 0;
modelbiped.bipedHeadwear.showModel = par2 == 0;
@@ -68,6 +74,7 @@
@@ -88,15 +123,17 @@
modelbiped.bipedLeftArm.showModel = par2 == 1;
modelbiped.bipedRightLeg.showModel = par2 == 2 || par2 == 3;
modelbiped.bipedLeftLeg.showModel = par2 == 2 || par2 == 3;
+ modelbiped = ForgeHooksClient.getArmorModel(par1EntityLiving, itemstack, par2, modelbiped);
this.setRenderPassModel(modelbiped);
if (modelbiped != null)
@@ -87,9 +94,10 @@
modelbiped.onGround = this.mainModel.onGround;
modelbiped.isRiding = this.mainModel.isRiding;
modelbiped.isChild = this.mainModel.isChild;
float f1 = 1.0F;
- if (itemarmor.getArmorMaterial() == EnumArmorMaterial.CLOTH)
@ -47,16 +94,16 @@
float f2 = (float)(j >> 16 & 255) / 255.0F;
float f3 = (float)(j >> 8 & 255) / 255.0F;
float f4 = (float)(j & 255) / 255.0F;
@@ -128,7 +136,7 @@
@@ -134,7 +171,7 @@
if (item instanceof ItemArmor)
{
ItemArmor itemarmor = (ItemArmor)item;
- this.loadTexture("/armor/" + bipedArmorFilenamePrefix[itemarmor.renderIndex] + "_" + (par2 == 2 ? 2 : 1) + "_b.png");
+ this.loadTexture(ForgeHooksClient.getArmorTexture(par1EntityLiving, itemstack, "/armor/" + bipedArmorFilenamePrefix[itemarmor.renderIndex] + "_" + (par2 == 2 ? 2 : 1) + "_b.png", par2, 2));
- this.func_110776_a(func_110858_a((ItemArmor)item, par2, "overlay"));
+ this.func_110776_a(getArmorResource(par1EntityLiving, itemstack, par2, "overlay"));
float f1 = 1.0F;
GL11.glColor3f(f1, f1, f1);
}
@@ -174,9 +182,12 @@
@@ -185,9 +222,12 @@
GL11.glPushMatrix();
this.modelBipedMain.bipedHead.postRender(0.0625F);
@ -72,7 +119,7 @@
{
f2 = 0.625F;
GL11.glTranslatef(0.0F, -0.25F, 0.0F);
@@ -218,7 +229,10 @@
@@ -229,7 +269,10 @@
this.modelBipedMain.bipedRightArm.postRender(0.0625F);
GL11.glTranslatef(-0.0625F, 0.4375F, 0.0625F);
@ -84,7 +131,7 @@
{
f2 = 0.5F;
GL11.glTranslatef(0.0F, 0.1875F, -0.3125F);
@@ -265,7 +279,10 @@
@@ -276,7 +319,10 @@
if (itemstack.getItem().requiresMultipleRenderPasses())
{

View file

@ -1,6 +1,6 @@
--- ../src_base/minecraft/net/minecraft/client/renderer/entity/RenderItem.java
+++ ../src_work/minecraft/net/minecraft/client/renderer/entity/RenderItem.java
@@ -19,6 +19,8 @@
@@ -21,6 +21,8 @@
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;
@ -9,7 +9,7 @@
@SideOnly(Side.CLIENT)
public class RenderItem extends Render
{
@@ -49,29 +51,9 @@
@@ -53,29 +55,9 @@
if (itemstack.getItem() != null)
{
GL11.glPushMatrix();
@ -41,11 +41,11 @@
GL11.glTranslatef((float)par2, (float)par4 + f2, (float)par6);
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
@@ -80,9 +62,18 @@
float f5;
@@ -84,9 +66,18 @@
float f6;
int i;
- if (itemstack.getItemSpriteNumber() == 0 && Block.blocksList[itemstack.itemID] != null && RenderBlocks.renderItemIn3d(Block.blocksList[itemstack.itemID].getRenderType()))
- if (itemstack.getItemSpriteNumber() == 0 && itemstack.itemID < Block.blocksList.length && Block.blocksList[itemstack.itemID] != null && RenderBlocks.renderItemIn3d(Block.blocksList[itemstack.itemID].getRenderType()))
- {
- Block block = Block.blocksList[itemstack.itemID];
+ Block block = null;
@ -63,9 +63,9 @@
GL11.glRotatef(f3, 0.0F, 1.0F, 0.0F);
if (renderInFrame)
@@ -138,10 +129,10 @@
this.loadTexture("/gui/items.png");
@@ -139,10 +130,10 @@
GL11.glScalef(0.5F, 0.5F, 0.5F);
}
- for (int k = 0; k <= 1; ++k)
+ for (int k = 0; k < itemstack.getItem().getRenderPasses(itemstack.getItemDamage()); ++k)
@ -76,7 +76,7 @@
f8 = 1.0F;
if (this.renderWithColor)
@@ -241,32 +232,26 @@
@@ -240,32 +231,26 @@
f11 = 0.021875F;
ItemStack itemstack = par1EntityItem.getEntityItem();
int j = itemstack.stackSize;
@ -122,9 +122,9 @@
+
+ if (itemstack.getItemSpriteNumber() == 0)
{
this.loadTexture("/terrain.png");
this.func_110776_a(TextureMap.field_110575_b);
}
@@ -356,10 +341,10 @@
@@ -353,10 +338,10 @@
float f1;
float f2;
@ -132,41 +132,41 @@
+ Block block = (k < Block.blocksList.length ? Block.blocksList[k] : null);
+ if (par3ItemStack.getItemSpriteNumber() == 0 && block != null && RenderBlocks.renderItemIn3d(Block.blocksList[k].getRenderType()))
{
par2RenderEngine.bindTexture("/terrain.png");
par2TextureManager.func_110577_a(TextureMap.field_110575_b);
- Block block = Block.blocksList[k];
GL11.glPushMatrix();
GL11.glTranslatef((float)(par4 - 2), (float)(par5 + 3), -3.0F + this.zLevel);
GL11.glScalef(10.0F, 10.0F, 10.0F);
@@ -390,11 +375,11 @@
if (Item.itemsList[k].requiresMultipleRenderPasses())
{
GL11.glDisable(GL11.GL_LIGHTING);
- par2RenderEngine.bindTexture("/gui/items.png");
@@ -383,11 +368,11 @@
else if (Item.itemsList[k].requiresMultipleRenderPasses())
{
GL11.glDisable(GL11.GL_LIGHTING);
- par2TextureManager.func_110577_a(TextureMap.field_110576_c);
-
- for (j1 = 0; j1 <= 1; ++j1)
- {
- Icon icon1 = Item.itemsList[k].getIconFromDamageForRenderPass(l, j1);
+ par2RenderEngine.bindTexture(par3ItemStack.getItemSpriteNumber() == 0 ? "/terrain.png" : "/gui/items.png");
- for (int j1 = 0; j1 <= 1; ++j1)
- {
- Icon icon = Item.itemsList[k].getIconFromDamageForRenderPass(l, j1);
+ par2TextureManager.func_110577_a(par3ItemStack.getItemSpriteNumber() == 0 ? TextureMap.field_110575_b : TextureMap.field_110576_c);
+
+ for (j1 = 0; j1 < Item.itemsList[k].getRenderPasses(l); ++j1)
+ {
+ Icon icon1 = Item.itemsList[k].getIcon(par3ItemStack, j1);
int k1 = Item.itemsList[k].getColorFromItemStack(par3ItemStack, j1);
f = (float)(k1 >> 16 & 255) / 255.0F;
f1 = (float)(k1 >> 8 & 255) / 255.0F;
@@ -453,7 +438,10 @@
+ for (int j1 = 0; j1 <= Item.itemsList[k].getRenderPasses(l); ++j1)
+ {
+ Icon icon = Item.itemsList[k].getIcon(par3ItemStack, j1);
int k1 = Item.itemsList[k].getColorFromItemStack(par3ItemStack, j1);
f1 = (float)(k1 >> 16 & 255) / 255.0F;
f2 = (float)(k1 >> 8 & 255) / 255.0F;
@@ -435,7 +420,10 @@
{
if (par3ItemStack != null)
{
- this.renderItemIntoGUI(par1FontRenderer, par2RenderEngine, par3ItemStack, par4, par5);
+ if (!ForgeHooksClient.renderInventoryItem(renderBlocks, par2RenderEngine, par3ItemStack, renderWithColor, zLevel, (float)par4, (float)par5))
- this.func_110795_a(par1FontRenderer, par2TextureManager, par3ItemStack, par4, par5);
+ if (!ForgeHooksClient.renderInventoryItem(renderBlocks, par2TextureManager, par3ItemStack, renderWithColor, zLevel, (float)par4, (float)par5))
+ {
+ this.renderItemIntoGUI(par1FontRenderer, par2RenderEngine, par3ItemStack, par4, par5);
+ this.func_110795_a(par1FontRenderer, par2TextureManager, par3ItemStack, par4, par5);
+ }
if (par3ItemStack.hasEffect())
{
@@ -590,4 +578,47 @@
@@ -573,4 +561,47 @@
{
this.doRenderItem((EntityItem)par1Entity, par2, par4, par6, par8, par9);
}

View file

@ -1,44 +0,0 @@
--- ../src_base/minecraft/net/minecraft/client/renderer/entity/RenderLiving.java
+++ ../src_work/minecraft/net/minecraft/client/renderer/entity/RenderLiving.java
@@ -15,6 +15,9 @@
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.projectile.EntityArrow;
import net.minecraft.util.MathHelper;
+import net.minecraftforge.client.event.RenderLivingEvent;
+import net.minecraftforge.common.MinecraftForge;
+
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;
@@ -25,6 +28,8 @@
/** The model to be used during the render passes. */
protected ModelBase renderPassModel;
+ public static float NAME_TAG_RANGE = 64.0f;
+ public static float NAME_TAG_RANGE_SNEAK = 32.0f;
public RenderLiving(ModelBase par1ModelBase, float par2)
{
@@ -413,12 +418,13 @@
*/
protected void passSpecialRender(EntityLiving par1EntityLiving, double par2, double par4, double par6)
{
+ if (MinecraftForge.EVENT_BUS.post(new RenderLivingEvent.Specials.Pre(par1EntityLiving, this))) return;
if (Minecraft.isGuiEnabled() && par1EntityLiving != this.renderManager.livingPlayer && !par1EntityLiving.func_98034_c(Minecraft.getMinecraft().thePlayer) && (par1EntityLiving.func_94059_bO() || par1EntityLiving.func_94056_bM() && par1EntityLiving == this.renderManager.field_96451_i))
{
float f = 1.6F;
float f1 = 0.016666668F * f;
double d3 = par1EntityLiving.getDistanceSqToEntity(this.renderManager.livingPlayer);
- float f2 = par1EntityLiving.isSneaking() ? 32.0F : 64.0F;
+ float f2 = par1EntityLiving.isSneaking() ? NAME_TAG_RANGE_SNEAK : NAME_TAG_RANGE;
if (d3 < (double)(f2 * f2))
{
@@ -462,6 +468,7 @@
}
}
}
+ MinecraftForge.EVENT_BUS.post(new RenderLivingEvent.Specials.Post(par1EntityLiving, this));
}
protected void func_96449_a(EntityLiving par1EntityLiving, double par2, double par4, double par6, String par8Str, float par9, double par10)

View file

@ -1,22 +1,22 @@
--- ../src_base/minecraft/net/minecraft/client/renderer/entity/RenderManager.java
+++ ../src_work/minecraft/net/minecraft/client/renderer/entity/RenderManager.java
@@ -221,12 +221,14 @@
@@ -227,12 +227,14 @@
if (par4EntityLiving.isPlayerSleeping())
if (par4EntityLivingBase.isPlayerSleeping())
{
- int i = par1World.getBlockId(MathHelper.floor_double(par4EntityLiving.posX), MathHelper.floor_double(par4EntityLiving.posY), MathHelper.floor_double(par4EntityLiving.posZ));
- int i = par1World.getBlockId(MathHelper.floor_double(par4EntityLivingBase.posX), MathHelper.floor_double(par4EntityLivingBase.posY), MathHelper.floor_double(par4EntityLivingBase.posZ));
-
- if (i == Block.bed.blockID)
+ int x = MathHelper.floor_double(par4EntityLiving.posX);
+ int y = MathHelper.floor_double(par4EntityLiving.posY);
+ int z = MathHelper.floor_double(par4EntityLiving.posZ);
+ int x = MathHelper.floor_double(par4EntityLivingBase.posX);
+ int y = MathHelper.floor_double(par4EntityLivingBase.posY);
+ int z = MathHelper.floor_double(par4EntityLivingBase.posZ);
+ Block block = Block.blocksList[par1World.getBlockId(x, y, z)];
+
+ if (block != null && block.isBed(par1World, x, y, z, par4EntityLiving))
+ if (block != null && block.isBed(par1World, x, y, z, par4EntityLivingBase))
{
- int j = par1World.getBlockMetadata(MathHelper.floor_double(par4EntityLiving.posX), MathHelper.floor_double(par4EntityLiving.posY), MathHelper.floor_double(par4EntityLiving.posZ));
- int j = par1World.getBlockMetadata(MathHelper.floor_double(par4EntityLivingBase.posX), MathHelper.floor_double(par4EntityLivingBase.posY), MathHelper.floor_double(par4EntityLivingBase.posZ));
- int k = j & 3;
+ int k = block.getBedDirection(par1World, x, y, z);;
+ int k = block.getBedDirection(par1World, x, y, z);
this.playerViewY = (float)(k * 90 + 180);
this.playerViewX = 0.0F;
}

View file

@ -1,6 +1,6 @@
--- ../src_base/minecraft/net/minecraft/client/renderer/entity/RenderPlayer.java
+++ ../src_work/minecraft/net/minecraft/client/renderer/entity/RenderPlayer.java
@@ -19,7 +19,16 @@
@@ -22,7 +22,16 @@
import net.minecraft.scoreboard.ScoreObjective;
import net.minecraft.scoreboard.Scoreboard;
import net.minecraft.util.MathHelper;
@ -16,23 +16,12 @@
+import static net.minecraftforge.client.IItemRenderer.ItemRendererHelper.BLOCK_3D;
@SideOnly(Side.CLIENT)
public class RenderPlayer extends RenderLiving
@@ -28,6 +37,10 @@
private ModelBiped modelArmorChestplate;
private ModelBiped modelArmor;
public static String[] armorFilenamePrefix = new String[] {"cloth", "chain", "iron", "diamond", "gold"};
+ @Deprecated //Old dead code, tags are now in RenderLiving
+ public static float NAME_TAG_RANGE = 64.0f;
+ @Deprecated //Old dead code, tags are now in RenderLiving
+ public static float NAME_TAG_RANGE_SNEAK = 32.0f;
public RenderPlayer()
public class RenderPlayer extends RendererLivingEntity
@@ -44,6 +53,13 @@
{
@@ -49,6 +62,13 @@
{
ItemStack itemstack = par1EntityPlayer.inventory.armorItemInSlot(3 - par2);
ItemStack itemstack = par1AbstractClientPlayer.inventory.armorItemInSlot(3 - par2);
+ RenderPlayerEvent.SetArmorModel event = new RenderPlayerEvent.SetArmorModel(par1EntityPlayer, this, 3 - par2, par3, itemstack);
+ RenderPlayerEvent.SetArmorModel event = new RenderPlayerEvent.SetArmorModel(par1AbstractClientPlayer, this, 3 - par2, par3, itemstack);
+ MinecraftForge.EVENT_BUS.post(event);
+ if (event.result != -1)
+ {
@ -42,25 +31,24 @@
if (itemstack != null)
{
Item item = itemstack.getItem();
@@ -56,7 +76,7 @@
@@ -51,7 +67,7 @@
if (item instanceof ItemArmor)
{
ItemArmor itemarmor = (ItemArmor)item;
- this.loadTexture("/armor/" + armorFilenamePrefix[itemarmor.renderIndex] + "_" + (par2 == 2 ? 2 : 1) + ".png");
+ this.loadTexture(ForgeHooksClient.getArmorTexture(par1EntityPlayer, itemstack, "/armor/" + armorFilenamePrefix[itemarmor.renderIndex] + "_" + (par2 == 2 ? 2 : 1) + ".png", par2, 1));
- this.func_110776_a(RenderBiped.func_110857_a(itemarmor, par2));
+ this.func_110776_a(RenderBiped.getArmorResource(par1AbstractClientPlayer, itemstack, par2, null));
ModelBiped modelbiped = par2 == 2 ? this.modelArmor : this.modelArmorChestplate;
modelbiped.bipedHead.showModel = par2 == 0;
modelbiped.bipedHeadwear.showModel = par2 == 0;
@@ -65,6 +85,7 @@
@@ -60,15 +76,17 @@
modelbiped.bipedLeftArm.showModel = par2 == 1;
modelbiped.bipedRightLeg.showModel = par2 == 2 || par2 == 3;
modelbiped.bipedLeftLeg.showModel = par2 == 2 || par2 == 3;
+ modelbiped = ForgeHooksClient.getArmorModel(par1EntityPlayer, itemstack, par2, modelbiped);
+ modelbiped = ForgeHooksClient.getArmorModel(par1AbstractClientPlayer, itemstack, par2, modelbiped);
this.setRenderPassModel(modelbiped);
if (modelbiped != null)
@@ -84,9 +105,10 @@
modelbiped.onGround = this.mainModel.onGround;
modelbiped.isRiding = this.mainModel.isRiding;
modelbiped.isChild = this.mainModel.isChild;
float f1 = 1.0F;
- if (itemarmor.getArmorMaterial() == EnumArmorMaterial.CLOTH)
@ -73,36 +61,36 @@
float f2 = (float)(j >> 16 & 255) / 255.0F;
float f3 = (float)(j >> 8 & 255) / 255.0F;
float f4 = (float)(j & 255) / 255.0F;
@@ -125,7 +147,7 @@
@@ -106,7 +124,7 @@
if (item instanceof ItemArmor)
{
ItemArmor itemarmor = (ItemArmor)item;
- this.loadTexture("/armor/" + armorFilenamePrefix[itemarmor.renderIndex] + "_" + (par2 == 2 ? 2 : 1) + "_b.png");
+ this.loadTexture(ForgeHooksClient.getArmorTexture(par1EntityPlayer, itemstack, "/armor/" + armorFilenamePrefix[itemarmor.renderIndex] + "_" + (par2 == 2 ? 2 : 1) + "_b.png", par2, 2));
- this.func_110776_a(RenderBiped.func_110858_a((ItemArmor)item, par2, "overlay"));
+ this.func_110776_a(RenderBiped.getArmorResource(par1AbstractClientPlayer, itemstack, par2, "overlay"));
float f1 = 1.0F;
GL11.glColor3f(f1, f1, f1);
}
@@ -134,6 +156,7 @@
@@ -115,6 +133,7 @@
public void renderPlayer(EntityPlayer par1EntityPlayer, double par2, double par4, double par6, float par8, float par9)
public void func_110819_a(AbstractClientPlayer par1AbstractClientPlayer, double par2, double par4, double par6, float par8, float par9)
{
+ if (MinecraftForge.EVENT_BUS.post(new RenderPlayerEvent.Pre(par1EntityPlayer, this))) return;
+ if (MinecraftForge.EVENT_BUS.post(new RenderPlayerEvent.Pre(par1AbstractClientPlayer, this))) return;
float f2 = 1.0F;
GL11.glColor3f(f2, f2, f2);
ItemStack itemstack = par1EntityPlayer.inventory.getCurrentItem();
@@ -165,6 +188,7 @@
ItemStack itemstack = par1AbstractClientPlayer.inventory.getCurrentItem();
@@ -146,6 +165,7 @@
this.modelArmorChestplate.aimedBow = this.modelArmor.aimedBow = this.modelBipedMain.aimedBow = false;
this.modelArmorChestplate.isSneak = this.modelArmor.isSneak = this.modelBipedMain.isSneak = false;
this.modelArmorChestplate.heldItemRight = this.modelArmor.heldItemRight = this.modelBipedMain.heldItemRight = 0;
+ MinecraftForge.EVENT_BUS.post(new RenderPlayerEvent.Post(par1EntityPlayer, this));
+ MinecraftForge.EVENT_BUS.post(new RenderPlayerEvent.Post(par1AbstractClientPlayer, this));
}
/**
@@ -172,21 +196,30 @@
*/
protected void renderSpecials(EntityPlayer par1EntityPlayer, float par2)
protected ResourceLocation func_110817_a(AbstractClientPlayer par1AbstractClientPlayer)
@@ -155,21 +175,30 @@
protected void func_110820_a(AbstractClientPlayer par1AbstractClientPlayer, float par2)
{
+ RenderPlayerEvent.Specials.Pre event = new RenderPlayerEvent.Specials.Pre(par1EntityPlayer, this, par2);
+ RenderPlayerEvent.Specials.Pre event = new RenderPlayerEvent.Specials.Pre(par1AbstractClientPlayer, this, par2);
+ if (MinecraftForge.EVENT_BUS.post(event))
+ {
+ return;
@ -110,9 +98,9 @@
+
float f1 = 1.0F;
GL11.glColor3f(f1, f1, f1);
super.renderEquippedItems(par1EntityPlayer, par2);
super.renderArrowsStuckInEntity(par1EntityPlayer, par2);
ItemStack itemstack = par1EntityPlayer.inventory.armorItemInSlot(3);
super.renderEquippedItems(par1AbstractClientPlayer, par2);
super.renderArrowsStuckInEntity(par1AbstractClientPlayer, par2);
ItemStack itemstack = par1AbstractClientPlayer.inventory.armorItemInSlot(3);
- if (itemstack != null)
+ if (itemstack != null && event.renderHelmet)
@ -133,27 +121,26 @@
{
f2 = 0.625F;
GL11.glTranslatef(0.0F, -0.25F, 0.0F);
@@ -238,7 +271,7 @@
@@ -221,6 +250,7 @@
boolean flag = par1AbstractClientPlayer.func_110310_o().func_110557_a();
boolean flag1 = !par1AbstractClientPlayer.isInvisible();
boolean flag2 = !par1AbstractClientPlayer.getHideCape();
+ flag = event.renderCape && flag;
float f6;
- if (this.loadDownloadableImageTexture(par1EntityPlayer.cloakUrl, (String)null) && !par1EntityPlayer.isInvisible() && !par1EntityPlayer.getHideCape())
+ if (event.renderCape && this.loadDownloadableImageTexture(par1EntityPlayer.cloakUrl, (String)null) && !par1EntityPlayer.isInvisible() && !par1EntityPlayer.getHideCape())
{
GL11.glPushMatrix();
GL11.glTranslatef(0.0F, 0.0F, 0.125F);
@@ -286,7 +319,7 @@
if (flag && flag1 && flag2)
@@ -272,7 +302,7 @@
ItemStack itemstack1 = par1EntityPlayer.inventory.getCurrentItem();
ItemStack itemstack1 = par1AbstractClientPlayer.inventory.getCurrentItem();
- if (itemstack1 != null)
+ if (itemstack1 != null && event.renderItem)
{
GL11.glPushMatrix();
this.modelBipedMain.bipedRightArm.postRender(0.0625F);
@@ -304,7 +337,11 @@
enumaction = itemstack1.getItemUseAction();
}
@@ -292,7 +322,11 @@
float f11;
- if (itemstack1.itemID < 256 && RenderBlocks.renderItemIn3d(Block.blocksList[itemstack1.itemID].getRenderType()))
+ IItemRenderer customRenderer = MinecraftForgeClient.getItemRenderer(itemstack1, EQUIPPED);
@ -162,9 +149,9 @@
+
+ if (is3D || (isBlock && RenderBlocks.renderItemIn3d(Block.blocksList[itemstack1.itemID].getRenderType())))
{
f3 = 0.5F;
f11 = 0.5F;
GL11.glTranslatef(0.0F, 0.1875F, -0.3125F);
@@ -361,7 +398,7 @@
@@ -349,7 +383,7 @@
if (itemstack1.getItem().requiresMultipleRenderPasses())
{
@ -172,12 +159,12 @@
+ for (j = 0; j < itemstack1.getItem().getRenderPasses(itemstack1.getItemDamage()); ++j)
{
int k = itemstack1.getItem().getColorFromItemStack(itemstack1, j);
f12 = (float)(k >> 16 & 255) / 255.0F;
@@ -383,6 +420,7 @@
f13 = (float)(k >> 16 & 255) / 255.0F;
@@ -371,6 +405,7 @@
GL11.glPopMatrix();
}
+ MinecraftForge.EVENT_BUS.post(new RenderPlayerEvent.Specials.Post(par1EntityPlayer, this, par2));
+ MinecraftForge.EVENT_BUS.post(new RenderPlayerEvent.Specials.Post(par1AbstractClientPlayer, this, par2));
}
protected void renderPlayerScale(EntityPlayer par1EntityPlayer, float par2)
protected void renderPlayerScale(AbstractClientPlayer par1AbstractClientPlayer, float par2)

View file

@ -1,8 +1,8 @@
--- ../src_base/minecraft/net/minecraft/client/renderer/entity/RenderSnowMan.java
+++ ../src_work/minecraft/net/minecraft/client/renderer/entity/RenderSnowMan.java
@@ -7,8 +7,14 @@
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.entity.EntityLiving;
@@ -9,8 +9,14 @@
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.monster.EntitySnowman;
+import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
@ -15,7 +15,7 @@
@SideOnly(Side.CLIENT)
public class RenderSnowMan extends RenderLiving
@@ -31,12 +37,15 @@
@@ -35,12 +41,15 @@
super.renderEquippedItems(par1EntitySnowman, par2);
ItemStack itemstack = new ItemStack(Block.pumpkin, 1);

View file

@ -1,6 +1,6 @@
--- ../src_base/minecraft/net/minecraft/client/renderer/texture/Stitcher.java
+++ ../src_work/minecraft/net/minecraft/client/renderer/texture/Stitcher.java
@@ -182,7 +182,7 @@
@@ -184,7 +184,7 @@
if (flag4 ^ flag5)
{

View file

@ -1,105 +1,40 @@
--- ../src_base/minecraft/net/minecraft/client/renderer/texture/TextureMap.java
+++ ../src_work/minecraft/net/minecraft/client/renderer/texture/TextureMap.java
@@ -20,6 +20,8 @@
import net.minecraft.client.texturepacks.ITexturePack;
@@ -21,6 +21,7 @@
import net.minecraft.item.Item;
import net.minecraft.util.Icon;
import net.minecraft.util.ReportedException;
+import net.minecraftforge.client.ForgeHooksClient;
+import net.minecraftforge.common.ForgeDummyContainer;
@SideOnly(Side.CLIENT)
public class TextureMap implements IconRegister
@@ -48,6 +50,7 @@
public void refreshTextures()
{
this.textureStichedMap.clear();
public class TextureMap extends AbstractTexture implements TickableTextureObject, IconRegister
@@ -62,6 +63,7 @@
Stitcher stitcher = new Stitcher(i, i, true);
this.mapTexturesStiched.clear();
this.listTextureStiched.clear();
+ ForgeHooksClient.onTextureStitchedPre(this);
int i;
int j;
@@ -91,14 +94,22 @@
StitchHolder stitchholder = new StitchHolder(texture);
stitcher.addStitchHolder(stitchholder);
hashmap.put(stitchholder, Arrays.asList(new Texture[] {texture}));
- Iterator iterator = this.textureStichedMap.keySet().iterator();
-
- while (iterator.hasNext())
- {
- String s = (String)iterator.next();
- String s1 = this.basePath + s + this.textureExt;
- List list = TextureManager.instance().createTexture(s1);
-
+
+ for (Map.Entry<String, TextureStitched> entry : ((Map<String, TextureStitched>)textureStichedMap).entrySet())
+ {
+ String name = entry.getKey();
+ String path;
+ if (name.indexOf(':') == -1)
+ {
+ path = this.basePath + name + this.textureExt;
+ }
+ else
+ {
+ String domain = name.substring(0, name.indexOf(':'));
+ String file = name.substring(name.indexOf(':') + 1);
+ path = "mods/" + domain +"/" + basePath + file + textureExt;
+ }
+ List list = TextureManager.instance().createNewTexture(name, path, entry.getValue());
if (!list.isEmpty())
{
StitchHolder stitchholder1 = new StitchHolder((Texture)list.get(0));
@@ -117,7 +128,7 @@
}
this.atlasTexture = stitcher.getTexture();
- iterator = stitcher.getStichSlots().iterator();
+ Iterator iterator = stitcher.getStichSlots().iterator();
Iterator iterator = this.field_110574_e.entrySet().iterator();
while (iterator.hasNext())
{
@@ -151,7 +162,17 @@
if (list1.size() > 1)
{
this.listTextureStiched.add(texturestitched);
- String s3 = this.basePath + s2 + ".txt";
+ String s3;
+ if (s2.indexOf(':') == -1)
+ {
+ s3 = basePath + s2 + ".txt";
+ }
+ else
+ {
+ String domain = s2.substring(0, s2.indexOf(':'));
+ String file = s2.substring(s2.indexOf(':') + 1);
+ s3 = "mods/" + domain + "/" + basePath + file + ".txt";
+ }
ITexturePack itexturepack = Minecraft.getMinecraft().texturePackList.getSelectedTexturePack();
boolean flag1 = !itexturepack.func_98138_b("/" + this.basePath + s2 + ".png", false);
@@ -177,7 +198,11 @@
texturestitched1.copyFrom(this.missingTextureStiched);
@@ -142,6 +144,7 @@
textureatlassprite1 = (TextureAtlasSprite)iterator1.next();
textureatlassprite1.copyFrom(this.missingImage);
}
- this.atlasTexture.writeImage("debug.stitched_" + this.textureName + ".png");
+ if (!ForgeDummyContainer.disableStitchedFileSaving)
+ {
+ this.atlasTexture.writeImage("debug.stitched_" + this.textureName + ".png");
+ }
+ ForgeHooksClient.onTextureStitchedPost(this);
this.atlasTexture.uploadTexture();
}
@@ -202,6 +227,7 @@
private void func_110573_f()
@@ -212,6 +215,7 @@
if (par1Str == null)
{
(new RuntimeException("Don\'t register null!")).printStackTrace();
+ par1Str = "null"; //Don't allow things to actually register null..
}
TextureStitched texturestitched = (TextureStitched)this.textureStichedMap.get(par1Str);
@@ -219,4 +245,37 @@
Object object = (TextureAtlasSprite)this.field_110574_e.get(par1Str);
@@ -253,4 +257,37 @@
{
return this.missingTextureStiched;
this.updateAnimations();
}
+
+ //===================================================================================================
@ -107,14 +42,14 @@
+ //===================================================================================================
+ /**
+ * Grabs the registered entry for the specified name, returning null if there was not a entry.
+ * Opposed to func_94245_a, this will not instantiate the entry, useful to test if a maping exists.
+ * Opposed to registerIcon, this will not instantiate the entry, useful to test if a mapping exists.
+ *
+ * @param name The name of the entry to find
+ * @return The registered entry, null if nothing was registered.
+ */
+ public TextureStitched getTextureExtry(String name)
+ public TextureAtlasSprite getTextureExtry(String name)
+ {
+ return (TextureStitched)textureStichedMap.get(name);
+ return (TextureAtlasSprite)field_110574_e.get(name);
+ }
+
+ /**
@ -125,11 +60,11 @@
+ * @param entry Entry instance
+ * @return True if the entry was added to the map, false otherwise.
+ */
+ public boolean setTextureEntry(String name, TextureStitched entry)
+ public boolean setTextureEntry(String name, TextureAtlasSprite entry)
+ {
+ if (!textureStichedMap.containsKey(name))
+ if (!field_110574_e.containsKey(name))
+ {
+ textureStichedMap.put(name, entry);
+ field_110574_e.put(name, entry);
+ return true;
+ }
+ return false;

View file

@ -7,7 +7,7 @@
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import java.util.Calendar;
@@ -52,7 +53,15 @@
@@ -60,7 +61,15 @@
if (block instanceof BlockChest && i == 0)
{

View file

@ -1,7 +1,7 @@
--- ../src_base/minecraft/net/minecraft/command/CommandHandler.java
+++ ../src_work/minecraft/net/minecraft/command/CommandHandler.java
@@ -11,6 +11,9 @@
import net.minecraft.entity.player.EntityPlayerMP;
@@ -12,6 +12,9 @@
import net.minecraft.util.ChatMessageComponent;
import net.minecraft.util.EnumChatFormatting;
+import net.minecraftforge.common.MinecraftForge;
@ -10,7 +10,7 @@
public class CommandHandler implements ICommandManager
{
/** Map of Strings to the ICommand objects they represent */
@@ -44,6 +47,16 @@
@@ -45,6 +48,16 @@
if (icommand.canCommandSenderUseCommand(par1ICommandSender))
{

View file

@ -1,6 +1,6 @@
--- ../src_base/minecraft/net/minecraft/crash/CrashReport.java
+++ ../src_work/minecraft/net/minecraft/crash/CrashReport.java
@@ -253,7 +253,8 @@
@@ -245,7 +245,8 @@
StackTraceElement stacktraceelement = null;
StackTraceElement stacktraceelement1 = null;

View file

@ -5,12 +5,12 @@
import net.minecraft.enchantment.EnumEnchantmentType;
import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
import net.minecraft.util.StringTranslate;
public class CreativeTabs
{
@@ -34,8 +35,22 @@
/** Whether to draw the title in the foreground of the creative GUI */
private boolean drawTitle = true;
private EnumEnchantmentType[] field_111230_s;
+ public CreativeTabs(String label)
+ {
@ -53,29 +53,31 @@
return this.tabIndex < 6;
}
@@ -149,11 +172,41 @@
@@ -187,9 +210,17 @@
{
Item item = aitem[j];
- if (item != null && item.getCreativeTab() == this)
- {
- item.getSubItems(item.itemID, this, par1List);
- }
- }
+ if (item == null)
+ {
+ continue;
+ }
+
+ for(CreativeTabs tab : item.getCreativeTabs())
+ for (CreativeTabs tab : item.getCreativeTabs())
+ {
+ if (tab == this)
+ {
+ item.getSubItems(item.itemID, this, par1List);
+ }
+ }
+ }
+ }
}
}
@@ -228,4 +259,26 @@
}
}
}
+
+ public int getTabPage()
+ {
@ -97,6 +99,5 @@
+ public ItemStack getIconItemStack()
+ {
+ return new ItemStack(getTabIconItem());
}
@SideOnly(Side.CLIENT)
+ }
}

View file

@ -7,7 +7,7 @@
+
+import com.google.common.collect.ObjectArrays;
+
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.ItemStack;
import net.minecraft.util.DamageSource;
@@ -205,6 +208,27 @@

View file

@ -25,7 +25,7 @@
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagDouble;
@@ -25,12 +33,16 @@
@@ -26,12 +34,16 @@
import net.minecraft.util.DamageSource;
import net.minecraft.util.Direction;
import net.minecraft.util.MathHelper;
@ -42,7 +42,7 @@
public abstract class Entity
{
@@ -225,6 +237,13 @@
@@ -218,6 +230,13 @@
private boolean invulnerable;
private UUID entityUniqueID;
public EnumEntitySize myEntitySize;
@ -56,7 +56,7 @@
public Entity(World par1World)
{
@@ -274,6 +293,15 @@
@@ -245,6 +264,15 @@
this.dataWatcher.addObject(0, Byte.valueOf((byte)0));
this.dataWatcher.addObject(1, Short.valueOf((short)300));
this.entityInit();
@ -72,16 +72,7 @@
}
protected abstract void entityInit();
@@ -554,7 +582,7 @@
if (!this.worldObj.isRemote)
{
this.setFlag(0, this.fire > 0);
- this.setFlag(2, this.ridingEntity != null);
+ this.setFlag(2, this.ridingEntity != null && ridingEntity.shouldRiderSit());
}
this.firstUpdate = false;
@@ -1534,6 +1562,21 @@
@@ -1515,6 +1543,21 @@
par1NBTTagCompound.setInteger("PortalCooldown", this.timeUntilPortal);
par1NBTTagCompound.setLong("UUIDMost", this.entityUniqueID.getMostSignificantBits());
par1NBTTagCompound.setLong("UUIDLeast", this.entityUniqueID.getLeastSignificantBits());
@ -103,7 +94,7 @@
this.writeEntityToNBT(par1NBTTagCompound);
if (this.ridingEntity != null)
@@ -1604,6 +1647,26 @@
@@ -1585,6 +1628,26 @@
this.setPosition(this.posX, this.posY, this.posZ);
this.setRotation(this.rotationYaw, this.rotationPitch);
@ -130,32 +121,32 @@
this.readEntityFromNBT(par1NBTTagCompound);
}
catch (Throwable throwable)
@@ -1698,7 +1761,14 @@
{
EntityItem entityitem = new EntityItem(this.worldObj, this.posX, this.posY + (double)par2, this.posZ, par1ItemStack);
entityitem.delayBeforeCanPickup = 10;
- this.worldObj.spawnEntityInWorld(entityitem);
+ if (captureDrops)
+ {
+ capturedDrops.add(entityitem);
+ }
+ else
+ {
+ this.worldObj.spawnEntityInWorld(entityitem);
+ }
return entityitem;
@@ -1687,7 +1750,14 @@
{
EntityItem entityitem = new EntityItem(this.worldObj, this.posX, this.posY + (double)par2, this.posZ, par1ItemStack);
entityitem.delayBeforeCanPickup = 10;
- this.worldObj.spawnEntityInWorld(entityitem);
+ if (captureDrops)
+ {
+ capturedDrops.add(entityitem);
+ }
+ else
+ {
+ this.worldObj.spawnEntityInWorld(entityitem);
+ }
return entityitem;
}
}
@@ -2056,7 +2126,7 @@
@@ -1985,7 +2055,7 @@
*/
public boolean isRiding()
{
- return this.ridingEntity != null || this.getFlag(2);
+ return (this.ridingEntity != null && ridingEntity.shouldRiderSit()) || this.getFlag(2);
- return this.ridingEntity != null;
+ return this.ridingEntity != null && ridingEntity.shouldRiderSit();
}
/**
@@ -2400,7 +2470,7 @@
@@ -2344,7 +2414,7 @@
public float func_82146_a(Explosion par1Explosion, World par2World, int par3, int par4, int par5, Block par6Block)
{
@ -164,7 +155,7 @@
}
public boolean func_96091_a(Explosion par1Explosion, World par2World, int par3, int par4, int par5, int par6, float par7)
@@ -2458,4 +2528,145 @@
@@ -2407,4 +2477,145 @@
{
return this.getEntityName();
}

View file

@ -1,223 +1,27 @@
--- ../src_base/minecraft/net/minecraft/entity/EntityLiving.java
+++ ../src_work/minecraft/net/minecraft/entity/EntityLiving.java
@@ -22,6 +22,7 @@
import net.minecraft.entity.item.EntityXPOrb;
import net.minecraft.entity.monster.EntityCreeper;
import net.minecraft.entity.monster.EntityGhast;
+import net.minecraft.entity.passive.EntityPig;
import net.minecraft.entity.passive.EntityWolf;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.projectile.EntityArrow;
@@ -50,6 +51,11 @@
@@ -31,6 +31,7 @@
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;
import net.minecraft.world.WorldServer;
+import net.minecraftforge.common.ForgeHooks;
+import net.minecraftforge.common.MinecraftForge;
+import net.minecraftforge.event.entity.living.*;
+import static net.minecraftforge.event.entity.living.LivingEvent.*;
+
public abstract class EntityLiving extends Entity
public abstract class EntityLiving extends EntityLivingBase
{
/**
@@ -400,6 +406,7 @@
public void setAttackTarget(EntityLiving par1EntityLiving)
@@ -141,6 +142,7 @@
public void setAttackTarget(EntityLivingBase par1EntityLivingBase)
{
this.attackTarget = par1EntityLiving;
+ ForgeHooks.onLivingSetAttackTarget(this, par1EntityLiving);
this.attackTarget = par1EntityLivingBase;
+ ForgeHooks.onLivingSetAttackTarget(this, par1EntityLivingBase);
}
/**
@@ -496,6 +503,7 @@
{
this.entityLivingToAttack = par1EntityLiving;
this.revengeTimer = this.entityLivingToAttack != null ? 100 : 0;
+ ForgeHooks.onLivingSetAttackTarget(this, par1EntityLiving);
}
protected void entityInit()
@@ -807,6 +815,11 @@
*/
public void onUpdate()
{
+ if (ForgeHooks.onLivingUpdate(this))
+ {
+ return;
+ }
+
super.onUpdate();
if (!this.worldObj.isRemote)
@@ -992,6 +1005,11 @@
*/
public boolean attackEntityFrom(DamageSource par1DamageSource, int par2)
{
+ if (ForgeHooks.onLivingAttack(this, par1DamageSource, par2))
+ {
+ return false;
+ }
+
if (this.isEntityInvulnerable())
{
return false;
@@ -1229,6 +1247,11 @@
{
if (!this.isEntityInvulnerable())
{
+ par2 = ForgeHooks.onLivingHurt(this, par1DamageSource, par2);
+ if (par2 <= 0)
+ {
+ return;
+ }
par2 = this.applyArmorCalculations(par1DamageSource, par2);
par2 = this.applyPotionDamageCalculations(par1DamageSource, par2);
int j = this.getHealth();
@@ -1295,6 +1318,11 @@
*/
public void onDeath(DamageSource par1DamageSource)
{
+ if (ForgeHooks.onLivingDeath(this, par1DamageSource))
+ {
+ return;
+ }
+
Entity entity = par1DamageSource.getEntity();
EntityLiving entityliving = this.func_94060_bK();
@@ -1319,6 +1347,10 @@
i = EnchantmentHelper.getLootingModifier((EntityLiving)entity);
}
+ captureDrops = true;
+ capturedDrops.clear();
+ int j = 0;
+
if (!this.isChild() && this.worldObj.getGameRules().getGameRuleBooleanValue("doMobLoot"))
{
this.dropFewItems(this.recentlyHit > 0, i);
@@ -1326,7 +1358,7 @@
if (this.recentlyHit > 0)
{
- int j = this.rand.nextInt(200) - i;
+ j = this.rand.nextInt(200) - i;
if (j < 5)
{
@@ -1334,6 +1366,16 @@
}
}
}
+
+ captureDrops = false;
+
+ if (!ForgeHooks.onLivingDrops(this, par1DamageSource, capturedDrops, i, recentlyHit > 0, j))
+ {
+ for (EntityItem item : capturedDrops)
+ {
+ worldObj.spawnEntityInWorld(item);
+ }
+ }
}
this.worldObj.setEntityState(this, (byte)3);
@@ -1378,6 +1420,12 @@
*/
protected void fall(float par1)
{
+ par1 = ForgeHooks.onLivingFall(this, par1);
+ if (par1 <= 0)
+ {
+ return;
+ }
+
super.fall(par1);
int i = MathHelper.ceiling_float_int(par1 - 3.0F);
@@ -1580,7 +1628,7 @@
int j = MathHelper.floor_double(this.boundingBox.minY);
int k = MathHelper.floor_double(this.posZ);
int l = this.worldObj.getBlockId(i, j, k);
- return l == Block.ladder.blockID || l == Block.vine.blockID;
+ return ForgeHooks.isLivingOnLadder(Block.blocksList[l], worldObj, i, j, k, this);
}
/**
@@ -2002,6 +2050,7 @@
}
this.isAirBorne = true;
+ ForgeHooks.onLivingJump(this);
}
/**
@@ -2554,8 +2603,6 @@
return this.getCreatureAttribute() == EnumCreatureAttribute.UNDEAD;
@@ -726,8 +728,6 @@
return this.worldObj.checkNoEntityCollision(this.boundingBox) && this.worldObj.getCollidingBoundingBoxes(this, this.boundingBox).isEmpty() && !this.worldObj.isAnyLiquid(this.boundingBox);
}
- @SideOnly(Side.CLIENT)
-
/**
* Remove the speified potion effect from this entity.
* Returns render size modifier
*/
@@ -2984,6 +3031,17 @@
*/
public void swingItem()
{
+ ItemStack stack = this.getHeldItem();
+
+ if (stack != null && stack.getItem() != null)
+ {
+ Item item = stack.getItem();
+ if (item.onEntitySwing(this, stack))
+ {
+ return;
+ }
+ }
+
if (!this.isSwingInProgress || this.swingProgressInt >= this.getArmSwingAnimationEnd() / 2 || this.swingProgressInt < 0)
{
this.swingProgressInt = -1;
@@ -3084,4 +3142,42 @@
{
return this.persistenceRequired;
}
+
+ /***
+ * Removes all potion effects that have curativeItem as a curative item for its effect
+ * @param curativeItem The itemstack we are using to cure potion effects
+ */
+ public void curePotionEffects(ItemStack curativeItem)
+ {
+ Iterator<Integer> potionKey = activePotionsMap.keySet().iterator();
+
+ if (worldObj.isRemote)
+ {
+ return;
+ }
+
+ while (potionKey.hasNext())
+ {
+ Integer key = potionKey.next();
+ PotionEffect effect = (PotionEffect)activePotionsMap.get(key);
+
+ if (effect.isCurativeItem(curativeItem))
+ {
+ potionKey.remove();
+ onFinishedPotionEffect(effect);
+ }
+ }
+ }
+
+ /**
+ * Returns true if the entity's rider (EntityPlayer) should face forward when mounted.
+ * currently only used in vanilla code by pigs.
+ *
+ * @param player The player who is riding the entity.
+ * @return If the player should orient the same direction as this entity.
+ */
+ public boolean shouldRiderFaceForward(EntityPlayer player)
+ {
+ return this instanceof EntityPig;
+ }
}

View file

@ -0,0 +1,198 @@
--- ../src_base/minecraft/net/minecraft/entity/EntityLivingBase.java
+++ ../src_work/minecraft/net/minecraft/entity/EntityLivingBase.java
@@ -21,9 +21,11 @@
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.item.EntityXPOrb;
import net.minecraft.entity.monster.EntityZombie;
+import net.minecraft.entity.passive.EntityPig;
import net.minecraft.entity.passive.EntityWolf;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.projectile.EntityArrow;
+import net.minecraft.item.Item;
import net.minecraft.item.ItemArmor;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTBase;
@@ -46,6 +48,7 @@
import net.minecraft.util.Vec3;
import net.minecraft.world.World;
import net.minecraft.world.WorldServer;
+import net.minecraftforge.common.ForgeHooks;
public abstract class EntityLivingBase extends Entity
{
@@ -451,6 +454,7 @@
{
this.entityLivingToAttack = par1EntityLivingBase;
this.revengeTimer = this.entityLivingToAttack != null ? 100 : 0;
+ ForgeHooks.onLivingSetAttackTarget(this, par1EntityLivingBase);
}
public EntityLivingBase func_110144_aD()
@@ -738,8 +742,6 @@
return this.getCreatureAttribute() == EnumCreatureAttribute.UNDEAD;
}
- @SideOnly(Side.CLIENT)
-
/**
* Remove the speified potion effect from this entity.
*/
@@ -824,6 +826,7 @@
*/
public boolean attackEntityFrom(DamageSource par1DamageSource, float par2)
{
+ if (ForgeHooks.onLivingAttack(this, par1DamageSource, par2)) return false;
if (this.isEntityInvulnerable())
{
return false;
@@ -974,6 +977,7 @@
*/
public void onDeath(DamageSource par1DamageSource)
{
+ if (ForgeHooks.onLivingDeath(this, par1DamageSource)) return;
Entity entity = par1DamageSource.getEntity();
EntityLivingBase entitylivingbase = this.func_94060_bK();
@@ -998,6 +1002,10 @@
i = EnchantmentHelper.getLootingModifier((EntityLivingBase)entity);
}
+ captureDrops = true;
+ capturedDrops.clear();
+ int j = 0;
+
if (!this.isChild() && this.worldObj.getGameRules().getGameRuleBooleanValue("doMobLoot"))
{
this.dropFewItems(this.recentlyHit > 0, i);
@@ -1005,12 +1013,22 @@
if (this.recentlyHit > 0)
{
- int j = this.rand.nextInt(200) - i;
+ j = this.rand.nextInt(200) - i;
if (j < 5)
{
this.dropRareDrop(j <= 0 ? 1 : 0);
}
+ }
+ }
+
+ captureDrops = false;
+
+ if (!ForgeHooks.onLivingDrops(this, par1DamageSource, capturedDrops, i, recentlyHit > 0, j))
+ {
+ for (EntityItem item : capturedDrops)
+ {
+ worldObj.spawnEntityInWorld(item);
}
}
}
@@ -1080,7 +1098,7 @@
int j = MathHelper.floor_double(this.boundingBox.minY);
int k = MathHelper.floor_double(this.posZ);
int l = this.worldObj.getBlockId(i, j, k);
- return l == Block.ladder.blockID || l == Block.vine.blockID;
+ return ForgeHooks.isLivingOnLadder(Block.blocksList[l], worldObj, i, j, k, this);
}
/**
@@ -1096,6 +1114,8 @@
*/
protected void fall(float par1)
{
+ par1 = ForgeHooks.onLivingFall(this, par1);
+ if (par1 <= 0) return;
super.fall(par1);
PotionEffect potioneffect = this.getActivePotionEffect(Potion.jump);
float f1 = potioneffect != null ? (float)(potioneffect.getAmplifier() + 1) : 0.0F;
@@ -1229,6 +1249,8 @@
{
if (!this.isEntityInvulnerable())
{
+ par2 = ForgeHooks.onLivingHurt(this, par1DamageSource, par2);
+ if (par2 <= 0) return;
par2 = this.applyArmorCalculations(par1DamageSource, par2);
par2 = this.applyPotionDamageCalculations(par1DamageSource, par2);
float f1 = par2;
@@ -1290,6 +1312,17 @@
*/
public void swingItem()
{
+ ItemStack stack = this.getHeldItem();
+
+ if (stack != null && stack.getItem() != null)
+ {
+ Item item = stack.getItem();
+ if (item.onEntitySwing(this, stack))
+ {
+ return;
+ }
+ }
+
if (!this.isSwingInProgress || this.field_110158_av >= this.getArmSwingAnimationEnd() / 2 || this.field_110158_av < 0)
{
this.field_110158_av = -1;
@@ -1531,6 +1564,7 @@
}
this.isAirBorne = true;
+ ForgeHooks.onLivingJump(this);
}
/**
@@ -1735,6 +1769,11 @@
*/
public void onUpdate()
{
+ if (ForgeHooks.onLivingUpdate(this))
+ {
+ return;
+ }
+
super.onUpdate();
if (!this.worldObj.isRemote)
@@ -2255,4 +2294,42 @@
this.field_110151_bq = par1;
}
+
+ /***
+ * Removes all potion effects that have curativeItem as a curative item for its effect
+ * @param curativeItem The itemstack we are using to cure potion effects
+ */
+ public void curePotionEffects(ItemStack curativeItem)
+ {
+ Iterator<Integer> potionKey = activePotionsMap.keySet().iterator();
+
+ if (worldObj.isRemote)
+ {
+ return;
+ }
+
+ while (potionKey.hasNext())
+ {
+ Integer key = potionKey.next();
+ PotionEffect effect = (PotionEffect)activePotionsMap.get(key);
+
+ if (effect.isCurativeItem(curativeItem))
+ {
+ potionKey.remove();
+ onFinishedPotionEffect(effect);
+ }
+ }
+ }
+
+ /**
+ * Returns true if the entity's rider (EntityPlayer) should face forward when mounted.
+ * currently only used in vanilla code by pigs.
+ *
+ * @param player The player who is riding the entity.
+ * @return If the player should orient the same direction as this entity.
+ */
+ public boolean shouldRiderFaceForward(EntityPlayer player)
+ {
+ return this instanceof EntityPig;
+ }
}

View file

@ -1,6 +1,6 @@
--- ../src_base/minecraft/net/minecraft/entity/boss/EntityDragon.java
+++ ../src_work/minecraft/net/minecraft/entity/boss/EntityDragon.java
@@ -531,10 +531,11 @@
@@ -527,10 +527,11 @@
for (int i2 = k; i2 <= j1; ++i2)
{
int j2 = this.worldObj.getBlockId(k1, l1, i2);

View file

@ -1,6 +1,6 @@
--- ../src_base/minecraft/net/minecraft/entity/item/EntityEnderPearl.java
+++ ../src_work/minecraft/net/minecraft/entity/item/EntityEnderPearl.java
@@ -8,6 +8,8 @@
@@ -9,6 +9,8 @@
import net.minecraft.util.DamageSource;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.World;
@ -9,20 +9,28 @@
public class EntityEnderPearl extends EntityThrowable
{
@@ -50,9 +52,13 @@
@@ -51,14 +53,18 @@
if (!entityplayermp.playerNetServerHandler.connectionClosed && entityplayermp.worldObj == this.worldObj)
{
- this.getThrower().setPositionAndUpdate(this.posX, this.posY, this.posZ);
- this.getThrower().fallDistance = 0.0F;
- this.getThrower().attackEntityFrom(DamageSource.fall, 5);
+ EnderTeleportEvent event = new EnderTeleportEvent(entityplayermp, this.posX, this.posY, this.posZ, 5);
+ if (!MinecraftForge.EVENT_BUS.post(event)){
- if (this.getThrower().isRiding())
+ EnderTeleportEvent event = new EnderTeleportEvent(entityplayermp, this.posX, this.posY, this.posZ, 5.0F);
+ if (!MinecraftForge.EVENT_BUS.post(event))
{
- this.getThrower().mountEntity((Entity)null);
+ if (this.getThrower().isRiding())
+ {
+ this.getThrower().mountEntity((Entity)null);
+ }
+
+ this.getThrower().setPositionAndUpdate(event.targetX, event.targetY, event.targetZ);
+ this.getThrower().fallDistance = 0.0F;
+ this.getThrower().attackEntityFrom(DamageSource.fall, event.attackDamage);
+ }
+
}
-
- this.getThrower().setPositionAndUpdate(this.posX, this.posY, this.posZ);
- this.getThrower().fallDistance = 0.0F;
- this.getThrower().attackEntityFrom(DamageSource.fall, 5.0F);
}
}

View file

@ -24,7 +24,7 @@
public EntityItem(World par1World, double par2, double par4, double par6)
{
super(par1World);
@@ -49,6 +59,7 @@
@@ -48,6 +58,7 @@
{
this(par1World, par2, par4, par6);
this.setEntityItemStack(par8ItemStack);
@ -32,7 +32,7 @@
}
/**
@@ -80,6 +91,15 @@
@@ -78,6 +89,15 @@
*/
public void onUpdate()
{
@ -48,7 +48,7 @@
super.onUpdate();
if (this.delayBeforeCanPickup > 0)
@@ -135,7 +155,29 @@
@@ -133,7 +153,29 @@
++this.age;
@ -79,7 +79,7 @@
{
this.setDead();
}
@@ -270,6 +312,7 @@
@@ -268,6 +310,7 @@
{
par1NBTTagCompound.setShort("Health", (short)((byte)this.health));
par1NBTTagCompound.setShort("Age", (short)this.age);
@ -87,7 +87,7 @@
if (this.getEntityItem() != null)
{
@@ -287,10 +330,17 @@
@@ -285,10 +328,17 @@
NBTTagCompound nbttagcompound1 = par1NBTTagCompound.getCompoundTag("Item");
this.setEntityItemStack(ItemStack.loadItemStackFromNBT(nbttagcompound1));
@ -106,7 +106,7 @@
}
/**
@@ -300,10 +350,22 @@
@@ -298,10 +348,22 @@
{
if (!this.worldObj.isRemote)
{

View file

@ -32,7 +32,7 @@
public EntityMinecart(World par1World)
{
super(par1World);
@@ -105,6 +123,10 @@
@@ -104,6 +122,10 @@
*/
public AxisAlignedBB getCollisionBox(Entity par1Entity)
{
@ -43,7 +43,7 @@
return par1Entity.canBePushed() ? par1Entity.boundingBox : null;
}
@@ -113,6 +135,10 @@
@@ -112,6 +134,10 @@
*/
public AxisAlignedBB getBoundingBox()
{
@ -54,7 +54,7 @@
return null;
}
@@ -121,7 +147,7 @@
@@ -120,7 +146,7 @@
*/
public boolean canBePushed()
{
@ -63,7 +63,7 @@
}
public EntityMinecart(World par1World, double par2, double par4, double par6)
@@ -353,19 +379,21 @@
@@ -352,19 +378,21 @@
double d5 = 0.0078125D;
int l = this.worldObj.getBlockId(j, i, k);
@ -92,7 +92,7 @@
}
this.doBlockCollisions();
@@ -392,7 +420,18 @@
@@ -391,7 +419,18 @@
}
this.setRotation(this.rotationYaw, this.rotationPitch);
@ -112,7 +112,7 @@
if (list != null && !list.isEmpty())
{
@@ -416,6 +455,8 @@
@@ -415,6 +454,8 @@
this.riddenByEntity = null;
}
@ -121,7 +121,7 @@
}
}
@@ -444,6 +485,17 @@
@@ -443,6 +484,17 @@
if (this.motionZ > par1)
{
this.motionZ = par1;
@ -139,7 +139,7 @@
}
if (this.onGround)
@@ -453,13 +505,13 @@
@@ -452,13 +504,13 @@
this.motionZ *= 0.5D;
}
@ -157,7 +157,7 @@
}
}
@@ -473,7 +525,7 @@
@@ -472,7 +524,7 @@
if (par8 == Block.railPowered.blockID)
{
@ -166,7 +166,7 @@
flag1 = !flag;
}
@@ -544,7 +596,7 @@
@@ -551,7 +603,7 @@
}
}
@ -175,7 +175,7 @@
{
d7 = Math.sqrt(this.motionX * this.motionX + this.motionZ * this.motionZ);
@@ -592,36 +644,8 @@
@@ -599,36 +651,8 @@
this.posX = d8 + d2 * d7;
this.posZ = d9 + d3 * d7;
this.setPosition(this.posX, this.posY + (double)this.yOffset, this.posZ);
@ -214,7 +214,7 @@
if (aint[0][1] != 0 && MathHelper.floor_double(this.posX) - par1 == aint[0][0] && MathHelper.floor_double(this.posZ) - par3 == aint[0][2])
{
@@ -659,7 +683,12 @@
@@ -666,7 +690,12 @@
this.motionZ = d6 * (double)(k1 - par3);
}
@ -228,7 +228,7 @@
{
double d15 = Math.sqrt(this.motionX * this.motionX + this.motionZ * this.motionZ);
@@ -730,12 +759,7 @@
@@ -737,12 +766,7 @@
}
else
{
@ -242,7 +242,7 @@
par3 = (double)j;
@@ -781,13 +805,8 @@
@@ -788,13 +812,8 @@
if (BlockRailBase.isRailBlock(l))
{
@ -257,7 +257,7 @@
if (i1 >= 2 && i1 <= 5)
{
@@ -893,11 +912,17 @@
@@ -900,11 +919,17 @@
*/
public void applyEntityCollision(Entity par1Entity)
{
@ -271,12 +271,12 @@
{
if (par1Entity != this.riddenByEntity)
{
- if (par1Entity instanceof EntityLiving && !(par1Entity instanceof EntityPlayer) && !(par1Entity instanceof EntityIronGolem) && this.getMinecartType() == 0 && this.motionX * this.motionX + this.motionZ * this.motionZ > 0.01D && this.riddenByEntity == null && par1Entity.ridingEntity == null)
+ if (par1Entity instanceof EntityLiving && !(par1Entity instanceof EntityPlayer) && !(par1Entity instanceof EntityIronGolem) && canBeRidden() && this.motionX * this.motionX + this.motionZ * this.motionZ > 0.01D && this.riddenByEntity == null && par1Entity.ridingEntity == null)
- if (par1Entity instanceof EntityLivingBase && !(par1Entity instanceof EntityPlayer) && !(par1Entity instanceof EntityIronGolem) && this.getMinecartType() == 0 && this.motionX * this.motionX + this.motionZ * this.motionZ > 0.01D && this.riddenByEntity == null && par1Entity.ridingEntity == null)
+ if (par1Entity instanceof EntityLivingBase && !(par1Entity instanceof EntityPlayer) && !(par1Entity instanceof EntityIronGolem) && canBeRidden() && this.motionX * this.motionX + this.motionZ * this.motionZ > 0.01D && this.riddenByEntity == null && par1Entity.ridingEntity == null)
{
par1Entity.mountEntity(this);
}
@@ -943,7 +968,7 @@
@@ -950,7 +975,7 @@
double d7 = par1Entity.motionX + this.motionX;
double d8 = par1Entity.motionZ + this.motionZ;
@ -285,7 +285,7 @@
{
this.motionX *= 0.20000000298023224D;
this.motionZ *= 0.20000000298023224D;
@@ -951,7 +976,7 @@
@@ -958,7 +983,7 @@
par1Entity.motionX *= 0.949999988079071D;
par1Entity.motionZ *= 0.949999988079071D;
}
@ -294,7 +294,7 @@
{
par1Entity.motionX *= 0.20000000298023224D;
par1Entity.motionZ *= 0.20000000298023224D;
@@ -1158,4 +1183,211 @@
@@ -1165,4 +1190,211 @@
{
return this.entityName;
}

View file

@ -9,9 +9,9 @@
public abstract class EntityMinecartContainer extends EntityMinecart implements IInventory
{
@@ -283,6 +285,10 @@
*/
public boolean interact(EntityPlayer par1EntityPlayer)
@@ -280,6 +282,10 @@
public boolean func_130002_c(EntityPlayer par1EntityPlayer)
{
+ if(MinecraftForge.EVENT_BUS.post(new MinecartInteractEvent(this, par1EntityPlayer)))
+ {

View file

@ -9,9 +9,9 @@
public class EntityMinecartEmpty extends EntityMinecart
{
@@ -20,6 +22,10 @@
*/
public boolean interact(EntityPlayer par1EntityPlayer)
@@ -17,6 +19,10 @@
public boolean func_130002_c(EntityPlayer par1EntityPlayer)
{
+ if(MinecraftForge.EVENT_BUS.post(new MinecartInteractEvent(this, par1EntityPlayer)))
+ {

View file

@ -9,9 +9,9 @@
public class EntityMinecartFurnace extends EntityMinecart
{
@@ -126,6 +128,10 @@
*/
public boolean interact(EntityPlayer par1EntityPlayer)
@@ -123,6 +125,10 @@
public boolean func_130002_c(EntityPlayer par1EntityPlayer)
{
+ if(MinecraftForge.EVENT_BUS.post(new MinecartInteractEvent(this, par1EntityPlayer)))
+ {

View file

@ -9,9 +9,9 @@
public class EntityMinecartHopper extends EntityMinecartContainer implements Hopper
{
@@ -54,6 +56,10 @@
*/
public boolean interact(EntityPlayer par1EntityPlayer)
@@ -51,6 +53,10 @@
public boolean func_130002_c(EntityPlayer par1EntityPlayer)
{
+ if(MinecraftForge.EVENT_BUS.post(new MinecartInteractEvent(this, par1EntityPlayer)))
+ {

View file

@ -1,6 +1,6 @@
--- ../src_base/minecraft/net/minecraft/entity/monster/EntityEnderman.java
+++ ../src_work/minecraft/net/minecraft/entity/monster/EntityEnderman.java
@@ -12,6 +12,8 @@
@@ -16,6 +16,8 @@
import net.minecraft.util.MathHelper;
import net.minecraft.util.Vec3;
import net.minecraft.world.World;
@ -9,7 +9,7 @@
public class EntityEnderman extends EntityMob
{
@@ -275,12 +277,17 @@
@@ -291,12 +293,17 @@
*/
protected boolean teleportTo(double par1, double par3, double par5)
{
@ -30,7 +30,7 @@
boolean flag = false;
int i = MathHelper.floor_double(this.posX);
int j = MathHelper.floor_double(this.posY);
@@ -457,7 +464,7 @@
@@ -473,7 +480,7 @@
}
}

View file

@ -13,7 +13,7 @@
{
public EntityMooshroom(World par1World)
{
@@ -39,31 +43,7 @@
@@ -38,31 +42,7 @@
}
}
@ -26,7 +26,7 @@
- {
- EntityCow entitycow = new EntityCow(this.worldObj);
- entitycow.setLocationAndAngles(this.posX, this.posY, this.posZ, this.rotationYaw, this.rotationPitch);
- entitycow.setEntityHealth(this.getHealth());
- entitycow.setEntityHealth(this.func_110143_aJ());
- entitycow.renderYawOffset = this.renderYawOffset;
- this.worldObj.spawnEntityInWorld(entitycow);
-
@ -46,7 +46,7 @@
}
public EntityMooshroom func_94900_c(EntityAgeable par1EntityAgeable)
@@ -83,4 +63,29 @@
@@ -82,4 +62,29 @@
{
return this.func_94900_c(par1EntityAgeable);
}
@ -63,7 +63,7 @@
+ setDead();
+ EntityCow entitycow = new EntityCow(worldObj);
+ entitycow.setLocationAndAngles(posX, posY, posZ, rotationYaw, rotationPitch);
+ entitycow.setEntityHealth(getHealth());
+ entitycow.setEntityHealth(func_110143_aJ());
+ entitycow.renderYawOffset = renderYawOffset;
+ worldObj.spawnEntityInWorld(entitycow);
+ worldObj.spawnParticle("largeexplode", posX, posY + (double)(height / 2.0F), posZ, 0.0D, 0.0D, 0.0D);

View file

@ -1,6 +1,6 @@
--- ../src_base/minecraft/net/minecraft/entity/passive/EntityOcelot.java
+++ ../src_work/minecraft/net/minecraft/entity/passive/EntityOcelot.java
@@ -355,8 +355,9 @@
@@ -334,8 +334,9 @@
}
int l = this.worldObj.getBlockId(i, j - 1, k);

View file

@ -9,7 +9,7 @@
import java.util.Random;
import net.minecraft.block.Block;
import net.minecraft.entity.EntityAgeable;
@@ -24,7 +26,9 @@
@@ -26,7 +28,9 @@
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;
@ -20,7 +20,7 @@
{
private final InventoryCrafting field_90016_e = new InventoryCrafting(new ContainerSheep(this), 2, 1);
@@ -159,28 +163,6 @@
@@ -141,28 +145,6 @@
*/
public boolean interact(EntityPlayer par1EntityPlayer)
{
@ -49,7 +49,7 @@
return super.interact(par1EntityPlayer);
}
@@ -349,4 +331,24 @@
@@ -343,4 +325,24 @@
{
return this.func_90015_b(par1EntityAgeable);
}

View file

@ -1,6 +1,6 @@
--- ../src_base/minecraft/net/minecraft/entity/player/EntityPlayer.java
+++ ../src_work/minecraft/net/minecraft/entity/player/EntityPlayer.java
@@ -66,8 +66,23 @@
@@ -68,8 +68,21 @@
import net.minecraft.world.World;
import net.minecraft.world.chunk.IChunkProvider;
@ -16,24 +16,13 @@
+import net.minecraftforge.event.entity.player.PlayerFlyableFallEvent;
+import net.minecraftforge.event.entity.player.PlayerSleepInBedEvent;
+
public abstract class EntityPlayer extends EntityLiving implements ICommandSender
public abstract class EntityPlayer extends EntityLivingBase implements ICommandSender
{
+ public static final String PERSISTED_NBT_TAG = "PlayerPersisted";
+ public int maxHealth = 20;
+
/** Inventory of the player */
public InventoryPlayer inventory = new InventoryPlayer(this);
private InventoryEnderChest theInventoryEnderChest = new InventoryEnderChest();
@@ -181,7 +196,7 @@
public int getMaxHealth()
{
- return 20;
+ return maxHealth <= 0 ? 20 : maxHealth;
}
protected void entityInit()
@@ -268,6 +283,7 @@
@@ -269,6 +282,7 @@
if (itemstack == this.itemInUse)
{
@ -41,21 +30,27 @@
if (this.itemInUseCount <= 25 && this.itemInUseCount % 4 == 0)
{
this.updateItemUse(itemstack, 5);
@@ -528,11 +544,11 @@
this.cameraYaw = 0.0F;
this.addMountedMovementStat(this.posX - d0, this.posY - d1, this.posZ - d2);
@@ -539,11 +553,11 @@
this.cameraYaw = 0.0F;
this.addMountedMovementStat(this.posX - d0, this.posY - d1, this.posZ - d2);
- if (this.ridingEntity instanceof EntityPig)
+ if (this.ridingEntity instanceof EntityLiving && ((EntityLiving)ridingEntity).shouldRiderFaceForward(this))
{
this.rotationPitch = f1;
this.rotationYaw = f;
- this.renderYawOffset = ((EntityPig)this.ridingEntity).renderYawOffset;
+ this.renderYawOffset = ((EntityLiving)this.ridingEntity).renderYawOffset;
- if (this.ridingEntity instanceof EntityPig)
+ if (this.ridingEntity instanceof EntityLivingBase && ((EntityLivingBase)ridingEntity).shouldRiderFaceForward(this))
{
this.rotationPitch = f1;
this.rotationYaw = f;
- this.renderYawOffset = ((EntityPig)this.ridingEntity).renderYawOffset;
+ this.renderYawOffset = ((EntityLivingBase)this.ridingEntity).renderYawOffset;
}
}
}
@@ -661,6 +677,9 @@
@@ -686,11 +700,15 @@
*/
public void onDeath(DamageSource par1DamageSource)
{
+ if (ForgeHooks.onLivingDeath(this, par1DamageSource)) return;
super.onDeath(par1DamageSource);
this.setSize(0.2F, 0.2F);
this.setPosition(this.posX, this.posY, this.posZ);
this.motionY = 0.10000000149011612D;
@ -65,7 +60,7 @@
if (this.username.equals("Notch"))
{
this.dropPlayerItemWithRandomChoice(new ItemStack(Item.appleRed, 1), true);
@@ -669,6 +688,20 @@
@@ -699,6 +717,20 @@
if (!this.worldObj.getGameRules().getGameRuleBooleanValue("keepInventory"))
{
this.inventory.dropAllItems();
@ -86,7 +81,7 @@
}
if (par1DamageSource != null)
@@ -719,7 +752,20 @@
@@ -749,7 +781,20 @@
*/
public EntityItem dropOneItem(boolean par1)
{
@ -108,7 +103,7 @@
}
/**
@@ -728,7 +774,7 @@
@@ -758,7 +803,7 @@
*/
public EntityItem dropPlayerItem(ItemStack par1ItemStack)
{
@ -117,7 +112,7 @@
}
/**
@@ -780,15 +826,28 @@
@@ -814,15 +859,28 @@
*/
public void joinEntityItemWithWorld(EntityItem par1EntityItem)
{
@ -148,7 +143,7 @@
if (f > 1.0F)
{
@@ -799,7 +858,9 @@
@@ -833,7 +891,9 @@
{
float f1 = (float)(i * i + 1);
@ -159,7 +154,7 @@
{
f += f1 * 0.08F;
}
@@ -830,7 +891,8 @@
@@ -864,7 +924,8 @@
f /= 5.0F;
}
@ -169,7 +164,7 @@
}
/**
@@ -838,7 +900,7 @@
@@ -872,7 +933,7 @@
*/
public boolean canHarvestBlock(Block par1Block)
{
@ -178,60 +173,40 @@
}
/**
@@ -857,6 +919,9 @@
this.experienceTotal = par1NBTTagCompound.getInteger("XpTotal");
this.setScore(par1NBTTagCompound.getInteger("Score"));
+ int tmp = par1NBTTagCompound.getInteger("MaxHealth");
+ maxHealth = (tmp <= 0 ? 20 : tmp);
+
if (this.sleeping)
@@ -982,6 +1043,7 @@
*/
public boolean attackEntityFrom(DamageSource par1DamageSource, float par2)
{
+ if (ForgeHooks.onLivingAttack(this, par1DamageSource, par2)) return false;
if (this.isEntityInvulnerable())
{
this.playerLocation = new ChunkCoordinates(MathHelper.floor_double(this.posX), MathHelper.floor_double(this.posY), MathHelper.floor_double(this.posZ));
@@ -893,6 +958,7 @@
par1NBTTagCompound.setInteger("XpLevel", this.experienceLevel);
par1NBTTagCompound.setInteger("XpTotal", this.experienceTotal);
par1NBTTagCompound.setInteger("Score", this.getScore());
+ par1NBTTagCompound.setInteger("MaxHealth", maxHealth);
if (this.spawnChunk != null)
{
@@ -1096,12 +1162,22 @@
return false;
@@ -1135,12 +1197,15 @@
{
if (!this.isEntityInvulnerable())
{
+ par2 = ForgeHooks.onLivingHurt(this, par1DamageSource, par2);
+ if (par2 <= 0)
+ {
+ return;
+ }
+
if (!par1DamageSource.isUnblockable() && this.isBlocking())
+ if (par2 <= 0) return;
if (!par1DamageSource.isUnblockable() && this.isBlocking() && par2 > 0.0F)
{
par2 = 1 + par2 >> 1;
par2 = (1.0F + par2) * 0.5F;
}
- par2 = this.applyArmorCalculations(par1DamageSource, par2);
+ par2 = ArmorProperties.ApplyArmor(this, inventory.armorInventory, par1DamageSource, par2);
+ if (par2 <= 0)
+ {
+ return;
+ }
+ if (par2 <= 0) return;
par2 = this.applyPotionDamageCalculations(par1DamageSource, par2);
this.addExhaustion(par1DamageSource.getHungerDamage());
int j = this.getHealth();
@@ -1144,6 +1220,10 @@
float f1 = par2;
par2 = Math.max(par2 - this.func_110139_bj(), 0.0F);
@@ -1190,6 +1255,7 @@
public boolean interactWith(Entity par1Entity)
{
+ if (MinecraftForge.EVENT_BUS.post(new EntityInteractEvent(this, par1Entity)))
+ {
+ return false;
+ }
if (par1Entity.interact(this))
{
return true;
@@ -1187,7 +1267,9 @@
+ if (MinecraftForge.EVENT_BUS.post(new EntityInteractEvent(this, par1Entity))) return false;
ItemStack itemstack = this.getCurrentEquippedItem();
ItemStack itemstack1 = itemstack != null ? itemstack.copy() : null;
@@ -1246,7 +1312,9 @@
*/
public void destroyCurrentEquippedItem()
{
@ -241,7 +216,7 @@
}
/**
@@ -1204,6 +1286,15 @@
@@ -1263,6 +1331,15 @@
*/
public void attackTargetEntityWithCurrentItem(Entity par1Entity)
{
@ -257,7 +232,7 @@
if (par1Entity.canAttackWithItem())
{
if (!par1Entity.func_85031_j(this))
@@ -1378,6 +1469,12 @@
@@ -1421,6 +1498,12 @@
*/
public EnumStatus sleepInBedAt(int par1, int par2, int par3)
{
@ -270,7 +245,7 @@
if (!this.worldObj.isRemote)
{
if (this.isPlayerSleeping() || !this.isEntityAlive())
@@ -1417,6 +1514,11 @@
@@ -1465,6 +1548,11 @@
{
int l = this.worldObj.getBlockMetadata(par1, par2, par3);
int i1 = BlockBed.getDirection(l);
@ -282,7 +257,7 @@
float f = 0.5F;
float f1 = 0.5F;
@@ -1487,10 +1589,12 @@
@@ -1535,10 +1623,12 @@
ChunkCoordinates chunkcoordinates = this.playerLocation;
ChunkCoordinates chunkcoordinates1 = this.playerLocation;
@ -299,7 +274,7 @@
if (chunkcoordinates1 == null)
{
@@ -1527,7 +1631,9 @@
@@ -1575,7 +1665,9 @@
*/
private boolean isInBed()
{
@ -310,7 +285,7 @@
}
/**
@@ -1542,9 +1648,12 @@
@@ -1590,9 +1682,12 @@
ichunkprovider.loadChunk(par1ChunkCoordinates.posX - 3 >> 4, par1ChunkCoordinates.posZ + 3 >> 4);
ichunkprovider.loadChunk(par1ChunkCoordinates.posX + 3 >> 4, par1ChunkCoordinates.posZ + 3 >> 4);
@ -326,7 +301,7 @@
return chunkcoordinates1;
}
else
@@ -1566,10 +1675,13 @@
@@ -1614,10 +1709,13 @@
{
if (this.playerLocation != null)
{
@ -344,7 +319,7 @@
{
case 0:
return 90.0F;
@@ -1835,6 +1947,10 @@
@@ -1891,6 +1989,10 @@
super.fall(par1);
}
@ -355,7 +330,7 @@
}
/**
@@ -1876,7 +1992,7 @@
@@ -1932,7 +2034,7 @@
{
if (par1ItemStack.getItem().requiresMultipleRenderPasses())
{
@ -364,7 +339,7 @@
}
if (this.itemInUse != null && par1ItemStack.itemID == Item.bow.itemID)
@@ -1898,6 +2014,7 @@
@@ -1954,6 +2056,7 @@
return Item.bow.getItemIconForUseDuration(0);
}
}
@ -372,7 +347,7 @@
}
return icon;
@@ -2137,6 +2254,14 @@
@@ -2176,6 +2279,14 @@
}
this.theInventoryEnderChest = par1EntityPlayer.theInventoryEnderChest;
@ -387,7 +362,7 @@
}
/**
@@ -2208,7 +2333,14 @@
@@ -2239,7 +2350,14 @@
*/
public void setCurrentItemOrArmor(int par1, ItemStack par2ItemStack)
{

View file

@ -1,6 +1,6 @@
--- ../src_base/minecraft/net/minecraft/entity/player/EntityPlayerMP.java
+++ ../src_work/minecraft/net/minecraft/entity/player/EntityPlayerMP.java
@@ -87,6 +87,12 @@
@@ -90,6 +90,12 @@
import net.minecraft.world.WorldServer;
import net.minecraft.world.chunk.Chunk;
@ -12,8 +12,8 @@
+
public class EntityPlayerMP extends EntityPlayer implements ICrafting
{
private StringTranslate translator = new StringTranslate("en_US");
@@ -158,18 +164,10 @@
private String translator = "en_US";
@@ -162,18 +168,10 @@
par4ItemInWorldManager.thisPlayerMP = this;
this.theItemInWorldManager = par4ItemInWorldManager;
this.renderDistance = par1MinecraftServer.getConfigurationManager().getViewDistance();
@ -33,7 +33,7 @@
this.mcServer = par1MinecraftServer;
this.stepHeight = 0.0F;
@@ -278,7 +276,10 @@
@@ -287,7 +285,10 @@
if (chunkcoordintpair != null && this.worldObj.blockExists(chunkcoordintpair.chunkXPos << 4, 0, chunkcoordintpair.chunkZPos << 4))
{
arraylist.add(this.worldObj.getChunkFromChunkCoords(chunkcoordintpair.chunkXPos, chunkcoordintpair.chunkZPos));
@ -45,7 +45,7 @@
}
}
@@ -299,6 +300,7 @@
@@ -308,6 +309,7 @@
{
Chunk chunk = (Chunk)iterator2.next();
this.getServerForPlayer().getEntityTracker().func_85172_a(this, chunk);
@ -53,16 +53,12 @@
}
}
}
@@ -366,11 +368,29 @@
@@ -375,11 +377,24 @@
*/
public void onDeath(DamageSource par1DamageSource)
{
+ if (ForgeHooks.onLivingDeath(this, par1DamageSource))
+ {
+ return;
+ }
+
this.mcServer.getConfigurationManager().sendChatMsg(this.field_94063_bt.func_94546_b());
+ if (ForgeHooks.onLivingDeath(this, par1DamageSource)) return;
this.mcServer.getConfigurationManager().func_110460_a(this.func_110142_aN().func_111182_b());
if (!this.worldObj.getGameRules().getGameRuleBooleanValue("keepInventory"))
{
@ -70,7 +66,6 @@
+ capturedDrops.clear();
+
this.inventory.dropAllItems();
+
+ captureDrops = false;
+ PlayerDropsEvent event = new PlayerDropsEvent(this, par1DamageSource, capturedDrops, recentlyHit > 0);
+ if (!MinecraftForge.EVENT_BUS.post(event))

View file

@ -1,6 +1,6 @@
--- ../src_base/minecraft/net/minecraft/entity/player/InventoryPlayer.java
+++ ../src_work/minecraft/net/minecraft/entity/player/InventoryPlayer.java
@@ -338,6 +338,14 @@
@@ -357,6 +357,14 @@
if (this.mainInventory[i] != null)
{
this.mainInventory[i].updateAnimation(this.player.worldObj, this.player, i, this.currentItem == i);

View file

@ -1,6 +1,6 @@
--- ../src_base/minecraft/net/minecraft/inventory/ContainerRepair.java
+++ ../src_work/minecraft/net/minecraft/inventory/ContainerRepair.java
@@ -305,6 +305,11 @@
@@ -315,6 +315,11 @@
k = Math.max(1, k / 2);
}
@ -12,7 +12,7 @@
this.maximumCost = k + i;
if (i <= 0)
@@ -322,6 +327,7 @@
@@ -331,6 +336,7 @@
{
itemstack1 = null;
}

View file

@ -1,6 +1,15 @@
--- ../src_base/minecraft/net/minecraft/inventory/Slot.java
+++ ../src_work/minecraft/net/minecraft/inventory/Slot.java
@@ -22,6 +22,12 @@
@@ -2,6 +2,8 @@
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
+import net.minecraft.client.renderer.texture.TextureMap;
+import net.minecraft.client.resources.ResourceLocation;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Icon;
@@ -22,6 +24,13 @@
/** display position of the inventory slot on the screen y axis */
public int yDisplayPosition;
@ -9,32 +18,40 @@
+ protected Icon backgroundIcon = null;
+
+ /** Background texture file assigned to this slot, if any. Vanilla "/gui/items.png" is used if this is null. */
+ protected String texture = "/gui/items.png";
+ @SideOnly(Side.CLIENT)
+ protected ResourceLocation texture;
public Slot(IInventory par1IInventory, int par2, int par3, int par4)
{
@@ -148,6 +154,45 @@
@@ -148,7 +157,7 @@
*/
public Icon getBackgroundIconIndex()
{
- return null;
+ return backgroundIcon;
}
@SideOnly(Side.CLIENT)
@@ -156,4 +165,44 @@
{
return true;
}
+
+ /**
+ * Gets the path of the texture file to use for the background image of this slot when drawing the GUI.
+ * @return String: The texture file that will be used in GuiContainer.drawSlotInventory for the slot background.
+ */
+ public String getBackgroundIconTexture()
+ @SideOnly(Side.CLIENT)
+ public ResourceLocation getBackgroundIconTexture()
+ {
+ return (texture == null ? "/gui/items.png" : texture);
+ return (texture == null ? TextureMap.field_110576_c : texture);
+ }
+
+ /**
+ * Sets which icon index to use as the background image of the slot when it's empty.
+ * @param icon The icon to use, null for none
+ */
+ public void setBackgroundIconIndex(Icon icon)
+ public void setBackgroundIcon(Icon icon)
+ {
+ backgroundIcon = icon;
+ }
@ -43,9 +60,10 @@
+ * Sets the texture file to use for the background image of the slot when it's empty.
+ * @param textureFilename String: Path of texture file to use, or null to use "/gui/items.png"
+ */
+ public void setBackgroundIconTexture(String textureFilename)
+ @SideOnly(Side.CLIENT)
+ public void setBackgroundIconTexture(ResourceLocation texture)
+ {
+ texture = textureFilename;
+ this.texture = texture;
+ }
+
+ /**
@ -58,5 +76,4 @@
+ {
+ return slotIndex;
+ }
+
}

View file

@ -1,11 +1,11 @@
--- ../src_base/minecraft/net/minecraft/item/BehaviorDispenseArmor.java
+++ ../src_work/minecraft/net/minecraft/item/BehaviorDispenseArmor.java
@@ -31,7 +31,7 @@
@@ -32,7 +32,7 @@
int i1 = EntityLiving.getArmorPosition(par2ItemStack);
ItemStack itemstack1 = par2ItemStack.copy();
itemstack1.stackSize = 1;
- entityliving.setCurrentItemOrArmor(i1 - l, itemstack1);
+ entityliving.setCurrentItemOrArmor(i1, itemstack1); //Forge: Vanilla bug fix associated with fixed setCurrentItemOrArmor indexs for players.
entityliving.func_96120_a(i1, 2.0F);
--par2ItemStack.stackSize;
return par2ItemStack;
- entitylivingbase.setCurrentItemOrArmor(i1 - l, itemstack1);
+ entitylivingbase.setCurrentItemOrArmor(i1, itemstack1); //BUGFIX Forge: Vanilla bug fix associated with fixed setCurrentItemOrArmor indexs for players.
if (entitylivingbase instanceof EntityLiving)
{

View file

@ -8,7 +8,7 @@
+ //Added by forge for custom Armor materials.
+ public Item customCraftingMaterial = null;
private EnumToolMaterial(int par3, int par4, float par5, int par6, int par7)
private EnumToolMaterial(int par3, int par4, float par5, float par6, int par7)
{
@@ -86,6 +89,14 @@
*/

View file

@ -1,17 +1,16 @@
--- ../src_base/minecraft/net/minecraft/item/Item.java
+++ ../src_work/minecraft/net/minecraft/item/Item.java
@@ -7,13 +7,19 @@
import java.util.Random;
@@ -11,13 +11,18 @@
import java.util.UUID;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
+import net.minecraft.client.entity.EntityClientPlayerMP;
+import net.minecraft.client.gui.FontRenderer;
+import net.minecraft.client.gui.ScaledResolution;
+import net.minecraft.client.model.ModelBiped;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.item.EntityItemFrame;
import net.minecraft.entity.item.EntityPainting;
@ -20,20 +19,19 @@
import net.minecraft.potion.Potion;
import net.minecraft.potion.PotionHelper;
import net.minecraft.stats.StatList;
@@ -23,7 +29,10 @@
@@ -26,7 +31,9 @@
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.util.StatCollector;
import net.minecraft.util.StringTranslate;
import net.minecraft.util.Vec3;
+import net.minecraft.util.WeightedRandomChestContent;
import net.minecraft.world.World;
+import net.minecraftforge.common.ChestGenHooks;
+import net.minecraftforge.common.IArmorTextureProvider;
public class Item
{
@@ -238,13 +247,16 @@
/** Icon index in the icons table. */
@@ -248,13 +255,16 @@
protected Icon itemIcon;
protected String field_111218_cA;
+ /** FORGE: To disable repair recipes. */
+ protected boolean canRepair = true;
@ -49,7 +47,7 @@
}
itemsList[256 + par1] = this;
@@ -640,6 +652,10 @@
@@ -639,6 +649,10 @@
float f7 = f4 * f5;
float f8 = f3 * f5;
double d3 = 5.0D;
@ -60,7 +58,7 @@
Vec3 vec31 = vec3.addVector((double)f7 * d3, (double)f6 * d3, (double)f8 * d3);
return par1World.rayTraceBlocks_do_do(vec3, vec31, par3, !par3);
}
@@ -720,4 +736,534 @@
@@ -736,4 +750,509 @@
{
StatList.initStats();
}
@ -422,12 +420,11 @@
+ * @param itemStack The itemstack
+ * @return the damage
+ */
+ public int getDamageVsEntity(Entity par1Entity, ItemStack itemStack)
+ @Deprecated //Need to find a new place to hook this
+ public float getDamageVsEntity(Entity par1Entity, ItemStack itemStack)
+ {
+ return getDamageVsEntity(par1Entity);
+ return 0.0F; //getDamageVsEntity(par1Entity);
+ }
+
+ @Deprecated private final boolean isArmorProvider = this instanceof IArmorTextureProvider;
+ /**
+ * Called by RenderBiped and RenderPlayer to determine the armor texture that
+ * should be use for the currently equiped item.
@ -443,9 +440,10 @@
+ */
+ public String getArmorTexture(ItemStack stack, Entity entity, int slot, int layer)
+ {
+ return isArmorProvider ? ((IArmorTextureProvider)this).getArmorTextureFile(stack) : null;
+ return null;
+ }
+
+
+ /**
+ * Returns the font renderer used to render tooltips and overlays for this item.
+ * Returning null will use the standard font renderer.
@ -469,7 +467,7 @@
+ * @return A ModelBiped to render instead of the default
+ */
+ @SideOnly(Side.CLIENT)
+ public ModelBiped getArmorModel(EntityLiving entityLiving, ItemStack itemStack, int armorSlot)
+ public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, int armorSlot)
+ {
+ return null;
+ }
@ -481,7 +479,7 @@
+ * @param stack The Item stack
+ * @return True to cancel any further processing by EntityLiving
+ */
+ public boolean onEntitySwing(EntityLiving entityLiving, ItemStack stack)
+ public boolean onEntitySwing(EntityLivingBase entityLiving, ItemStack stack)
+ {
+ return false;
+ }
@ -509,11 +507,6 @@
+ */
+ public int getDamage(ItemStack stack)
+ {
+ return getItemDamageFromStack(stack);
+ }
+ @Deprecated
+ public int getItemDamageFromStack(ItemStack stack)
+ {
+ return stack.itemDamage;
+ }
+
@ -524,11 +517,6 @@
+ */
+ public int getDisplayDamage(ItemStack stack)
+ {
+ return getItemDamageFromStackForDisplay(stack);
+ }
+ @Deprecated
+ public int getItemDamageFromStackForDisplay(ItemStack stack)
+ {
+ return stack.itemDamage;
+ }
+
@ -541,11 +529,6 @@
+ */
+ public int getMaxDamage(ItemStack stack)
+ {
+ return getItemMaxDamageFromStack(stack);
+ }
+ @Deprecated
+ public int getItemMaxDamageFromStack(ItemStack stack)
+ {
+ return getMaxDamage();
+ }
+
@ -556,11 +539,6 @@
+ */
+ public boolean isDamaged(ItemStack stack)
+ {
+ return isItemStackDamaged(stack);
+ }
+ @Deprecated
+ public boolean isItemStackDamaged(ItemStack stack)
+ {
+ return stack.itemDamage > 0;
+ }
+
@ -571,11 +549,6 @@
+ */
+ public void setDamage(ItemStack stack, int damage)
+ {
+ setItemDamageForStack(stack, damage);
+ }
+ @Deprecated
+ public void setItemDamageForStack(ItemStack stack, int damage)
+ {
+ stack.itemDamage = damage;
+
+ if (stack.itemDamage < 0)

View file

@ -1,17 +1,17 @@
--- ../src_base/minecraft/net/minecraft/item/ItemBucket.java
+++ ../src_work/minecraft/net/minecraft/item/ItemBucket.java
@@ -8,6 +8,10 @@
import net.minecraft.util.EnumMovingObjectType;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.World;
+
+import net.minecraftforge.common.MinecraftForge;
+import net.minecraftforge.event.Event;
+import net.minecraftforge.event.entity.player.FillBucketEvent;
+
public class ItemBucket extends Item
{
@@ -40,6 +44,32 @@
/** field for checking if the bucket has been filled. */
@@ -35,6 +39,32 @@
}
else
{

View file

@ -85,4 +85,4 @@
+ }
}
/**
public boolean func_111207_a(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, EntityLivingBase par3EntityLivingBase)

View file

@ -10,7 +10,7 @@
public class ItemHoe extends Item
{
@@ -32,10 +35,23 @@
@@ -32,10 +35,22 @@
}
else
{
@ -30,9 +30,8 @@
- int j1 = par3World.getBlockId(par4, par5 + 1, par6);
+ boolean air = par3World.isAirBlock(par4, par5 + 1, par6);
- if ((par7 == 0 || j1 != 0 || i1 != Block.grass.blockID) && i1 != Block.dirt.blockID)
+ //Forge: Change 0 to air, also BugFix: parens mismatch causing you to be able to hoe dirt under dirt/grass
+ if (par7 == 0 || !air || (i1 != Block.grass.blockID && i1 != Block.dirt.blockID))
- if (par7 != 0 && j1 == 0 && (i1 == Block.grass.blockID || i1 == Block.dirt.blockID))
+ if (par7 != 0 && air && (i1 == Block.grass.blockID || i1 == Block.dirt.blockID))
{
return false;
}
Block block = Block.tilledField;
par3World.playSoundEffect((double)((float)par4 + 0.5F), (double)((float)par5 + 0.5F), (double)((float)par6 + 0.5F), block.stepSound.getStepSound(), (block.stepSound.getVolume() + 1.0F) / 2.0F, block.stepSound.getPitch() * 0.8F);

View file

@ -82,7 +82,7 @@
if (block != null && flag)
{
@@ -257,19 +293,30 @@
@@ -261,19 +297,30 @@
}
else
{
@ -115,7 +115,7 @@
if (itemstack != null)
{
@@ -281,6 +328,7 @@
@@ -285,6 +332,7 @@
}
}
@ -123,7 +123,7 @@
if (flag && flag1)
{
Block.blocksList[l].harvestBlock(this.theWorld, this.thisPlayerMP, par1, par2, par3, i1);
@@ -321,6 +369,7 @@
@@ -325,6 +373,7 @@
if (itemstack1.stackSize == 0)
{
par1EntityPlayer.inventory.mainInventory[par1EntityPlayer.inventory.currentItem] = null;
@ -131,7 +131,7 @@
}
if (!par1EntityPlayer.isUsingItem())
@@ -338,35 +387,56 @@
@@ -342,35 +391,56 @@
*/
public boolean activateBlockOrUseItem(EntityPlayer par1EntityPlayer, World par2World, ItemStack par3ItemStack, int par4, int par5, int par6, int par7, float par8, float par9, float par10)
{
@ -215,7 +215,7 @@
}
/**
@@ -376,4 +446,13 @@
@@ -380,4 +450,13 @@
{
this.theWorld = par1WorldServer;
}

View file

@ -10,28 +10,28 @@
import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.enchantment.Enchantment;
+import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.entity.EntityLiving;
+import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.item.EntityItem;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.stats.StatList;
import net.minecraft.world.World;
+
+import net.minecraftforge.common.IShearable;
public class ItemShears extends Item
{
@@ -17,13 +27,12 @@
public boolean onBlockDestroyed(ItemStack par1ItemStack, World par2World, int par3, int par4, int par5, int par6, EntityLiving par7EntityLiving)
public boolean onBlockDestroyed(ItemStack par1ItemStack, World par2World, int par3, int par4, int par5, int par6, EntityLivingBase par7EntityLivingBase)
{
- if (par3 != Block.leaves.blockID && par3 != Block.web.blockID && par3 != Block.tallGrass.blockID && par3 != Block.vine.blockID && par3 != Block.tripWire.blockID)
+ if (par3 != Block.leaves.blockID && par3 != Block.web.blockID && par3 != Block.tallGrass.blockID && par3 != Block.vine.blockID && par3 != Block.tripWire.blockID && !(Block.blocksList[par3] instanceof IShearable))
{
return super.onBlockDestroyed(par1ItemStack, par2World, par3, par4, par5, par6, par7EntityLiving);
return super.onBlockDestroyed(par1ItemStack, par2World, par3, par4, par5, par6, par7EntityLivingBase);
}
else
{
- par1ItemStack.damageItem(1, par7EntityLiving);
- par1ItemStack.damageItem(1, par7EntityLivingBase);
return true;
}
}
@ -41,7 +41,7 @@
}
+
+ @Override
+ public boolean itemInteractionForEntity(ItemStack itemstack, EntityLiving entity)
+ public boolean func_111207_a(ItemStack itemstack, EntityPlayer player, EntityLivingBase entity)
+ {
+ if (entity.worldObj.isRemote)
+ {

View file

@ -1,6 +1,6 @@
--- ../src_base/minecraft/net/minecraft/item/ItemStack.java
+++ ../src_work/minecraft/net/minecraft/item/ItemStack.java
@@ -249,7 +249,9 @@
@@ -252,7 +252,9 @@
*/
public boolean isItemDamaged()
{
@ -11,7 +11,7 @@
}
/**
@@ -257,6 +259,10 @@
@@ -260,6 +262,10 @@
*/
public int getItemDamageForDisplay()
{
@ -22,7 +22,7 @@
return this.itemDamage;
}
@@ -265,6 +271,10 @@
@@ -268,6 +274,10 @@
*/
public int getItemDamage()
{
@ -33,7 +33,7 @@
return this.itemDamage;
}
@@ -273,6 +283,12 @@
@@ -276,6 +286,12 @@
*/
public void setItemDamage(int par1)
{
@ -46,7 +46,7 @@
this.itemDamage = par1;
if (this.itemDamage < 0)
@@ -286,7 +302,7 @@
@@ -289,7 +305,7 @@
*/
public int getMaxDamage()
{
@ -55,7 +55,7 @@
}
/**
@@ -324,8 +340,8 @@
@@ -327,8 +343,8 @@
}
}
@ -66,15 +66,6 @@
}
}
@@ -388,7 +404,7 @@
*/
public int getDamageVsEntity(Entity par1Entity)
{
- return Item.itemsList[this.itemID].getDamageVsEntity(par1Entity);
+ return Item.itemsList[this.itemID].getDamageVsEntity(par1Entity, this);
}
/**
@@ -396,7 +412,7 @@
*/
public boolean canHarvestBlock(Block par1Block)
@ -83,4 +74,4 @@
+ return Item.itemsList[this.itemID].canHarvestBlock(par1Block, this);
}
public boolean interactWith(EntityLiving par1EntityLiving)
public boolean func_111282_a(EntityPlayer par1EntityPlayer, EntityLivingBase par2EntityLivingBase)

View file

@ -1,16 +1,16 @@
--- ../src_base/minecraft/net/minecraft/item/ItemTool.java
+++ ../src_work/minecraft/net/minecraft/item/ItemTool.java
@@ -7,6 +7,7 @@
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLiving;
@@ -9,6 +9,7 @@
import net.minecraft.entity.SharedMonsterAttributes;
import net.minecraft.entity.ai.attributes.AttributeModifier;
import net.minecraft.world.World;
+import net.minecraftforge.common.ForgeHooks;
public class ItemTool extends Item
{
@@ -110,4 +111,15 @@
{
return this.toolMaterial.getToolCraftingMaterial() == par2ItemStack.itemID ? true : super.getIsRepairable(par1ItemStack, par2ItemStack);
@@ -111,4 +112,15 @@
multimap.put(SharedMonsterAttributes.field_111264_e.func_111108_a(), new AttributeModifier(field_111210_e, "Tool modifier", (double)this.damageVsEntity, 0));
return multimap;
}
+
+ /** FORGE: Overridden to allow custom tool effectiveness */

Some files were not shown because too many files have changed in this diff Show more