Add position to BreakSpeed event. Closes #621

This commit is contained in:
Lex Manos 2014-04-01 14:40:53 -07:00
parent f436b3e62d
commit d9a1c718bf
4 changed files with 55 additions and 31 deletions

View File

@ -188,7 +188,7 @@
} }
public EntityItem func_146097_a(ItemStack p_146097_1_, boolean p_146097_2_, boolean p_146097_3_) public EntityItem func_146097_a(ItemStack p_146097_1_, boolean p_146097_2_, boolean p_146097_3_)
@@ -723,13 +786,25 @@ @@ -723,13 +786,31 @@
public void func_71012_a(EntityItem p_71012_1_) public void func_71012_a(EntityItem p_71012_1_)
{ {
@ -204,18 +204,24 @@
public float func_146096_a(Block p_146096_1_, boolean p_146096_2_) public float func_146096_a(Block p_146096_1_, boolean p_146096_2_)
{ {
- float f = this.field_71071_by.func_146023_a(p_146096_1_); - float f = this.field_71071_by.func_146023_a(p_146096_1_);
+ return getBreakSpeed(p_146096_1_, p_146096_2_, 0); + return getBreakSpeed(p_146096_1_, p_146096_2_, 0, 0, -1, 0);
+ } + }
+ @Deprecated //Location Specifc, one below, remove in 1.8
+ public float getBreakSpeed(Block p_146096_1_, boolean p_146096_2_, int meta) + public float getBreakSpeed(Block p_146096_1_, boolean p_146096_2_, int meta)
+ { + {
+ return getBreakSpeed(p_146096_1_, p_146096_2_, meta, 0, -1, 0);
+ }
+
+ public float getBreakSpeed(Block p_146096_1_, boolean p_146096_2_, int meta, int x, int y, int z)
+ {
+ ItemStack stack = field_71071_by.func_70448_g(); + ItemStack stack = field_71071_by.func_70448_g();
+ float f = (stack == null ? 1.0F : stack.func_77973_b().getDigSpeed(stack, p_146096_1_, meta)); + float f = (stack == null ? 1.0F : stack.func_77973_b().getDigSpeed(stack, p_146096_1_, meta));
+ +
if (f > 1.0F) if (f > 1.0F)
{ {
int i = EnchantmentHelper.func_77509_b(this); int i = EnchantmentHelper.func_77509_b(this);
@@ -739,7 +814,9 @@ @@ -739,7 +820,9 @@
{ {
float f1 = (float)(i * i + 1); float f1 = (float)(i * i + 1);
@ -226,12 +232,12 @@
{ {
f += f1 * 0.08F; f += f1 * 0.08F;
} }
@@ -770,12 +847,13 @@ @@ -770,12 +853,13 @@
f /= 5.0F; f /= 5.0F;
} }
- return f; - return f;
+ f = ForgeEventFactory.getBreakSpeed(this, p_146096_1_, meta, f); + f = ForgeEventFactory.getBreakSpeed(this, p_146096_1_, meta, f, x, y, z);
+ return (f < 0 ? 0 : f); + return (f < 0 ? 0 : f);
} }
@ -242,7 +248,7 @@
} }
public void func_70037_a(NBTTagCompound p_70037_1_) public void func_70037_a(NBTTagCompound p_70037_1_)
@@ -804,6 +882,16 @@ @@ -804,6 +888,16 @@
this.field_82248_d = p_70037_1_.func_74767_n("SpawnForced"); this.field_82248_d = p_70037_1_.func_74767_n("SpawnForced");
} }
@ -259,7 +265,7 @@
this.field_71100_bB.func_75112_a(p_70037_1_); this.field_71100_bB.func_75112_a(p_70037_1_);
this.field_71075_bZ.func_75095_b(p_70037_1_); this.field_71075_bZ.func_75095_b(p_70037_1_);
@@ -834,6 +922,23 @@ @@ -834,6 +928,23 @@
p_70014_1_.func_74757_a("SpawnForced", this.field_82248_d); p_70014_1_.func_74757_a("SpawnForced", this.field_82248_d);
} }
@ -283,7 +289,7 @@
this.field_71100_bB.func_75117_b(p_70014_1_); this.field_71100_bB.func_75117_b(p_70014_1_);
this.field_71075_bZ.func_75091_a(p_70014_1_); this.field_71075_bZ.func_75091_a(p_70014_1_);
p_70014_1_.func_74782_a("EnderItems", this.field_71078_a.func_70487_g()); p_70014_1_.func_74782_a("EnderItems", this.field_71078_a.func_70487_g());
@@ -855,7 +960,7 @@ @@ -855,7 +966,7 @@
public float func_70047_e() public float func_70047_e()
{ {
@ -292,7 +298,7 @@
} }
protected void func_71061_d_() protected void func_71061_d_()
@@ -865,6 +970,7 @@ @@ -865,6 +976,7 @@
public boolean func_70097_a(DamageSource p_70097_1_, float p_70097_2_) public boolean func_70097_a(DamageSource p_70097_1_, float p_70097_2_)
{ {
@ -300,7 +306,7 @@
if (this.func_85032_ar()) if (this.func_85032_ar())
{ {
return false; return false;
@@ -966,12 +1072,15 @@ @@ -966,12 +1078,15 @@
{ {
if (!this.func_85032_ar()) if (!this.func_85032_ar())
{ {
@ -317,7 +323,7 @@
p_70665_2_ = this.func_70672_c(p_70665_1_, p_70665_2_); p_70665_2_ = this.func_70672_c(p_70665_1_, p_70665_2_);
float f1 = p_70665_2_; float f1 = p_70665_2_;
p_70665_2_ = Math.max(p_70665_2_ - this.func_110139_bj(), 0.0F); p_70665_2_ = Math.max(p_70665_2_ - this.func_110139_bj(), 0.0F);
@@ -1005,6 +1114,7 @@ @@ -1005,6 +1120,7 @@
public boolean func_70998_m(Entity p_70998_1_) public boolean func_70998_m(Entity p_70998_1_)
{ {
@ -325,7 +331,7 @@
ItemStack itemstack = this.func_71045_bC(); ItemStack itemstack = this.func_71045_bC();
ItemStack itemstack1 = itemstack != null ? itemstack.func_77946_l() : null; ItemStack itemstack1 = itemstack != null ? itemstack.func_77946_l() : null;
@@ -1055,7 +1165,9 @@ @@ -1055,7 +1171,9 @@
public void func_71028_bD() public void func_71028_bD()
{ {
@ -335,7 +341,7 @@
} }
public double func_70033_W() public double func_70033_W()
@@ -1065,6 +1177,15 @@ @@ -1065,6 +1183,15 @@
public void func_71059_n(Entity p_71059_1_) public void func_71059_n(Entity p_71059_1_)
{ {
@ -351,7 +357,7 @@
if (p_71059_1_.func_70075_an()) if (p_71059_1_.func_70075_an())
{ {
if (!p_71059_1_.func_85031_j(this)) if (!p_71059_1_.func_85031_j(this))
@@ -1212,6 +1333,12 @@ @@ -1212,6 +1339,12 @@
public EntityPlayer.EnumStatus func_71018_a(int p_71018_1_, int p_71018_2_, int p_71018_3_) public EntityPlayer.EnumStatus func_71018_a(int p_71018_1_, int p_71018_2_, int p_71018_3_)
{ {
@ -364,7 +370,7 @@
if (!this.field_70170_p.field_72995_K) if (!this.field_70170_p.field_72995_K)
{ {
if (this.func_70608_bn() || !this.func_70089_S()) if (this.func_70608_bn() || !this.func_70089_S())
@@ -1254,8 +1381,7 @@ @@ -1254,8 +1387,7 @@
if (this.field_70170_p.func_72899_e(p_71018_1_, p_71018_2_, p_71018_3_)) if (this.field_70170_p.func_72899_e(p_71018_1_, p_71018_2_, p_71018_3_))
{ {
@ -374,7 +380,7 @@
float f1 = 0.5F; float f1 = 0.5F;
float f = 0.5F; float f = 0.5F;
@@ -1322,11 +1448,12 @@ @@ -1322,11 +1454,12 @@
this.func_71061_d_(); this.func_71061_d_();
ChunkCoordinates chunkcoordinates = this.field_71081_bT; ChunkCoordinates chunkcoordinates = this.field_71081_bT;
ChunkCoordinates chunkcoordinates1 = this.field_71081_bT; ChunkCoordinates chunkcoordinates1 = this.field_71081_bT;
@ -390,7 +396,7 @@
if (chunkcoordinates1 == null) if (chunkcoordinates1 == null)
{ {
@@ -1360,7 +1487,7 @@ @@ -1360,7 +1493,7 @@
private boolean func_71065_l() private boolean func_71065_l()
{ {
@ -399,7 +405,7 @@
} }
public static ChunkCoordinates func_71056_a(World p_71056_0_, ChunkCoordinates p_71056_1_, boolean p_71056_2_) public static ChunkCoordinates func_71056_a(World p_71056_0_, ChunkCoordinates p_71056_1_, boolean p_71056_2_)
@@ -1371,9 +1498,9 @@ @@ -1371,9 +1504,9 @@
ichunkprovider.func_73158_c(p_71056_1_.field_71574_a - 3 >> 4, p_71056_1_.field_71573_c + 3 >> 4); ichunkprovider.func_73158_c(p_71056_1_.field_71574_a - 3 >> 4, p_71056_1_.field_71573_c + 3 >> 4);
ichunkprovider.func_73158_c(p_71056_1_.field_71574_a + 3 >> 4, p_71056_1_.field_71573_c + 3 >> 4); ichunkprovider.func_73158_c(p_71056_1_.field_71574_a + 3 >> 4, p_71056_1_.field_71573_c + 3 >> 4);
@ -411,7 +417,7 @@
return chunkcoordinates1; return chunkcoordinates1;
} }
else else
@@ -1391,8 +1518,10 @@ @@ -1391,8 +1524,10 @@
{ {
if (this.field_71081_bT != null) if (this.field_71081_bT != null)
{ {
@ -424,7 +430,7 @@
switch (j) switch (j)
{ {
@@ -1448,18 +1577,25 @@ @@ -1448,18 +1583,25 @@
public void func_146105_b(IChatComponent p_146105_1_) {} public void func_146105_b(IChatComponent p_146105_1_) {}
@ -452,7 +458,7 @@
if (p_71063_1_ != null) if (p_71063_1_ != null)
{ {
this.field_71077_c = new ChunkCoordinates(p_71063_1_); this.field_71077_c = new ChunkCoordinates(p_71063_1_);
@@ -1633,6 +1769,10 @@ @@ -1633,6 +1775,10 @@
super.func_70069_a(p_70069_1_); super.func_70069_a(p_70069_1_);
} }
@ -463,7 +469,7 @@
} }
protected String func_146067_o(int p_146067_1_) protected String func_146067_o(int p_146067_1_)
@@ -1675,11 +1815,6 @@ @@ -1675,11 +1821,6 @@
} }
else else
{ {
@ -475,7 +481,7 @@
if (this.field_71074_e != null && p_70620_1_.func_77973_b() == Items.field_151031_f) if (this.field_71074_e != null && p_70620_1_.func_77973_b() == Items.field_151031_f)
{ {
int j = p_70620_1_.func_77988_m() - this.field_71072_f; int j = p_70620_1_.func_77988_m() - this.field_71072_f;
@@ -1699,6 +1834,7 @@ @@ -1699,6 +1840,7 @@
return Items.field_151031_f.func_94599_c(0); return Items.field_151031_f.func_94599_c(0);
} }
} }
@ -483,7 +489,7 @@
} }
return iicon; return iicon;
@@ -1782,6 +1918,8 @@ @@ -1782,6 +1924,8 @@
{ {
if (p_71008_1_ != this.field_71074_e) if (p_71008_1_ != this.field_71074_e)
{ {
@ -492,7 +498,7 @@
this.field_71074_e = p_71008_1_; this.field_71074_e = p_71008_1_;
this.field_71072_f = p_71008_2_; this.field_71072_f = p_71008_2_;
@@ -1876,6 +2014,17 @@ @@ -1876,6 +2020,17 @@
} }
this.field_71078_a = p_71049_1_.field_71078_a; this.field_71078_a = p_71049_1_.field_71078_a;
@ -510,7 +516,7 @@
} }
protected boolean func_70041_e_() protected boolean func_70041_e_()
@@ -1914,7 +2063,14 @@ @@ -1914,7 +2069,14 @@
public void func_70062_b(int p_70062_1_, ItemStack p_70062_2_) public void func_70062_b(int p_70062_1_, ItemStack p_70062_2_)
{ {
@ -526,7 +532,7 @@
} }
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
@@ -1959,7 +2115,7 @@ @@ -1959,7 +2121,7 @@
public IChatComponent func_145748_c_() public IChatComponent func_145748_c_()
{ {
@ -535,7 +541,7 @@
chatcomponenttext.func_150256_b().func_150241_a(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/msg " + this.func_70005_c_() + " ")); chatcomponenttext.func_150256_b().func_150241_a(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/msg " + this.func_70005_c_() + " "));
return chatcomponenttext; return chatcomponenttext;
} }
@@ -2042,6 +2198,118 @@ @@ -2042,6 +2204,118 @@
FMLNetworkHandler.openGui(this, mod, modGuiId, world, x, y, z); FMLNetworkHandler.openGui(this, mod, modGuiId, world, x, y, z);
} }

View File

@ -114,11 +114,11 @@ public class ForgeHooks
if (!canHarvestBlock(block, player, metadata)) if (!canHarvestBlock(block, player, metadata))
{ {
return player.getBreakSpeed(block, true, metadata) / hardness / 100F; return player.getBreakSpeed(block, true, metadata, x, y, z) / hardness / 100F;
} }
else else
{ {
return player.getBreakSpeed(block, false, metadata) / hardness / 30F; return player.getBreakSpeed(block, false, metadata, x, y, z) / hardness / 30F;
} }
} }

View File

@ -39,9 +39,15 @@ public class ForgeEventFactory
return event.success; return event.success;
} }
@Deprecated // Location version below
public static float getBreakSpeed(EntityPlayer player, Block block, int metadata, float original) public static float getBreakSpeed(EntityPlayer player, Block block, int metadata, float original)
{ {
PlayerEvent.BreakSpeed event = new PlayerEvent.BreakSpeed(player, block, metadata, original); return getBreakSpeed(player, block, metadata, original, 0, -1, 0);
}
public static float getBreakSpeed(EntityPlayer player, Block block, int metadata, float original, int x, int y, int z)
{
PlayerEvent.BreakSpeed event = new PlayerEvent.BreakSpeed(player, block, metadata, original, x, y, z);
return (MinecraftForge.EVENT_BUS.post(event) ? -1 : event.newSpeed); return (MinecraftForge.EVENT_BUS.post(event) ? -1 : event.newSpeed);
} }

View File

@ -34,14 +34,26 @@ public class PlayerEvent extends LivingEvent
public final int metadata; public final int metadata;
public final float originalSpeed; public final float originalSpeed;
public float newSpeed = 0.0f; public float newSpeed = 0.0f;
public final int x;
public final int y; // -1 notes unknown location
public final int z;
@Deprecated
public BreakSpeed(EntityPlayer player, Block block, int metadata, float original) public BreakSpeed(EntityPlayer player, Block block, int metadata, float original)
{
this(player, block, metadata, original, 0, -1, 0);
}
public BreakSpeed(EntityPlayer player, Block block, int metadata, float original, int x, int y, int z)
{ {
super(player); super(player);
this.block = block; this.block = block;
this.metadata = metadata; this.metadata = metadata;
this.originalSpeed = original; this.originalSpeed = original;
this.newSpeed = original; this.newSpeed = original;
this.x = x;
this.y = y;
this.z = z;
} }
} }