71 lines
4.0 KiB
Diff
71 lines
4.0 KiB
Diff
--- a/net/minecraft/world/Explosion.java
|
|
+++ b/net/minecraft/world/Explosion.java
|
|
@@ -41,6 +41,7 @@
|
|
private DamageSource field_199593_j;
|
|
private final List<BlockPos> field_77281_g = Lists.newArrayList();
|
|
private final Map<EntityPlayer, Vec3d> field_77288_k = Maps.newHashMap();
|
|
+ private final Vec3d position;
|
|
|
|
@OnlyIn(Dist.CLIENT)
|
|
public Explosion(World p_i45752_1_, @Nullable Entity p_i45752_2_, double p_i45752_3_, double p_i45752_5_, double p_i45752_7_, float p_i45752_9_, List<BlockPos> p_i45752_10_) {
|
|
@@ -63,6 +64,7 @@
|
|
this.field_77286_a = p_i45754_10_;
|
|
this.field_82755_b = p_i45754_11_;
|
|
this.field_199593_j = DamageSource.func_94539_a(this);
|
|
+ this.position = new Vec3d(this.field_77284_b, this.field_77285_c, this.field_77282_d);
|
|
}
|
|
|
|
public void func_77278_a() {
|
|
@@ -89,8 +91,8 @@
|
|
BlockPos blockpos = new BlockPos(d4, d6, d8);
|
|
IBlockState iblockstate = this.field_77287_j.func_180495_p(blockpos);
|
|
IFluidState ifluidstate = this.field_77287_j.func_204610_c(blockpos);
|
|
- if (!iblockstate.func_196958_f() || !ifluidstate.func_206888_e()) {
|
|
- float f2 = Math.max(iblockstate.func_177230_c().func_149638_a(), ifluidstate.func_210200_l());
|
|
+ if (!iblockstate.isAir(field_77287_j, blockpos) || !ifluidstate.func_206888_e()) {
|
|
+ float f2 = Math.max(iblockstate.getExplosionResistance(field_77287_j, blockpos, field_77283_e, this), ifluidstate.getExplosionResistance(field_77287_j, blockpos, field_77283_e, this));
|
|
if (this.field_77283_e != null) {
|
|
f2 = this.field_77283_e.func_180428_a(this, this.field_77287_j, blockpos, iblockstate, ifluidstate, f2);
|
|
}
|
|
@@ -120,6 +122,7 @@
|
|
int j2 = MathHelper.func_76128_c(this.field_77282_d - (double)f3 - 1.0D);
|
|
int j1 = MathHelper.func_76128_c(this.field_77282_d + (double)f3 + 1.0D);
|
|
List<Entity> list = this.field_77287_j.func_72839_b(this.field_77283_e, new AxisAlignedBB((double)k1, (double)i2, (double)j2, (double)l1, (double)i1, (double)j1));
|
|
+ net.minecraftforge.event.ForgeEventFactory.onExplosionDetonate(this.field_77287_j, this, list, f3);
|
|
Vec3d vec3d = new Vec3d(this.field_77284_b, this.field_77285_c, this.field_77282_d);
|
|
|
|
for(int k2 = 0; k2 < list.size(); ++k2) {
|
|
@@ -191,20 +194,19 @@
|
|
this.field_77287_j.func_195594_a(Particles.field_197601_L, d0, d1, d2, d3, d4, d5);
|
|
}
|
|
|
|
- if (!iblockstate.func_196958_f()) {
|
|
+ if (!iblockstate.isAir(field_77287_j, blockpos)) {
|
|
if (block.func_149659_a(this)) {
|
|
iblockstate.func_196941_a(this.field_77287_j, blockpos, 1.0F / this.field_77280_f, 0);
|
|
}
|
|
|
|
- this.field_77287_j.func_180501_a(blockpos, Blocks.field_150350_a.func_176223_P(), 3);
|
|
- block.func_180652_a(this.field_77287_j, blockpos, this);
|
|
+ iblockstate.onBlockExploded(this.field_77287_j, blockpos, this);
|
|
}
|
|
}
|
|
}
|
|
|
|
if (this.field_77286_a) {
|
|
for(BlockPos blockpos1 : this.field_77281_g) {
|
|
- if (this.field_77287_j.func_180495_p(blockpos1).func_196958_f() && this.field_77287_j.func_180495_p(blockpos1.func_177977_b()).func_200015_d(this.field_77287_j, blockpos1.func_177977_b()) && this.field_77290_i.nextInt(3) == 0) {
|
|
+ if (this.field_77287_j.func_180495_p(blockpos1).isAir(field_77287_j, blockpos1) && this.field_77287_j.func_180495_p(blockpos1.func_177977_b()).func_200015_d(this.field_77287_j, blockpos1.func_177977_b()) && this.field_77290_i.nextInt(3) == 0) {
|
|
this.field_77287_j.func_175656_a(blockpos1, Blocks.field_150480_ab.func_176223_P());
|
|
}
|
|
}
|
|
@@ -242,4 +244,8 @@
|
|
public List<BlockPos> func_180343_e() {
|
|
return this.field_77281_g;
|
|
}
|
|
+
|
|
+ public Vec3d getPosition() {
|
|
+ return this.position;
|
|
+ }
|
|
}
|