Fix NPE when player tries to sleep without bed (#4487)
This commit is contained in:
parent
4cdb6b6d60
commit
d060747fad
|
@ -322,28 +322,38 @@
|
||||||
this.func_184602_cy();
|
this.func_184602_cy();
|
||||||
this.field_70170_p.func_72960_a(this, (byte)30);
|
this.field_70170_p.func_72960_a(this, (byte)30);
|
||||||
}
|
}
|
||||||
@@ -1442,6 +1529,8 @@
|
@@ -1442,7 +1529,11 @@
|
||||||
|
|
||||||
public EntityPlayer.SleepResult func_180469_a(BlockPos p_180469_1_)
|
public EntityPlayer.SleepResult func_180469_a(BlockPos p_180469_1_)
|
||||||
{
|
{
|
||||||
|
- EnumFacing enumfacing = (EnumFacing)this.field_70170_p.func_180495_p(p_180469_1_).func_177229_b(BlockHorizontal.field_185512_D);
|
||||||
+ EntityPlayer.SleepResult ret = net.minecraftforge.event.ForgeEventFactory.onPlayerSleepInBed(this, p_180469_1_);
|
+ EntityPlayer.SleepResult ret = net.minecraftforge.event.ForgeEventFactory.onPlayerSleepInBed(this, p_180469_1_);
|
||||||
+ if (ret != null) return ret;
|
+ if (ret != null) return ret;
|
||||||
EnumFacing enumfacing = (EnumFacing)this.field_70170_p.func_180495_p(p_180469_1_).func_177229_b(BlockHorizontal.field_185512_D);
|
+ final IBlockState state = this.field_70170_p.func_175667_e(p_180469_1_) ? this.field_70170_p.func_180495_p(p_180469_1_) : null;
|
||||||
|
+ final boolean isBed = state != null && state.func_177230_c().isBed(state, this.field_70170_p, p_180469_1_, this);
|
||||||
|
+ final EnumFacing enumfacing = isBed && state.func_177230_c() instanceof BlockHorizontal ? (EnumFacing)state.func_177229_b(BlockHorizontal.field_185512_D) : null;
|
||||||
|
|
||||||
if (!this.field_70170_p.field_72995_K)
|
if (!this.field_70170_p.field_72995_K)
|
||||||
@@ -1484,8 +1573,9 @@
|
{
|
||||||
|
@@ -1484,8 +1575,7 @@
|
||||||
this.func_192030_dh();
|
this.func_192030_dh();
|
||||||
this.func_70105_a(0.2F, 0.2F);
|
this.func_70105_a(0.2F, 0.2F);
|
||||||
|
|
||||||
- if (this.field_70170_p.func_175667_e(p_180469_1_))
|
- if (this.field_70170_p.func_175667_e(p_180469_1_))
|
||||||
- {
|
- {
|
||||||
+ IBlockState state = null;
|
+ if (enumfacing != null) {
|
||||||
+ if (this.field_70170_p.func_175667_e(p_180469_1_)) state = this.field_70170_p.func_180495_p(p_180469_1_);
|
|
||||||
+ if (state != null && state.func_177230_c().isBed(state, this.field_70170_p, p_180469_1_, this)) {
|
|
||||||
float f1 = 0.5F + (float)enumfacing.func_82601_c() * 0.4F;
|
float f1 = 0.5F + (float)enumfacing.func_82601_c() * 0.4F;
|
||||||
float f = 0.5F + (float)enumfacing.func_82599_e() * 0.4F;
|
float f = 0.5F + (float)enumfacing.func_82599_e() * 0.4F;
|
||||||
this.func_175139_a(enumfacing);
|
this.func_175139_a(enumfacing);
|
||||||
@@ -1532,13 +1622,14 @@
|
@@ -1517,6 +1607,7 @@
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
+ else if (p_190774_2_ == null) return false;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
BlockPos blockpos = p_190774_1_.func_177972_a(p_190774_2_.func_176734_d());
|
||||||
|
@@ -1532,13 +1623,14 @@
|
||||||
|
|
||||||
public void func_70999_a(boolean p_70999_1_, boolean p_70999_2_, boolean p_70999_3_)
|
public void func_70999_a(boolean p_70999_1_, boolean p_70999_2_, boolean p_70999_3_)
|
||||||
{
|
{
|
||||||
|
@ -361,7 +371,7 @@
|
||||||
|
|
||||||
if (blockpos == null)
|
if (blockpos == null)
|
||||||
{
|
{
|
||||||
@@ -1547,6 +1638,10 @@
|
@@ -1547,6 +1639,10 @@
|
||||||
|
|
||||||
this.func_70107_b((double)((float)blockpos.func_177958_n() + 0.5F), (double)((float)blockpos.func_177956_o() + 0.1F), (double)((float)blockpos.func_177952_p() + 0.5F));
|
this.func_70107_b((double)((float)blockpos.func_177958_n() + 0.5F), (double)((float)blockpos.func_177956_o() + 0.1F), (double)((float)blockpos.func_177952_p() + 0.5F));
|
||||||
}
|
}
|
||||||
|
@ -372,7 +382,7 @@
|
||||||
|
|
||||||
this.field_71083_bS = false;
|
this.field_71083_bS = false;
|
||||||
|
|
||||||
@@ -1565,15 +1660,16 @@
|
@@ -1565,15 +1661,16 @@
|
||||||
|
|
||||||
private boolean func_175143_p()
|
private boolean func_175143_p()
|
||||||
{
|
{
|
||||||
|
@ -392,7 +402,7 @@
|
||||||
{
|
{
|
||||||
if (!p_180467_2_)
|
if (!p_180467_2_)
|
||||||
{
|
{
|
||||||
@@ -1588,16 +1684,17 @@
|
@@ -1588,16 +1685,17 @@
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -413,7 +423,7 @@
|
||||||
|
|
||||||
switch (enumfacing)
|
switch (enumfacing)
|
||||||
{
|
{
|
||||||
@@ -1637,16 +1734,24 @@
|
@@ -1637,16 +1735,24 @@
|
||||||
|
|
||||||
public BlockPos func_180470_cg()
|
public BlockPos func_180470_cg()
|
||||||
{
|
{
|
||||||
|
@ -440,7 +450,7 @@
|
||||||
if (p_180473_1_ != null)
|
if (p_180473_1_ != null)
|
||||||
{
|
{
|
||||||
this.field_71077_c = p_180473_1_;
|
this.field_71077_c = p_180473_1_;
|
||||||
@@ -1839,6 +1944,10 @@
|
@@ -1839,6 +1945,10 @@
|
||||||
|
|
||||||
super.func_180430_e(p_180430_1_, p_180430_2_);
|
super.func_180430_e(p_180430_1_, p_180430_2_);
|
||||||
}
|
}
|
||||||
|
@ -451,7 +461,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void func_71061_d_()
|
protected void func_71061_d_()
|
||||||
@@ -2176,7 +2285,10 @@
|
@@ -2176,7 +2286,10 @@
|
||||||
|
|
||||||
public ITextComponent func_145748_c_()
|
public ITextComponent func_145748_c_()
|
||||||
{
|
{
|
||||||
|
@ -463,7 +473,7 @@
|
||||||
itextcomponent.func_150256_b().func_150241_a(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/msg " + this.func_70005_c_() + " "));
|
itextcomponent.func_150256_b().func_150241_a(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/msg " + this.func_70005_c_() + " "));
|
||||||
itextcomponent.func_150256_b().func_150209_a(this.func_174823_aP());
|
itextcomponent.func_150256_b().func_150209_a(this.func_174823_aP());
|
||||||
itextcomponent.func_150256_b().func_179989_a(this.func_70005_c_());
|
itextcomponent.func_150256_b().func_179989_a(this.func_70005_c_());
|
||||||
@@ -2185,7 +2297,7 @@
|
@@ -2185,7 +2298,7 @@
|
||||||
|
|
||||||
public float func_70047_e()
|
public float func_70047_e()
|
||||||
{
|
{
|
||||||
|
@ -472,7 +482,7 @@
|
||||||
|
|
||||||
if (this.func_70608_bn())
|
if (this.func_70608_bn())
|
||||||
{
|
{
|
||||||
@@ -2421,6 +2533,168 @@
|
@@ -2421,6 +2534,168 @@
|
||||||
return this.field_71075_bZ.field_75098_d && this.func_70003_b(2, "");
|
return this.field_71075_bZ.field_75098_d && this.func_70003_b(2, "");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue