Finish off most old patches, fix issue for mounted entities.
This commit is contained in:
parent
04b0d24678
commit
2e5f25d8ae
|
@ -50,7 +50,7 @@
|
|||
}
|
||||
|
||||
boolean flag = this.field_78531_r.func_175606_aa() instanceof EntityLivingBase && ((EntityLivingBase)this.field_78531_r.func_175606_aa()).func_70608_bn();
|
||||
+
|
||||
+
|
||||
+ if (!net.minecraftforge.client.ForgeHooksClient.renderFirstPersonHand(field_78531_r.field_71438_f, p_195457_1_))
|
||||
if (this.field_78531_r.field_71474_y.field_74320_O == 0 && !flag && !this.field_78531_r.field_71474_y.field_74319_N && this.field_78531_r.field_71442_b.func_178889_l() != GameType.SPECTATOR) {
|
||||
this.func_180436_i();
|
||||
|
@ -124,16 +124,16 @@
|
|||
renderglobal.func_72731_b(entityplayer, this.field_78531_r.field_71476_x, 0, p_181560_1_);
|
||||
GlStateManager.func_179141_d();
|
||||
}
|
||||
@@ -851,6 +871,9 @@
|
||||
this.field_78531_r.field_71424_I.func_76318_c("aboveClouds");
|
||||
@@ -852,6 +872,9 @@
|
||||
this.func_195456_a(renderglobal, p_181560_1_, d0, d1, d2);
|
||||
}
|
||||
+
|
||||
|
||||
+ this.field_78531_r.field_71424_I.func_76318_c("forge_render_last");
|
||||
+ net.minecraftforge.client.ForgeHooksClient.dispatchRenderLast(renderglobal, p_181560_1_);
|
||||
|
||||
+
|
||||
this.field_78531_r.field_71424_I.func_76318_c("hand");
|
||||
if (this.field_175074_C) {
|
||||
GlStateManager.func_179086_m(256);
|
||||
@@ -955,6 +978,11 @@
|
||||
}
|
||||
|
||||
|
|
|
@ -57,6 +57,33 @@
|
|||
float f = this.field_70130_N / 2.0F;
|
||||
float f1 = this.field_70131_O;
|
||||
this.func_174826_a(new AxisAlignedBB(p_70107_1_ - (double)f, p_70107_3_, p_70107_5_ - (double)f, p_70107_1_ + (double)f, p_70107_3_ + (double)f1, p_70107_5_ + (double)f));
|
||||
@@ -697,7 +703,7 @@
|
||||
int k1 = MathHelper.func_76128_c(this.field_70161_v);
|
||||
BlockPos blockpos = new BlockPos(j1, k, k1);
|
||||
IBlockState iblockstate = this.field_70170_p.func_180495_p(blockpos);
|
||||
- if (iblockstate.func_196958_f()) {
|
||||
+ if (iblockstate.isAir(this.field_70170_p, blockpos)) {
|
||||
BlockPos blockpos1 = blockpos.func_177977_b();
|
||||
IBlockState iblockstate1 = this.field_70170_p.func_180495_p(blockpos1);
|
||||
Block block1 = iblockstate1.func_177230_c();
|
||||
@@ -735,7 +741,7 @@
|
||||
|
||||
this.field_70140_Q = (float)((double)this.field_70140_Q + (double)MathHelper.func_76133_a(d21 * d21 + d23 * d23) * 0.6D);
|
||||
this.field_82151_R = (float)((double)this.field_82151_R + (double)MathHelper.func_76133_a(d21 * d21 + d22 * d22 + d23 * d23) * 0.6D);
|
||||
- if (this.field_82151_R > this.field_70150_b && !iblockstate.func_196958_f()) {
|
||||
+ if (this.field_82151_R > this.field_70150_b && !iblockstate.isAir(this.field_70170_p, blockpos)) {
|
||||
this.field_70150_b = this.func_203009_ad();
|
||||
if (this.func_70090_H()) {
|
||||
Entity entity = this.func_184207_aI() && this.func_184179_bs() != null ? this.func_184179_bs() : this;
|
||||
@@ -749,7 +755,7 @@
|
||||
} else {
|
||||
this.func_180429_a(blockpos, iblockstate);
|
||||
}
|
||||
- } else if (this.field_82151_R > this.field_191959_ay && this.func_191957_ae() && iblockstate.func_196958_f()) {
|
||||
+ } else if (this.field_82151_R > this.field_191959_ay && this.func_191957_ae() && iblockstate.isAir(this.field_70170_p, blockpos)) {
|
||||
this.field_191959_ay = this.func_191954_d(this.field_82151_R);
|
||||
}
|
||||
}
|
||||
@@ -794,6 +800,7 @@
|
||||
this.field_70165_t = (axisalignedbb.field_72340_a + axisalignedbb.field_72336_d) / 2.0D;
|
||||
this.field_70163_u = axisalignedbb.field_72338_b;
|
||||
|
@ -250,12 +277,12 @@
|
|||
BlockPos blockpos1 = worldserver1.func_205770_a(Heightmap.Type.MOTION_BLOCKING_NO_LEAVES, worldserver1.func_175694_M());
|
||||
entity.func_174828_a(blockpos1, entity.field_70177_z, entity.field_70125_A);
|
||||
} else {
|
||||
@@ -2591,4 +2624,49 @@
|
||||
@@ -2591,4 +2624,56 @@
|
||||
public double func_212107_bY() {
|
||||
return this.field_211517_W;
|
||||
}
|
||||
+
|
||||
+ private boolean canUpdate = false;
|
||||
+ private boolean canUpdate = true;
|
||||
+ @Override
|
||||
+ public void canUpdate(boolean value) {
|
||||
+ this.canUpdate = value;
|
||||
|
@ -275,6 +302,13 @@
|
|||
+ this.captureDrops = value;
|
||||
+ return ret;
|
||||
+ }
|
||||
+ private NBTTagCompound entityData;
|
||||
+ @Override
|
||||
+ public NBTTagCompound getEntityData() {
|
||||
+ if (entityData == null)
|
||||
+ entityData = new NBTTagCompound();
|
||||
+ return entityData;
|
||||
+ }
|
||||
+ @Override
|
||||
+ public boolean canTrample(IBlockState state, BlockPos pos, float fallDistance) {
|
||||
+ return field_70170_p.field_73012_v.nextFloat() < fallDistance - 0.5F
|
||||
|
|
|
@ -56,7 +56,16 @@
|
|||
}
|
||||
|
||||
protected boolean func_204229_de() {
|
||||
@@ -433,10 +445,10 @@
|
||||
@@ -420,6 +432,8 @@
|
||||
}
|
||||
|
||||
public void func_70098_U() {
|
||||
+ if (!this.field_70170_p.field_72995_K)
|
||||
+ System.out.println(this.func_70093_af() + " " + this.func_184218_aH());
|
||||
if (!this.field_70170_p.field_72995_K && this.func_70093_af() && this.func_184218_aH()) {
|
||||
this.func_184210_p();
|
||||
this.func_70095_a(false);
|
||||
@@ -433,10 +447,10 @@
|
||||
this.field_71107_bF = this.field_71109_bG;
|
||||
this.field_71109_bG = 0.0F;
|
||||
this.func_71015_k(this.field_70165_t - d0, this.field_70163_u - d1, this.field_70161_v - d2);
|
||||
|
@ -69,7 +78,7 @@
|
|||
}
|
||||
|
||||
}
|
||||
@@ -555,10 +567,12 @@
|
||||
@@ -555,10 +569,12 @@
|
||||
}
|
||||
|
||||
public void func_70645_a(DamageSource p_70645_1_) {
|
||||
|
@ -82,7 +91,7 @@
|
|||
if ("Notch".equals(this.func_200200_C_().getString())) {
|
||||
this.func_146097_a(new ItemStack(Items.field_151034_e), true, false);
|
||||
}
|
||||
@@ -568,6 +582,8 @@
|
||||
@@ -568,6 +584,8 @@
|
||||
this.field_71071_by.func_70436_m();
|
||||
}
|
||||
|
||||
|
@ -91,7 +100,7 @@
|
|||
if (p_70645_1_ != null) {
|
||||
this.field_70159_w = (double)(-MathHelper.func_76134_b((this.field_70739_aP + this.field_70177_z) * ((float)Math.PI / 180F)) * 0.1F);
|
||||
this.field_70179_y = (double)(-MathHelper.func_76126_a((this.field_70739_aP + this.field_70177_z) * ((float)Math.PI / 180F)) * 0.1F);
|
||||
@@ -607,12 +623,14 @@
|
||||
@@ -607,12 +625,14 @@
|
||||
|
||||
@Nullable
|
||||
public EntityItem func_71040_bB(boolean p_71040_1_) {
|
||||
|
@ -108,7 +117,7 @@
|
|||
}
|
||||
|
||||
@Nullable
|
||||
@@ -659,11 +677,18 @@
|
||||
@@ -659,11 +679,18 @@
|
||||
}
|
||||
|
||||
public ItemStack func_184816_a(EntityItem p_184816_1_) {
|
||||
|
@ -127,7 +136,7 @@
|
|||
float f = this.field_71071_by.func_184438_a(p_184813_1_);
|
||||
if (f > 1.0F) {
|
||||
int i = EnchantmentHelper.func_185293_e(this);
|
||||
@@ -705,11 +730,12 @@
|
||||
@@ -705,11 +732,12 @@
|
||||
f /= 5.0F;
|
||||
}
|
||||
|
||||
|
@ -141,7 +150,7 @@
|
|||
}
|
||||
|
||||
public void func_70037_a(NBTTagCompound p_70037_1_) {
|
||||
@@ -739,6 +765,14 @@
|
||||
@@ -739,6 +767,14 @@
|
||||
this.field_82248_d = p_70037_1_.func_74767_n("SpawnForced");
|
||||
}
|
||||
|
||||
|
@ -156,7 +165,7 @@
|
|||
this.field_71100_bB.func_75112_a(p_70037_1_);
|
||||
this.field_71075_bZ.func_75095_b(p_70037_1_);
|
||||
if (p_70037_1_.func_150297_b("EnderItems", 9)) {
|
||||
@@ -785,9 +819,26 @@
|
||||
@@ -785,9 +821,26 @@
|
||||
p_70014_1_.func_74782_a("ShoulderEntityRight", this.func_192025_dl());
|
||||
}
|
||||
|
||||
|
@ -183,7 +192,7 @@
|
|||
if (this.func_180431_b(p_70097_1_)) {
|
||||
return false;
|
||||
} else if (this.field_71075_bZ.field_75102_a && !p_70097_1_.func_76357_e()) {
|
||||
@@ -823,7 +874,7 @@
|
||||
@@ -823,7 +876,7 @@
|
||||
|
||||
protected void func_190629_c(EntityLivingBase p_190629_1_) {
|
||||
super.func_190629_c(p_190629_1_);
|
||||
|
@ -192,7 +201,7 @@
|
|||
this.func_190777_m(true);
|
||||
}
|
||||
|
||||
@@ -844,11 +895,13 @@
|
||||
@@ -844,11 +897,13 @@
|
||||
}
|
||||
|
||||
protected void func_184590_k(float p_184590_1_) {
|
||||
|
@ -207,7 +216,7 @@
|
|||
if (enumhand == EnumHand.MAIN_HAND) {
|
||||
this.func_184201_a(EntityEquipmentSlot.MAINHAND, ItemStack.field_190927_a);
|
||||
} else {
|
||||
@@ -876,11 +929,14 @@
|
||||
@@ -876,11 +931,14 @@
|
||||
|
||||
protected void func_70665_d(DamageSource p_70665_1_, float p_70665_2_) {
|
||||
if (!this.func_180431_b(p_70665_1_)) {
|
||||
|
@ -222,7 +231,7 @@
|
|||
if (p_70665_2_ != 0.0F) {
|
||||
this.func_71020_j(p_70665_1_.func_76345_d());
|
||||
float f1 = this.func_110143_aJ();
|
||||
@@ -929,6 +985,8 @@
|
||||
@@ -929,6 +987,8 @@
|
||||
|
||||
return EnumActionResult.PASS;
|
||||
} else {
|
||||
|
@ -231,7 +240,7 @@
|
|||
ItemStack itemstack = this.func_184586_b(p_190775_2_);
|
||||
ItemStack itemstack1 = itemstack.func_190926_b() ? ItemStack.field_190927_a : itemstack.func_77946_l();
|
||||
if (p_190775_1_.func_184230_a(this, p_190775_2_)) {
|
||||
@@ -936,6 +994,10 @@
|
||||
@@ -936,6 +996,10 @@
|
||||
itemstack.func_190920_e(itemstack1.func_190916_E());
|
||||
}
|
||||
|
||||
|
@ -242,7 +251,7 @@
|
|||
return EnumActionResult.SUCCESS;
|
||||
} else {
|
||||
if (!itemstack.func_190926_b() && p_190775_1_ instanceof EntityLivingBase) {
|
||||
@@ -945,6 +1007,7 @@
|
||||
@@ -945,6 +1009,7 @@
|
||||
|
||||
if (itemstack.func_111282_a(this, (EntityLivingBase)p_190775_1_, p_190775_2_)) {
|
||||
if (itemstack.func_190926_b() && !this.field_71075_bZ.field_75098_d) {
|
||||
|
@ -250,7 +259,7 @@
|
|||
this.func_184611_a(p_190775_2_, ItemStack.field_190927_a);
|
||||
}
|
||||
|
||||
@@ -967,6 +1030,7 @@
|
||||
@@ -967,6 +1032,7 @@
|
||||
}
|
||||
|
||||
public void func_71059_n(Entity p_71059_1_) {
|
||||
|
@ -258,7 +267,7 @@
|
|||
if (p_71059_1_.func_70075_an()) {
|
||||
if (!p_71059_1_.func_85031_j(this)) {
|
||||
float f = (float)this.func_110148_a(SharedMonsterAttributes.field_111264_e).func_111126_e();
|
||||
@@ -994,8 +1058,11 @@
|
||||
@@ -994,8 +1060,11 @@
|
||||
|
||||
boolean flag2 = flag && this.field_70143_R > 0.0F && !this.field_70122_E && !this.func_70617_f_() && !this.func_70090_H() && !this.func_70644_a(MobEffects.field_76440_q) && !this.func_184218_aH() && p_71059_1_ instanceof EntityLivingBase;
|
||||
flag2 = flag2 && !this.func_70051_ag();
|
||||
|
@ -271,7 +280,7 @@
|
|||
}
|
||||
|
||||
f = f + f1;
|
||||
@@ -1091,8 +1158,10 @@
|
||||
@@ -1091,8 +1160,10 @@
|
||||
}
|
||||
|
||||
if (!itemstack1.func_190926_b() && entity instanceof EntityLivingBase) {
|
||||
|
@ -282,7 +291,7 @@
|
|||
this.func_184611_a(EnumHand.MAIN_HAND, ItemStack.field_190927_a);
|
||||
}
|
||||
}
|
||||
@@ -1134,7 +1203,7 @@
|
||||
@@ -1134,7 +1205,7 @@
|
||||
}
|
||||
|
||||
if (this.field_70146_Z.nextFloat() < f) {
|
||||
|
@ -291,7 +300,7 @@
|
|||
this.func_184602_cy();
|
||||
this.field_70170_p.func_72960_a(this, (byte)30);
|
||||
}
|
||||
@@ -1182,7 +1251,12 @@
|
||||
@@ -1182,7 +1253,12 @@
|
||||
}
|
||||
|
||||
public EntityPlayer.SleepResult func_180469_a(BlockPos p_180469_1_) {
|
||||
|
@ -305,7 +314,7 @@
|
|||
if (!this.field_70170_p.field_72995_K) {
|
||||
if (this.func_70608_bn() || !this.func_70089_S()) {
|
||||
return EntityPlayer.SleepResult.OTHER_PROBLEM;
|
||||
@@ -1192,7 +1266,7 @@
|
||||
@@ -1192,7 +1268,7 @@
|
||||
return EntityPlayer.SleepResult.NOT_POSSIBLE_HERE;
|
||||
}
|
||||
|
||||
|
@ -314,7 +323,7 @@
|
|||
return EntityPlayer.SleepResult.NOT_POSSIBLE_NOW;
|
||||
}
|
||||
|
||||
@@ -1217,7 +1291,7 @@
|
||||
@@ -1217,7 +1293,7 @@
|
||||
this.func_192030_dh();
|
||||
this.func_175145_a(StatList.field_199092_j.func_199076_b(StatList.field_203284_n));
|
||||
this.func_70105_a(0.2F, 0.2F);
|
||||
|
@ -323,7 +332,7 @@
|
|||
float f1 = 0.5F + (float)enumfacing.func_82601_c() * 0.4F;
|
||||
float f = 0.5F + (float)enumfacing.func_82599_e() * 0.4F;
|
||||
this.func_175139_a(enumfacing);
|
||||
@@ -1242,6 +1316,8 @@
|
||||
@@ -1242,6 +1318,8 @@
|
||||
private boolean func_190774_a(BlockPos p_190774_1_, EnumFacing p_190774_2_) {
|
||||
if (Math.abs(this.field_70165_t - (double)p_190774_1_.func_177958_n()) <= 3.0D && Math.abs(this.field_70163_u - (double)p_190774_1_.func_177956_o()) <= 2.0D && Math.abs(this.field_70161_v - (double)p_190774_1_.func_177952_p()) <= 3.0D) {
|
||||
return true;
|
||||
|
@ -332,7 +341,7 @@
|
|||
} else {
|
||||
BlockPos blockpos = p_190774_1_.func_177972_a(p_190774_2_.func_176734_d());
|
||||
return Math.abs(this.field_70165_t - (double)blockpos.func_177958_n()) <= 3.0D && Math.abs(this.field_70163_u - (double)blockpos.func_177956_o()) <= 2.0D && Math.abs(this.field_70161_v - (double)blockpos.func_177952_p()) <= 3.0D;
|
||||
@@ -1254,16 +1330,19 @@
|
||||
@@ -1254,16 +1332,19 @@
|
||||
}
|
||||
|
||||
public void func_70999_a(boolean p_70999_1_, boolean p_70999_2_, boolean p_70999_3_) {
|
||||
|
@ -356,7 +365,7 @@
|
|||
}
|
||||
|
||||
this.field_71083_bS = false;
|
||||
@@ -1279,29 +1358,30 @@
|
||||
@@ -1279,29 +1360,30 @@
|
||||
}
|
||||
|
||||
private boolean func_175143_p() {
|
||||
|
@ -393,7 +402,7 @@
|
|||
switch(enumfacing) {
|
||||
case SOUTH:
|
||||
return 90.0F;
|
||||
@@ -1333,23 +1413,67 @@
|
||||
@@ -1333,23 +1415,67 @@
|
||||
public void func_146105_b(ITextComponent p_146105_1_, boolean p_146105_2_) {
|
||||
}
|
||||
|
||||
|
@ -470,7 +479,7 @@
|
|||
}
|
||||
|
||||
public void func_195066_a(ResourceLocation p_195066_1_) {
|
||||
@@ -1519,6 +1643,8 @@
|
||||
@@ -1519,6 +1645,8 @@
|
||||
}
|
||||
|
||||
super.func_180430_e(p_180430_1_, p_180430_2_);
|
||||
|
@ -479,7 +488,7 @@
|
|||
}
|
||||
}
|
||||
|
||||
@@ -1780,7 +1906,10 @@
|
||||
@@ -1780,7 +1908,10 @@
|
||||
}
|
||||
|
||||
public ITextComponent func_145748_c_() {
|
||||
|
@ -491,7 +500,7 @@
|
|||
return this.func_208016_c(itextcomponent);
|
||||
}
|
||||
|
||||
@@ -1800,7 +1929,7 @@
|
||||
@@ -1800,7 +1931,7 @@
|
||||
}
|
||||
|
||||
public float func_70047_e() {
|
||||
|
@ -500,7 +509,7 @@
|
|||
if (this.func_70608_bn()) {
|
||||
f = 0.2F;
|
||||
} else if (!this.func_203007_ba() && !this.func_184613_cA() && this.field_70131_O != 0.6F) {
|
||||
@@ -1967,6 +2096,30 @@
|
||||
@@ -1967,6 +2098,30 @@
|
||||
return this.field_71075_bZ.field_75098_d && this.func_184840_I() >= 2;
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,120 @@
|
|||
--- a/net/minecraft/entity/player/EntityPlayerMP.java
|
||||
+++ b/net/minecraft/entity/player/EntityPlayerMP.java
|
||||
@@ -418,6 +418,7 @@
|
||||
}
|
||||
|
||||
public void func_70645_a(DamageSource p_70645_1_) {
|
||||
+ if (net.minecraftforge.common.ForgeHooks.onLivingDeath(this, p_70645_1_)) return;
|
||||
boolean flag = this.field_70170_p.func_82736_K().func_82766_b("showDeathMessages");
|
||||
this.field_71135_a.func_147359_a(new SPacketCombatEvent(this.func_110142_aN(), SPacketCombatEvent.Event.ENTITY_DIED, flag));
|
||||
if (flag) {
|
||||
@@ -435,8 +436,10 @@
|
||||
|
||||
this.func_192030_dh();
|
||||
if (!this.field_70170_p.func_82736_K().func_82766_b("keepInventory") && !this.func_175149_v()) {
|
||||
+ this.captureDrops(new java.util.ArrayList<>());
|
||||
this.func_190776_cN();
|
||||
this.field_71071_by.func_70436_m();
|
||||
+ if (!field_70170_p.field_72995_K) net.minecraftforge.event.ForgeEventFactory.onPlayerDrops(this, p_70645_1_, captureDrops(null), field_70718_bc > 0);
|
||||
}
|
||||
|
||||
this.func_96123_co().func_197893_a(IScoreCriteria.field_96642_c, this.func_195047_I_(), Score::func_96648_a);
|
||||
@@ -521,7 +524,9 @@
|
||||
}
|
||||
|
||||
@Nullable
|
||||
- public Entity func_184204_a(int p_184204_1_) {
|
||||
+ @Override
|
||||
+ public Entity changeDimension(int p_184204_1_, net.minecraftforge.common.util.ITeleporter teleporter) {
|
||||
+ if (!net.minecraftforge.common.ForgeHooks.onTravelToDimension(this, p_184204_1_)) return null;
|
||||
this.field_184851_cj = true;
|
||||
if (this.field_71093_bK == 0 && p_184204_1_ == -1) {
|
||||
this.field_193110_cw = new Vec3d(this.field_70165_t, this.field_70163_u, this.field_70161_v);
|
||||
@@ -529,7 +534,7 @@
|
||||
this.field_193110_cw = null;
|
||||
}
|
||||
|
||||
- if (this.field_71093_bK == 1 && p_184204_1_ == 1) {
|
||||
+ if (this.field_71093_bK == 1 && p_184204_1_ == 1 && teleporter.isVanilla()) {
|
||||
this.field_70170_p.func_72900_e(this);
|
||||
if (!this.field_71136_j) {
|
||||
this.field_71136_j = true;
|
||||
@@ -543,7 +548,7 @@
|
||||
p_184204_1_ = 1;
|
||||
}
|
||||
|
||||
- this.field_71133_b.func_184103_al().func_187242_a(this, p_184204_1_);
|
||||
+ this.field_71133_b.func_184103_al().changePlayerDimension(this, p_184204_1_, teleporter);
|
||||
this.field_71135_a.func_147359_a(new SPacketEffect(1032, BlockPos.field_177992_a, 0, false));
|
||||
this.field_71144_ck = -1;
|
||||
this.field_71149_ch = -1.0F;
|
||||
@@ -645,7 +650,7 @@
|
||||
int k = MathHelper.func_76128_c(this.field_70161_v);
|
||||
BlockPos blockpos = new BlockPos(i, j, k);
|
||||
IBlockState iblockstate = this.field_70170_p.func_180495_p(blockpos);
|
||||
- if (iblockstate.func_196958_f()) {
|
||||
+ if (iblockstate.isAir(field_70170_p, blockpos)) {
|
||||
BlockPos blockpos1 = blockpos.func_177977_b();
|
||||
IBlockState iblockstate1 = this.field_70170_p.func_180495_p(blockpos1);
|
||||
Block block = iblockstate1.func_177230_c();
|
||||
@@ -676,6 +681,7 @@
|
||||
this.field_71070_bA = p_180468_1_.func_174876_a(this.field_71071_by, this);
|
||||
this.field_71070_bA.field_75152_c = this.field_71139_cq;
|
||||
this.field_71070_bA.func_75132_a(this);
|
||||
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.player.PlayerContainerEvent.Open(this, this.field_71070_bA));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -707,6 +713,7 @@
|
||||
|
||||
this.field_71070_bA.field_75152_c = this.field_71139_cq;
|
||||
this.field_71070_bA.func_75132_a(this);
|
||||
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.player.PlayerContainerEvent.Open(this, this.field_71070_bA));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -715,6 +722,7 @@
|
||||
this.field_71070_bA = new ContainerMerchant(this.field_71071_by, p_180472_1_, this.field_70170_p);
|
||||
this.field_71070_bA.field_75152_c = this.field_71139_cq;
|
||||
this.field_71070_bA.func_75132_a(this);
|
||||
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.player.PlayerContainerEvent.Open(this, this.field_71070_bA));
|
||||
IInventory iinventory = ((ContainerMerchant)this.field_71070_bA).func_75174_d();
|
||||
ITextComponent itextcomponent = p_180472_1_.func_145748_c_();
|
||||
this.field_71135_a.func_147359_a(new SPacketOpenWindow(this.field_71139_cq, "minecraft:villager", itextcomponent, iinventory.func_70302_i_()));
|
||||
@@ -738,6 +746,7 @@
|
||||
this.field_71070_bA = new ContainerHorseInventory(this.field_71071_by, p_184826_2_, p_184826_1_, this);
|
||||
this.field_71070_bA.field_75152_c = this.field_71139_cq;
|
||||
this.field_71070_bA.func_75132_a(this);
|
||||
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.player.PlayerContainerEvent.Open(this, this.field_71070_bA));
|
||||
}
|
||||
|
||||
public void func_184814_a(ItemStack p_184814_1_, EnumHand p_184814_2_) {
|
||||
@@ -800,6 +809,7 @@
|
||||
|
||||
public void func_71128_l() {
|
||||
this.field_71070_bA.func_75134_a(this);
|
||||
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.player.PlayerContainerEvent.Close(this, this.field_71070_bA));
|
||||
this.field_71070_bA = this.field_71069_bz;
|
||||
}
|
||||
|
||||
@@ -929,6 +939,20 @@
|
||||
this.field_193110_cw = p_193104_1_.field_193110_cw;
|
||||
this.func_192029_h(p_193104_1_.func_192023_dk());
|
||||
this.func_192031_i(p_193104_1_.func_192025_dl());
|
||||
+
|
||||
+ this.spawnPosMap = p_193104_1_.spawnPosMap;
|
||||
+ this.spawnForcedMap = p_193104_1_.spawnForcedMap;
|
||||
+ if(p_193104_1_.field_71093_bK != 0) {
|
||||
+ this.field_71077_c = p_193104_1_.field_71077_c;
|
||||
+ this.field_82248_d = p_193104_1_.field_82248_d;
|
||||
+ }
|
||||
+
|
||||
+ //Copy over a section of the Entity Data from the old player.
|
||||
+ //Allows mods to specify data that persists after players respawn.
|
||||
+ NBTTagCompound old = p_193104_1_.getEntityData();
|
||||
+ if (old.func_74764_b(PERSISTED_NBT_TAG))
|
||||
+ getEntityData().func_74782_a(PERSISTED_NBT_TAG, old.func_74781_a(PERSISTED_NBT_TAG));
|
||||
+ net.minecraftforge.event.ForgeEventFactory.onPlayerClone(this, p_193104_1_, !p_193104_2_);
|
||||
}
|
||||
|
||||
protected void func_70670_a(PotionEffect p_70670_1_) {
|
|
@ -393,14 +393,14 @@
|
|||
}
|
||||
|
||||
public void func_72939_s() {
|
||||
@@ -953,6 +1017,7 @@
|
||||
Entity entity = this.field_73007_j.get(i);
|
||||
@@ -954,6 +1018,7 @@
|
||||
|
||||
try {
|
||||
+ if (entity.canUpdate()) continue;
|
||||
++entity.field_70173_aa;
|
||||
+ if (entity.canUpdate())
|
||||
entity.func_70071_h_();
|
||||
} catch (Throwable throwable2) {
|
||||
CrashReport crashreport = CrashReport.func_85055_a(throwable2, "Ticking entity");
|
||||
@@ -964,6 +1029,10 @@
|
||||
entity.func_85029_a(crashreportcategory);
|
||||
}
|
||||
|
|
|
@ -1,463 +0,0 @@
|
|||
--- ../src-base/minecraft/net/minecraft/entity/Entity.java
|
||||
+++ ../src-work/minecraft/net/minecraft/entity/Entity.java
|
||||
@@ -85,7 +85,7 @@
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
-public abstract class Entity implements ICommandSender
|
||||
+public abstract class Entity implements ICommandSender, net.minecraftforge.common.capabilities.ICapabilitySerializable<NBTTagCompound>
|
||||
{
|
||||
private static final Logger field_184243_a = LogManager.getLogger();
|
||||
private static final List<ItemStack> field_190535_b = Collections.<ItemStack>emptyList();
|
||||
@@ -200,7 +204,7 @@
|
||||
|
||||
if (p_i1582_1_ != null)
|
||||
{
|
||||
- this.field_71093_bK = p_i1582_1_.field_73011_w.func_186058_p().func_186068_a();
|
||||
+ this.field_71093_bK = p_i1582_1_.field_73011_w.getDimension();
|
||||
}
|
||||
|
||||
this.field_70180_af = new EntityDataManager(this);
|
||||
@@ -211,8 +215,16 @@
|
||||
this.field_70180_af.func_187214_a(field_184234_aB, Boolean.valueOf(false));
|
||||
this.field_70180_af.func_187214_a(field_189655_aD, Boolean.valueOf(false));
|
||||
this.func_70088_a();
|
||||
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.EntityEvent.EntityConstructing(this));
|
||||
+ capabilities = net.minecraftforge.event.ForgeEventFactory.gatherCapabilities(this);
|
||||
}
|
||||
|
||||
+ /** Forge: Used to store custom data for each entity. */
|
||||
+ private NBTTagCompound customEntityData;
|
||||
+ public boolean captureDrops = false;
|
||||
+ public java.util.ArrayList<EntityItem> capturedDrops = new java.util.ArrayList<EntityItem>();
|
||||
+ private net.minecraftforge.common.capabilities.CapabilityDispatcher capabilities;
|
||||
+
|
||||
public int func_145782_y()
|
||||
{
|
||||
return this.field_145783_c;
|
||||
@@ -344,6 +356,7 @@
|
||||
this.field_70165_t = p_70107_1_;
|
||||
this.field_70163_u = p_70107_3_;
|
||||
this.field_70161_v = p_70107_5_;
|
||||
+ if (this.isAddedToWorld() && !this.field_70170_p.field_72995_K) this.field_70170_p.func_72866_a(this, false); // Forge - Process chunk registration after moving.
|
||||
float f = this.field_70130_N / 2.0F;
|
||||
float f1 = this.field_70131_O;
|
||||
this.func_174826_a(new AxisAlignedBB(p_70107_1_ - (double)f, p_70107_3_, p_70107_5_ - (double)f, p_70107_1_ + (double)f, p_70107_3_ + (double)f1, p_70107_5_ + (double)f));
|
||||
@@ -995,6 +1008,7 @@
|
||||
this.field_70165_t = (axisalignedbb.field_72340_a + axisalignedbb.field_72336_d) / 2.0D;
|
||||
this.field_70163_u = axisalignedbb.field_72338_b;
|
||||
this.field_70161_v = (axisalignedbb.field_72339_c + axisalignedbb.field_72334_f) / 2.0D;
|
||||
+ if (this.isAddedToWorld() && !this.field_70170_p.field_72995_K) this.field_70170_p.func_72866_a(this, false); // Forge - Process chunk registration after moving.
|
||||
}
|
||||
|
||||
protected SoundEvent func_184184_Z()
|
||||
@@ -1053,7 +1067,7 @@
|
||||
|
||||
protected void func_180429_a(BlockPos p_180429_1_, Block p_180429_2_)
|
||||
{
|
||||
- SoundType soundtype = p_180429_2_.func_185467_w();
|
||||
+ SoundType soundtype = p_180429_2_.getSoundType(field_70170_p.func_180495_p(p_180429_1_), field_70170_p, p_180429_1_, this);
|
||||
|
||||
if (this.field_70170_p.func_180495_p(p_180429_1_.func_177984_a()).func_177230_c() == Blocks.field_150431_aC)
|
||||
{
|
||||
@@ -1259,6 +1273,7 @@
|
||||
BlockPos blockpos = new BlockPos(i, j, k);
|
||||
IBlockState iblockstate = this.field_70170_p.func_180495_p(blockpos);
|
||||
|
||||
+ if(!iblockstate.func_177230_c().addRunningEffects(iblockstate, field_70170_p, blockpos, this))
|
||||
if (iblockstate.func_185901_i() != EnumBlockRenderType.INVISIBLE)
|
||||
{
|
||||
this.field_70170_p.func_175688_a(EnumParticleTypes.BLOCK_CRACK, this.field_70165_t + ((double)this.field_70146_Z.nextFloat() - 0.5D) * (double)this.field_70130_N, this.func_174813_aQ().field_72338_b + 0.1D, this.field_70161_v + ((double)this.field_70146_Z.nextFloat() - 0.5D) * (double)this.field_70130_N, -this.field_70159_w * 4.0D, 1.5D, -this.field_70179_y * 4.0D, Block.func_176210_f(iblockstate));
|
||||
@@ -1277,12 +1292,12 @@
|
||||
BlockPos blockpos = new BlockPos(this.field_70165_t, d0, this.field_70161_v);
|
||||
IBlockState iblockstate = this.field_70170_p.func_180495_p(blockpos);
|
||||
|
||||
+ Boolean result = iblockstate.func_177230_c().isEntityInsideMaterial(this.field_70170_p, blockpos, iblockstate, this, d0, p_70055_1_, true);
|
||||
+ if (result != null) return result;
|
||||
+
|
||||
if (iblockstate.func_185904_a() == p_70055_1_)
|
||||
{
|
||||
- float f = BlockLiquid.func_149801_b(iblockstate.func_177230_c().func_176201_c(iblockstate)) - 0.11111111F;
|
||||
- float f1 = (float)(blockpos.func_177956_o() + 1) - f;
|
||||
- boolean flag = d0 < (double)f1;
|
||||
- return !flag && this instanceof EntityPlayer ? false : flag;
|
||||
+ return net.minecraftforge.common.ForgeHooks.isInsideOfMaterial(p_70055_1_, this, blockpos);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1382,6 +1397,7 @@
|
||||
this.field_70126_B -= 360.0F;
|
||||
}
|
||||
|
||||
+ if (!this.field_70170_p.field_72995_K) this.field_70170_p.func_72964_e((int) Math.floor(this.field_70165_t) >> 4, (int) Math.floor(this.field_70161_v) >> 4); // Forge - ensure target chunk is loaded.
|
||||
this.func_70107_b(this.field_70165_t, this.field_70163_u, this.field_70161_v);
|
||||
this.func_70101_b(p_70080_7_, p_70080_8_);
|
||||
}
|
||||
@@ -1707,6 +1723,7 @@
|
||||
{
|
||||
p_189511_1_.func_74757_a("Glowing", this.field_184238_ar);
|
||||
}
|
||||
+ p_189511_1_.func_74757_a("UpdateBlocked", updateBlocked);
|
||||
|
||||
if (!this.field_184236_aF.isEmpty())
|
||||
{
|
||||
@@ -1720,6 +1737,9 @@
|
||||
p_189511_1_.func_74782_a("Tags", nbttaglist);
|
||||
}
|
||||
|
||||
+ if (customEntityData != null) p_189511_1_.func_74782_a("ForgeData", customEntityData);
|
||||
+ if (this.capabilities != null) p_189511_1_.func_74782_a("ForgeCaps", this.capabilities.serializeNBT());
|
||||
+
|
||||
this.func_70014_b(p_189511_1_);
|
||||
|
||||
if (this.func_184207_aI())
|
||||
@@ -1826,7 +1846,11 @@
|
||||
this.func_174810_b(p_70020_1_.func_74767_n("Silent"));
|
||||
this.func_189654_d(p_70020_1_.func_74767_n("NoGravity"));
|
||||
this.func_184195_f(p_70020_1_.func_74767_n("Glowing"));
|
||||
+ updateBlocked = p_70020_1_.func_74767_n("UpdateBlocked");
|
||||
|
||||
+ if (p_70020_1_.func_74764_b("ForgeData")) customEntityData = p_70020_1_.func_74775_l("ForgeData");
|
||||
+ if (this.capabilities != null && p_70020_1_.func_74764_b("ForgeCaps")) this.capabilities.deserializeNBT(p_70020_1_.func_74775_l("ForgeCaps"));
|
||||
+
|
||||
if (p_70020_1_.func_150297_b("Tags", 9))
|
||||
{
|
||||
this.field_184236_aF.clear();
|
||||
@@ -1918,7 +1942,10 @@
|
||||
{
|
||||
EntityItem entityitem = new EntityItem(this.field_70170_p, this.field_70165_t, this.field_70163_u + (double)p_70099_2_, this.field_70161_v, p_70099_1_);
|
||||
entityitem.func_174869_p();
|
||||
- this.field_70170_p.func_72838_d(entityitem);
|
||||
+ if (captureDrops)
|
||||
+ this.capturedDrops.add(entityitem);
|
||||
+ else
|
||||
+ this.field_70170_p.func_72838_d(entityitem);
|
||||
return entityitem;
|
||||
}
|
||||
}
|
||||
@@ -1985,6 +2012,7 @@
|
||||
this.field_70159_w = 0.0D;
|
||||
this.field_70181_x = 0.0D;
|
||||
this.field_70179_y = 0.0D;
|
||||
+ if(!updateBlocked)
|
||||
this.func_70071_h_();
|
||||
|
||||
if (this.func_184218_aH())
|
||||
@@ -2032,6 +2060,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
+ if (!net.minecraftforge.event.ForgeEventFactory.canMountEntity(this, p_184205_1_, true)) return false;
|
||||
if (p_184205_2_ || this.func_184228_n(p_184205_1_) && p_184205_1_.func_184219_q(this))
|
||||
{
|
||||
if (this.func_184218_aH())
|
||||
@@ -2067,6 +2096,7 @@
|
||||
if (this.field_184239_as != null)
|
||||
{
|
||||
Entity entity = this.field_184239_as;
|
||||
+ if (!net.minecraftforge.event.ForgeEventFactory.canMountEntity(this, entity, false)) return;
|
||||
this.field_184239_as = null;
|
||||
entity.func_184225_p(this);
|
||||
}
|
||||
@@ -2509,8 +2539,16 @@
|
||||
@Nullable
|
||||
public Entity func_184204_a(int p_184204_1_)
|
||||
{
|
||||
+ if (this.field_70170_p.field_72995_K || this.field_70128_L) return null;
|
||||
+ return changeDimension(p_184204_1_, this.func_184102_h().func_71218_a(p_184204_1_).func_85176_s());
|
||||
+ }
|
||||
+
|
||||
+ @Nullable // Forge: Entities that require custom handling should override this method, not the other
|
||||
+ public Entity changeDimension(int p_184204_1_, net.minecraftforge.common.util.ITeleporter teleporter)
|
||||
+ {
|
||||
if (!this.field_70170_p.field_72995_K && !this.field_70128_L)
|
||||
{
|
||||
+ if (!net.minecraftforge.common.ForgeHooks.onTravelToDimension(this, p_184204_1_)) return null;
|
||||
this.field_70170_p.field_72984_F.func_76320_a("changeDimension");
|
||||
MinecraftServer minecraftserver = this.func_184102_h();
|
||||
int i = this.field_71093_bK;
|
||||
@@ -2518,7 +2556,7 @@
|
||||
WorldServer worldserver1 = minecraftserver.func_71218_a(p_184204_1_);
|
||||
this.field_71093_bK = p_184204_1_;
|
||||
|
||||
- if (i == 1 && p_184204_1_ == 1)
|
||||
+ if (i == 1 && p_184204_1_ == 1 && teleporter.isVanilla())
|
||||
{
|
||||
worldserver1 = minecraftserver.func_71218_a(0);
|
||||
this.field_71093_bK = 0;
|
||||
@@ -2529,22 +2567,23 @@
|
||||
this.field_70170_p.field_72984_F.func_76320_a("reposition");
|
||||
BlockPos blockpos;
|
||||
|
||||
- if (p_184204_1_ == 1)
|
||||
+ if (p_184204_1_ == 1 && teleporter.isVanilla())
|
||||
{
|
||||
blockpos = worldserver1.func_180504_m();
|
||||
}
|
||||
else
|
||||
{
|
||||
- double d0 = this.field_70165_t;
|
||||
- double d1 = this.field_70161_v;
|
||||
+ double moveFactor = worldserver.field_73011_w.getMovementFactor() / worldserver1.field_73011_w.getMovementFactor();
|
||||
+ double d0 = MathHelper.func_151237_a(this.field_70165_t * moveFactor, worldserver1.func_175723_af().func_177726_b() + 16.0D, worldserver1.func_175723_af().func_177728_d() - 16.0D);
|
||||
+ double d1 = MathHelper.func_151237_a(this.field_70161_v * moveFactor, worldserver1.func_175723_af().func_177736_c() + 16.0D, worldserver1.func_175723_af().func_177733_e() - 16.0D);
|
||||
double d2 = 8.0D;
|
||||
|
||||
- if (p_184204_1_ == -1)
|
||||
+ if (false && p_184204_1_ == -1)
|
||||
{
|
||||
d0 = MathHelper.func_151237_a(d0 / 8.0D, worldserver1.func_175723_af().func_177726_b() + 16.0D, worldserver1.func_175723_af().func_177728_d() - 16.0D);
|
||||
d1 = MathHelper.func_151237_a(d1 / 8.0D, worldserver1.func_175723_af().func_177736_c() + 16.0D, worldserver1.func_175723_af().func_177733_e() - 16.0D);
|
||||
}
|
||||
- else if (p_184204_1_ == 0)
|
||||
+ else if (false && p_184204_1_ == 0)
|
||||
{
|
||||
d0 = MathHelper.func_151237_a(d0 * 8.0D, worldserver1.func_175723_af().func_177726_b() + 16.0D, worldserver1.func_175723_af().func_177728_d() - 16.0D);
|
||||
d1 = MathHelper.func_151237_a(d1 * 8.0D, worldserver1.func_175723_af().func_177736_c() + 16.0D, worldserver1.func_175723_af().func_177733_e() - 16.0D);
|
||||
@@ -2554,8 +2593,7 @@
|
||||
d1 = (double)MathHelper.func_76125_a((int)d1, -29999872, 29999872);
|
||||
float f = this.field_70177_z;
|
||||
this.func_70012_b(d0, this.field_70163_u, d1, 90.0F, 0.0F);
|
||||
- Teleporter teleporter = worldserver1.func_85176_s();
|
||||
- teleporter.func_180620_b(this, f);
|
||||
+ teleporter.placeEntity(worldserver1, this, f);
|
||||
blockpos = new BlockPos(this);
|
||||
}
|
||||
|
||||
@@ -2567,7 +2605,7 @@
|
||||
{
|
||||
entity.func_180432_n(this);
|
||||
|
||||
- if (i == 1 && p_184204_1_ == 1)
|
||||
+ if (i == 1 && p_184204_1_ == 1 && teleporter.isVanilla())
|
||||
{
|
||||
BlockPos blockpos1 = worldserver1.func_175672_r(worldserver1.func_175694_M());
|
||||
entity.func_174828_a(blockpos1, entity.field_70177_z, entity.field_70125_A);
|
||||
@@ -2604,7 +2642,7 @@
|
||||
|
||||
public float func_180428_a(Explosion p_180428_1_, World p_180428_2_, BlockPos p_180428_3_, IBlockState p_180428_4_)
|
||||
{
|
||||
- return p_180428_4_.func_177230_c().func_149638_a(this);
|
||||
+ return p_180428_4_.func_177230_c().getExplosionResistance(p_180428_2_, p_180428_3_, this, p_180428_1_);
|
||||
}
|
||||
|
||||
public boolean func_174816_a(Explosion p_174816_1_, World p_174816_2_, BlockPos p_174816_3_, IBlockState p_174816_4_, float p_174816_5_)
|
||||
@@ -2901,6 +2939,218 @@
|
||||
EnchantmentHelper.func_151385_b(p_174815_1_, p_174815_2_);
|
||||
}
|
||||
|
||||
+ /* ================================== Forge Start =====================================*/
|
||||
+ /**
|
||||
+ * Internal use for keeping track of entities that are tracked by a world, to
|
||||
+ * allow guarantees that entity position changes will force a chunk load, avoiding
|
||||
+ * potential issues with entity desyncing and bad chunk data.
|
||||
+ */
|
||||
+ private boolean isAddedToWorld;
|
||||
+
|
||||
+ /**
|
||||
+ * Gets whether this entity has been added to a world (for tracking). Specifically
|
||||
+ * between the times when an entity is added to a world and the entity being removed
|
||||
+ * from the world's tracked lists. See {@link World#onEntityAdded(Entity)} and
|
||||
+ * {@link World#onEntityRemoved(Entity)}.
|
||||
+ *
|
||||
+ * @return True if this entity is being tracked by a world
|
||||
+ */
|
||||
+ public final boolean isAddedToWorld() { return this.isAddedToWorld; }
|
||||
+
|
||||
+ /**
|
||||
+ * Called after the entity has been added to the world's
|
||||
+ * ticking list. Can be overriden, but needs to call super
|
||||
+ * to prevent MC-136995.
|
||||
+ */
|
||||
+ public void onAddedToWorld() {
|
||||
+ this.isAddedToWorld = true;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Called after the entity has been removed to the world's
|
||||
+ * ticking list. Can be overriden, but needs to call super
|
||||
+ * to prevent MC-136995.
|
||||
+ */
|
||||
+ public void onRemovedFromWorld() {
|
||||
+ this.isAddedToWorld = false;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Returns a NBTTagCompound that can be used to store custom data for this entity.
|
||||
+ * It will be written, and read from disc, so it persists over world saves.
|
||||
+ * @return A NBTTagCompound
|
||||
+ */
|
||||
+ public NBTTagCompound getEntityData()
|
||||
+ {
|
||||
+ if (customEntityData == null)
|
||||
+ {
|
||||
+ customEntityData = new NBTTagCompound();
|
||||
+ }
|
||||
+ return customEntityData;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Used in model rendering to determine if the entity riding this entity should be in the 'sitting' position.
|
||||
+ * @return false to prevent an entity that is mounted to this entity from displaying the 'sitting' animation.
|
||||
+ */
|
||||
+ public boolean shouldRiderSit()
|
||||
+ {
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Called when a user uses the creative pick block button on this entity.
|
||||
+ *
|
||||
+ * @param target The full target the player is looking at
|
||||
+ * @return A ItemStack to add to the player's inventory, empty ItemStack if nothing should be added.
|
||||
+ */
|
||||
+ public ItemStack getPickedResult(RayTraceResult target)
|
||||
+ {
|
||||
+ if (this instanceof net.minecraft.entity.item.EntityPainting)
|
||||
+ {
|
||||
+ return new ItemStack(net.minecraft.init.Items.field_151159_an);
|
||||
+ }
|
||||
+ else if (this instanceof EntityLeashKnot)
|
||||
+ {
|
||||
+ return new ItemStack(net.minecraft.init.Items.field_151058_ca);
|
||||
+ }
|
||||
+ else if (this instanceof net.minecraft.entity.item.EntityItemFrame)
|
||||
+ {
|
||||
+ ItemStack held = ((net.minecraft.entity.item.EntityItemFrame)this).func_82335_i();
|
||||
+ if (held.func_190926_b())
|
||||
+ {
|
||||
+ return new ItemStack(net.minecraft.init.Items.field_151160_bD);
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ return held.func_77946_l();
|
||||
+ }
|
||||
+ }
|
||||
+ else if (this instanceof net.minecraft.entity.item.EntityMinecart)
|
||||
+ {
|
||||
+ return ((net.minecraft.entity.item.EntityMinecart)this).getCartItem();
|
||||
+ }
|
||||
+ else if (this instanceof net.minecraft.entity.item.EntityBoat)
|
||||
+ {
|
||||
+ return new ItemStack(((EntityBoat)this).func_184455_j());
|
||||
+ }
|
||||
+ else if (this instanceof net.minecraft.entity.item.EntityArmorStand)
|
||||
+ {
|
||||
+ return new ItemStack(net.minecraft.init.Items.field_179565_cj);
|
||||
+ }
|
||||
+ else if (this instanceof net.minecraft.entity.item.EntityEnderCrystal)
|
||||
+ {
|
||||
+ return new ItemStack(net.minecraft.init.Items.field_185158_cP);
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ ResourceLocation name = EntityList.func_191301_a(this);
|
||||
+ if (name != null && EntityList.field_75627_a.containsKey(name))
|
||||
+ {
|
||||
+ ItemStack stack = new ItemStack(net.minecraft.init.Items.field_151063_bx);
|
||||
+ net.minecraft.item.ItemMonsterPlacer.func_185078_a(stack, name);
|
||||
+ return stack;
|
||||
+ }
|
||||
+ }
|
||||
+ return ItemStack.field_190927_a;
|
||||
+ }
|
||||
+
|
||||
+ public UUID getPersistentID()
|
||||
+ {
|
||||
+ return field_96093_i;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Reset the entity ID to a new value. Not to be used from Mod code
|
||||
+ */
|
||||
+ @Deprecated // TODO: remove (1.13?)
|
||||
+ public final void resetEntityId()
|
||||
+ {
|
||||
+ this.field_145783_c = field_70152_a++;
|
||||
+ }
|
||||
+
|
||||
+ public boolean shouldRenderInPass(int pass)
|
||||
+ {
|
||||
+ return pass == 0;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Returns true if the entity is of the @link{EnumCreatureType} provided
|
||||
+ * @param type The EnumCreatureType type this entity is evaluating
|
||||
+ * @param forSpawnCount If this is being invoked to check spawn count caps.
|
||||
+ * @return If the creature is of the type provided
|
||||
+ */
|
||||
+ public boolean isCreatureType(EnumCreatureType type, boolean forSpawnCount)
|
||||
+ {
|
||||
+ if (forSpawnCount && (this instanceof EntityLiving) && ((EntityLiving)this).func_104002_bU()) return false;
|
||||
+ return type.func_75598_a().isAssignableFrom(this.getClass());
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * If a rider of this entity can interact with this entity. Should return true on the
|
||||
+ * ridden entity if so.
|
||||
+ *
|
||||
+ * @return if the entity can be interacted with from a rider
|
||||
+ */
|
||||
+ public boolean canRiderInteract()
|
||||
+ {
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * If the rider should be dismounted from the entity when the entity goes under water
|
||||
+ *
|
||||
+ * @param rider The entity that is riding
|
||||
+ * @return if the entity should be dismounted when under water
|
||||
+ */
|
||||
+ public boolean shouldDismountInWater(Entity rider)
|
||||
+ {
|
||||
+ return this instanceof EntityLivingBase;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public boolean hasCapability(net.minecraftforge.common.capabilities.Capability<?> capability, @Nullable net.minecraft.util.EnumFacing facing)
|
||||
+ {
|
||||
+ return capabilities != null && capabilities.hasCapability(capability, facing);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ @Nullable
|
||||
+ public <T> T getCapability(net.minecraftforge.common.capabilities.Capability<T> capability, @Nullable net.minecraft.util.EnumFacing facing)
|
||||
+ {
|
||||
+ return capabilities == null ? null : capabilities.getCapability(capability, facing);
|
||||
+ }
|
||||
+
|
||||
+ public void deserializeNBT(NBTTagCompound nbt)
|
||||
+ {
|
||||
+ this.func_70020_e(nbt);
|
||||
+ }
|
||||
+
|
||||
+ public NBTTagCompound serializeNBT()
|
||||
+ {
|
||||
+ NBTTagCompound ret = new NBTTagCompound();
|
||||
+ ret.func_74778_a("id", this.func_70022_Q());
|
||||
+ return this.func_189511_e(ret);
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Checks if this {@link Entity} can trample a {@link Block}.
|
||||
+ *
|
||||
+ * @param world The world in which the block will be trampled
|
||||
+ * @param block The block being tested
|
||||
+ * @param pos The block pos
|
||||
+ * @param fallDistance The fall distance
|
||||
+ * @return {@code true} if this entity can trample, {@code false} otherwise
|
||||
+ */
|
||||
+ public boolean canTrample(World world, Block block, BlockPos pos, float fallDistance)
|
||||
+ {
|
||||
+ return world.field_73012_v.nextFloat() < fallDistance - 0.5F
|
||||
+ && this instanceof EntityLivingBase
|
||||
+ && (this instanceof EntityPlayer || net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(world, this))
|
||||
+ && this.field_70130_N * this.field_70130_N * this.field_70131_O > 0.512F;
|
||||
+ }
|
||||
+ /* ================================== Forge End =====================================*/
|
||||
+
|
||||
public void func_184178_b(EntityPlayerMP p_184178_1_)
|
||||
{
|
||||
}
|
|
@ -1,99 +0,0 @@
|
|||
--- ../src-base/minecraft/net/minecraft/entity/player/EntityPlayer.java
|
||||
+++ ../src-work/minecraft/net/minecraft/entity/player/EntityPlayer.java
|
||||
@@ -180,6 +187,7 @@
|
||||
|
||||
public void func_70071_h_()
|
||||
{
|
||||
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().onPlayerPreTick(this);
|
||||
this.field_70145_X = this.func_175149_v();
|
||||
|
||||
if (this.func_175149_v())
|
||||
@@ -367,6 +375,7 @@
|
||||
this.func_70105_a(f, f1);
|
||||
}
|
||||
}
|
||||
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().onPlayerPostTick(this);
|
||||
}
|
||||
|
||||
public int func_82145_z()
|
||||
@@ -896,6 +943,7 @@
|
||||
p_70014_1_.func_74768_a("XpTotal", this.field_71067_cb);
|
||||
p_70014_1_.func_74768_a("XpSeed", this.field_175152_f);
|
||||
p_70014_1_.func_74768_a("Score", this.func_71037_bA());
|
||||
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().getDataFixer().writeVersionData(p_70014_1_); //Moved down so it doesn't keep missing every MC update.
|
||||
|
||||
if (this.field_71077_c != null)
|
||||
{
|
||||
@@ -2421,6 +2534,168 @@
|
||||
return this.field_71075_bZ.field_75098_d && this.func_70003_b(2, "");
|
||||
}
|
||||
|
||||
+ /**
|
||||
+ * Opens a GUI with this player, uses FML's IGuiHandler system.
|
||||
+ * Allows for extension by modders.
|
||||
+ *
|
||||
+ * @param mod The mod trying to open a GUI
|
||||
+ * @param modGuiId GUI ID
|
||||
+ * @param world Current World
|
||||
+ * @param x Passed directly to IGuiHandler, data meaningless Typically world X position
|
||||
+ * @param y Passed directly to IGuiHandler, data meaningless Typically world Y position
|
||||
+ * @param z Passed directly to IGuiHandler, data meaningless Typically world Z position
|
||||
+ */
|
||||
+ public void openGui(Object mod, int modGuiId, World world, int x, int y, int z)
|
||||
+ {
|
||||
+ net.minecraftforge.fml.common.network.internal.FMLNetworkHandler.openGui(this, mod, modGuiId, world, x, y, z);
|
||||
+ }
|
||||
+ private String displayname;
|
||||
+
|
||||
+ /**
|
||||
+ * Get the currently computed display name, cached for efficiency.
|
||||
+ * @return the current display name
|
||||
+ */
|
||||
+ public String getDisplayNameString()
|
||||
+ {
|
||||
+ if(this.displayname == null)
|
||||
+ {
|
||||
+ this.displayname = net.minecraftforge.event.ForgeEventFactory.getPlayerDisplayName(this, this.func_70005_c_());
|
||||
+ }
|
||||
+ return this.displayname;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Force the displayed name to refresh
|
||||
+ */
|
||||
+ public void refreshDisplayName()
|
||||
+ {
|
||||
+ this.displayname = net.minecraftforge.event.ForgeEventFactory.getPlayerDisplayName(this, this.func_70005_c_());
|
||||
+ }
|
||||
+
|
||||
+ private final net.minecraftforge.items.IItemHandler playerMainHandler = new net.minecraftforge.items.wrapper.PlayerMainInvWrapper(field_71071_by);
|
||||
+ private final net.minecraftforge.items.IItemHandler playerEquipmentHandler = new net.minecraftforge.items.wrapper.CombinedInvWrapper(
|
||||
+ new net.minecraftforge.items.wrapper.PlayerArmorInvWrapper(field_71071_by),
|
||||
+ new net.minecraftforge.items.wrapper.PlayerOffhandInvWrapper(field_71071_by));
|
||||
+ private final net.minecraftforge.items.IItemHandler playerJoinedHandler = new net.minecraftforge.items.wrapper.PlayerInvWrapper(field_71071_by);
|
||||
+
|
||||
+ @SuppressWarnings("unchecked")
|
||||
+ @Override
|
||||
+ @Nullable
|
||||
+ public <T> T getCapability(net.minecraftforge.common.capabilities.Capability<T> capability, @Nullable net.minecraft.util.EnumFacing facing)
|
||||
+ {
|
||||
+ if (capability == net.minecraftforge.items.CapabilityItemHandler.ITEM_HANDLER_CAPABILITY)
|
||||
+ {
|
||||
+ if (facing == null) return (T) playerJoinedHandler;
|
||||
+ else if (facing.func_176740_k().func_176720_b()) return (T) playerMainHandler;
|
||||
+ else if (facing.func_176740_k().func_176722_c()) return (T) playerEquipmentHandler;
|
||||
+ }
|
||||
+ return super.getCapability(capability, facing);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public boolean hasCapability(net.minecraftforge.common.capabilities.Capability<?> capability, @Nullable net.minecraft.util.EnumFacing facing)
|
||||
+ {
|
||||
+ return capability == net.minecraftforge.items.CapabilityItemHandler.ITEM_HANDLER_CAPABILITY || super.hasCapability(capability, facing);
|
||||
+ }
|
||||
+
|
||||
+ /* ======================================== FORGE END =====================================*/
|
||||
+
|
||||
public static enum EnumChatVisibility
|
||||
{
|
||||
FULL(0, "options.chat.visibility.full"),
|
|
@ -1,146 +0,0 @@
|
|||
--- ../src-base/minecraft/net/minecraft/entity/player/EntityPlayerMP.java
|
||||
+++ ../src-work/minecraft/net/minecraft/entity/player/EntityPlayerMP.java
|
||||
@@ -158,9 +158,9 @@
|
||||
super(p_i45285_2_, p_i45285_3_);
|
||||
p_i45285_4_.field_73090_b = this;
|
||||
this.field_71134_c = p_i45285_4_;
|
||||
- BlockPos blockpos = p_i45285_2_.func_175694_M();
|
||||
+ BlockPos blockpos = p_i45285_2_.field_73011_w.getRandomizedSpawnPoint();
|
||||
|
||||
- if (p_i45285_2_.field_73011_w.func_191066_m() && p_i45285_2_.func_72912_H().func_76077_q() != GameType.ADVENTURE)
|
||||
+ if (false && p_i45285_2_.field_73011_w.func_191066_m() && p_i45285_2_.func_72912_H().func_76077_q() != GameType.ADVENTURE)
|
||||
{
|
||||
int i = Math.max(0, p_i45285_1_.func_184108_a(p_i45285_2_));
|
||||
int j = MathHelper.func_76128_c(p_i45285_2_.func_175723_af().func_177729_b((double)blockpos.func_177958_n(), (double)blockpos.func_177952_p()));
|
||||
@@ -323,7 +323,7 @@
|
||||
|
||||
this.field_71070_bA.func_75142_b();
|
||||
|
||||
- if (!this.field_70170_p.field_72995_K && !this.field_71070_bA.func_75145_c(this))
|
||||
+ if (!this.field_70170_p.field_72995_K && this.field_71070_bA != null && !this.field_71070_bA.func_75145_c(this))
|
||||
{
|
||||
this.func_71053_j();
|
||||
this.field_71070_bA = this.field_71069_bz;
|
||||
@@ -471,6 +471,7 @@
|
||||
|
||||
public void func_70645_a(DamageSource p_70645_1_)
|
||||
{
|
||||
+ if (net.minecraftforge.common.ForgeHooks.onLivingDeath(this, p_70645_1_)) return;
|
||||
boolean flag = this.field_70170_p.func_82736_K().func_82766_b("showDeathMessages");
|
||||
this.field_71135_a.func_147359_a(new SPacketCombatEvent(this.func_110142_aN(), SPacketCombatEvent.Event.ENTITY_DIED, flag));
|
||||
|
||||
@@ -499,8 +500,20 @@
|
||||
|
||||
if (!this.field_70170_p.func_82736_K().func_82766_b("keepInventory") && !this.func_175149_v())
|
||||
{
|
||||
+ captureDrops = true;
|
||||
+ capturedDrops.clear();
|
||||
this.func_190776_cN();
|
||||
this.field_71071_by.func_70436_m();
|
||||
+
|
||||
+ captureDrops = false;
|
||||
+ net.minecraftforge.event.entity.player.PlayerDropsEvent event = new net.minecraftforge.event.entity.player.PlayerDropsEvent(this, p_70645_1_, capturedDrops, field_70718_bc > 0);
|
||||
+ if (!net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(event))
|
||||
+ {
|
||||
+ for (net.minecraft.entity.item.EntityItem item : capturedDrops)
|
||||
+ {
|
||||
+ this.field_70170_p.func_72838_d(item);
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
|
||||
for (ScoreObjective scoreobjective : this.field_70170_p.func_96441_U().func_96520_a(IScoreCriteria.field_96642_c))
|
||||
@@ -645,8 +658,9 @@
|
||||
}
|
||||
|
||||
@Nullable
|
||||
- public Entity func_184204_a(int p_184204_1_)
|
||||
+ public Entity changeDimension(int p_184204_1_, net.minecraftforge.common.util.ITeleporter teleporter)
|
||||
{
|
||||
+ if (!net.minecraftforge.common.ForgeHooks.onTravelToDimension(this, p_184204_1_)) return this;
|
||||
this.field_184851_cj = true;
|
||||
|
||||
if (this.field_71093_bK == 0 && p_184204_1_ == -1)
|
||||
@@ -658,7 +672,7 @@
|
||||
this.field_193110_cw = null;
|
||||
}
|
||||
|
||||
- if (this.field_71093_bK == 1 && p_184204_1_ == 1)
|
||||
+ if (this.field_71093_bK == 1 && p_184204_1_ == 1 && teleporter.isVanilla())
|
||||
{
|
||||
this.field_70170_p.func_72900_e(this);
|
||||
|
||||
@@ -678,7 +692,7 @@
|
||||
p_184204_1_ = 1;
|
||||
}
|
||||
|
||||
- this.field_71133_b.func_184103_al().func_187242_a(this, p_184204_1_);
|
||||
+ this.field_71133_b.func_184103_al().transferPlayerToDimension(this, p_184204_1_, teleporter);
|
||||
this.field_71135_a.func_147359_a(new SPacketEffect(1032, BlockPos.field_177992_a, 0, false));
|
||||
this.field_71144_ck = -1;
|
||||
this.field_71149_ch = -1.0F;
|
||||
@@ -808,7 +822,7 @@
|
||||
BlockPos blockpos = new BlockPos(i, j, k);
|
||||
IBlockState iblockstate = this.field_70170_p.func_180495_p(blockpos);
|
||||
|
||||
- if (iblockstate.func_185904_a() == Material.field_151579_a)
|
||||
+ if (iblockstate.func_177230_c().isAir(iblockstate, this.field_70170_p, blockpos))
|
||||
{
|
||||
BlockPos blockpos1 = blockpos.func_177977_b();
|
||||
IBlockState iblockstate1 = this.field_70170_p.func_180495_p(blockpos1);
|
||||
@@ -848,6 +862,7 @@
|
||||
this.field_71070_bA = p_180468_1_.func_174876_a(this.field_71071_by, this);
|
||||
this.field_71070_bA.field_75152_c = this.field_71139_cq;
|
||||
this.field_71070_bA.func_75132_a(this);
|
||||
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.player.PlayerContainerEvent.Open(this, this.field_71070_bA));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -891,6 +906,7 @@
|
||||
|
||||
this.field_71070_bA.field_75152_c = this.field_71139_cq;
|
||||
this.field_71070_bA.func_75132_a(this);
|
||||
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.player.PlayerContainerEvent.Open(this, this.field_71070_bA));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -900,6 +916,7 @@
|
||||
this.field_71070_bA = new ContainerMerchant(this.field_71071_by, p_180472_1_, this.field_70170_p);
|
||||
this.field_71070_bA.field_75152_c = this.field_71139_cq;
|
||||
this.field_71070_bA.func_75132_a(this);
|
||||
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.player.PlayerContainerEvent.Open(this, this.field_71070_bA));
|
||||
IInventory iinventory = ((ContainerMerchant)this.field_71070_bA).func_75174_d();
|
||||
ITextComponent itextcomponent = p_180472_1_.func_145748_c_();
|
||||
this.field_71135_a.func_147359_a(new SPacketOpenWindow(this.field_71139_cq, "minecraft:villager", itextcomponent, iinventory.func_70302_i_()));
|
||||
@@ -1003,6 +1020,7 @@
|
||||
public void func_71128_l()
|
||||
{
|
||||
this.field_71070_bA.func_75134_a(this);
|
||||
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.player.PlayerContainerEvent.Close(this, this.field_71070_bA));
|
||||
this.field_71070_bA = this.field_71069_bz;
|
||||
}
|
||||
|
||||
@@ -1144,6 +1162,23 @@
|
||||
this.field_193110_cw = p_193104_1_.field_193110_cw;
|
||||
this.func_192029_h(p_193104_1_.func_192023_dk());
|
||||
this.func_192031_i(p_193104_1_.func_192025_dl());
|
||||
+
|
||||
+ this.spawnChunkMap = p_193104_1_.spawnChunkMap;
|
||||
+ this.spawnForcedMap = p_193104_1_.spawnForcedMap;
|
||||
+ if(p_193104_1_.field_71093_bK != 0)
|
||||
+ {
|
||||
+ this.field_71077_c = p_193104_1_.field_71077_c;
|
||||
+ this.field_82248_d = p_193104_1_.field_82248_d;
|
||||
+ }
|
||||
+
|
||||
+ //Copy over a section of the Entity Data from the old player.
|
||||
+ //Allows mods to specify data that persists after players respawn.
|
||||
+ NBTTagCompound old = p_193104_1_.getEntityData();
|
||||
+ if (old.func_74764_b(PERSISTED_NBT_TAG))
|
||||
+ {
|
||||
+ getEntityData().func_74782_a(PERSISTED_NBT_TAG, old.func_74775_l(PERSISTED_NBT_TAG));
|
||||
+ }
|
||||
+ net.minecraftforge.event.ForgeEventFactory.onPlayerClone(this, p_193104_1_, !p_193104_2_);
|
||||
}
|
||||
|
||||
protected void func_70670_a(PotionEffect p_70670_1_)
|
|
@ -1,87 +0,0 @@
|
|||
--- ../src-base/minecraft/net/minecraft/tileentity/TileEntity.java
|
||||
+++ ../src-work/minecraft/net/minecraft/tileentity/TileEntity.java
|
||||
@@ -297,6 +305,204 @@
|
||||
{
|
||||
}
|
||||
+
|
||||
+ public boolean shouldRenderInPass(int pass)
|
||||
+ {
|
||||
+ return pass == 0;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Sometimes default render bounding box: infinite in scope. Used to control rendering on {@link TileEntitySpecialRenderer}.
|
||||
+ */
|
||||
+ public static final net.minecraft.util.math.AxisAlignedBB INFINITE_EXTENT_AABB = new net.minecraft.util.math.AxisAlignedBB(Double.NEGATIVE_INFINITY, Double.NEGATIVE_INFINITY, Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY);
|
||||
+ /**
|
||||
+ * Return an {@link AxisAlignedBB} that controls the visible scope of a {@link TileEntitySpecialRenderer} associated with this {@link TileEntity}
|
||||
+ * Defaults to the collision bounding box {@link Block#getCollisionBoundingBoxFromPool(World, int, int, int)} associated with the block
|
||||
+ * at this location.
|
||||
+ *
|
||||
+ * @return an appropriately size {@link AxisAlignedBB} for the {@link TileEntity}
|
||||
+ */
|
||||
+ @SideOnly(Side.CLIENT)
|
||||
+ public net.minecraft.util.math.AxisAlignedBB getRenderBoundingBox()
|
||||
+ {
|
||||
+ net.minecraft.util.math.AxisAlignedBB bb = INFINITE_EXTENT_AABB;
|
||||
+ Block type = func_145838_q();
|
||||
+ BlockPos pos = func_174877_v();
|
||||
+ if (type == Blocks.field_150381_bn)
|
||||
+ {
|
||||
+ bb = new net.minecraft.util.math.AxisAlignedBB(pos, pos.func_177982_a(1, 1, 1));
|
||||
+ }
|
||||
+ else if (type == Blocks.field_150486_ae || type == Blocks.field_150447_bR)
|
||||
+ {
|
||||
+ bb = new net.minecraft.util.math.AxisAlignedBB(pos.func_177982_a(-1, 0, -1), pos.func_177982_a(2, 2, 2));
|
||||
+ }
|
||||
+ else if (type == Blocks.field_185779_df)
|
||||
+ {
|
||||
+ bb = INFINITE_EXTENT_AABB;
|
||||
+ }
|
||||
+ else if (type != null && type != Blocks.field_150461_bJ)
|
||||
+ {
|
||||
+ net.minecraft.util.math.AxisAlignedBB cbb = null;
|
||||
+ try
|
||||
+ {
|
||||
+ cbb = field_145850_b.func_180495_p(func_174877_v()).func_185890_d(field_145850_b, pos).func_186670_a(pos);
|
||||
+ }
|
||||
+ catch (Exception e)
|
||||
+ {
|
||||
+ // We have to capture any exceptions that may occur here because BUKKIT servers like to send
|
||||
+ // the tile entity data BEFORE the chunk data, you know, the OPPOSITE of what vanilla does!
|
||||
+ // So we can not GARENTEE that the world state is the real state for the block...
|
||||
+ // So, once again in the long line of US having to accommodate BUKKIT breaking things,
|
||||
+ // here it is, assume that the TE is only 1 cubic block. Problem with this is that it may
|
||||
+ // cause the TileEntity renderer to error further down the line! But alas, nothing we can do.
|
||||
+ cbb = new net.minecraft.util.math.AxisAlignedBB(func_174877_v().func_177982_a(-1, 0, -1), func_174877_v().func_177982_a(1, 1, 1));
|
||||
+ }
|
||||
+ if (cbb != null) bb = cbb;
|
||||
+ }
|
||||
+ return bb;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Checks if this tile entity knows how to render its 'breaking' overlay effect.
|
||||
+ * If this returns true, The TileEntitySpecialRenderer will be called again with break progress set.
|
||||
+ * @return True to re-render tile with breaking effect.
|
||||
+ */
|
||||
+ public boolean canRenderBreaking()
|
||||
+ {
|
||||
+ Block block = this.func_145838_q();
|
||||
+ return (block instanceof net.minecraft.block.BlockChest ||
|
||||
+ block instanceof net.minecraft.block.BlockEnderChest ||
|
||||
+ block instanceof net.minecraft.block.BlockSign ||
|
||||
+ block instanceof net.minecraft.block.BlockSkull);
|
||||
+ }
|
||||
+ /**
|
||||
+ * If the TileEntitySpecialRenderer associated with this TileEntity can be batched in with another renderers, and won't access the GL state.
|
||||
+ * If TileEntity returns true, then TESR should have the same functionality as (and probably extend) the FastTESR class.
|
||||
+ */
|
||||
+ public boolean hasFastRenderer()
|
||||
+ {
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
static
|
||||
{
|
||||
func_190560_a("furnace", TileEntityFurnace.class);
|
|
@ -0,0 +1,15 @@
|
|||
--- ../src-base/minecraft/net/minecraft/entity/player/EntityPlayerMP.java
|
||||
+++ ../src-work/minecraft/net/minecraft/entity/player/EntityPlayerMP.java
|
||||
@@ -158,9 +158,9 @@
|
||||
super(p_i45285_2_, p_i45285_3_);
|
||||
p_i45285_4_.field_73090_b = this;
|
||||
this.field_71134_c = p_i45285_4_;
|
||||
- BlockPos blockpos = p_i45285_2_.func_175694_M();
|
||||
+ BlockPos blockpos = p_i45285_2_.field_73011_w.getRandomizedSpawnPoint();
|
||||
|
||||
- if (p_i45285_2_.field_73011_w.func_191066_m() && p_i45285_2_.func_72912_H().func_76077_q() != GameType.ADVENTURE)
|
||||
+ if (false && p_i45285_2_.field_73011_w.func_191066_m() && p_i45285_2_.func_72912_H().func_76077_q() != GameType.ADVENTURE)
|
||||
{
|
||||
int i = Math.max(0, p_i45285_1_.func_184108_a(p_i45285_2_));
|
||||
int j = MathHelper.func_76128_c(p_i45285_2_.func_175723_af().func_177729_b((double)blockpos.func_177958_n(), (double)blockpos.func_177952_p()));
|
||||
|
|
@ -75,6 +75,14 @@ public interface IForgeEntity extends ICapabilitySerializable<NBTTagCompound>
|
|||
Collection<EntityItem> captureDrops();
|
||||
Collection<EntityItem> captureDrops(@Nullable Collection<EntityItem> captureDrops);
|
||||
|
||||
|
||||
/**
|
||||
* Returns a NBTTagCompound that can be used to store custom data for this entity.
|
||||
* It will be written, and read from disc, so it persists over world saves.
|
||||
* @return A NBTTagCompound
|
||||
*/
|
||||
NBTTagCompound getEntityData();
|
||||
|
||||
/**
|
||||
* Used in model rendering to determine if the entity riding this entity should be in the 'sitting' position.
|
||||
* @return false to prevent an entity that is mounted to this entity from displaying the 'sitting' animation.
|
||||
|
@ -84,7 +92,6 @@ public interface IForgeEntity extends ICapabilitySerializable<NBTTagCompound>
|
|||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Called when a user uses the creative pick block button on this entity.
|
||||
*
|
||||
|
|
|
@ -8,7 +8,7 @@ net/minecraft/entity/Entity.changeDimension(ILnet/minecraftforge/common/util/ITe
|
|||
#net/minecraft/entity/item/EntityEnderPearl.changeDimension(ILnet/minecraftforge/common/util/ITeleporter;)Lnet/minecraft/entity/Entity;=|p_184204_1_,teleporter
|
||||
#net/minecraft/entity/item/EntityItem.changeDimension(ILnet/minecraftforge/common/util/ITeleporter;)Lnet/minecraft/entity/Entity;=|p_184204_1_,teleporter
|
||||
#net/minecraft/entity/item/EntityMinecartContainer.changeDimension(ILnet/minecraftforge/common/util/ITeleporter;)Lnet/minecraft/entity/Entity;=|p_184204_1_,teleporter
|
||||
#net/minecraft/entity/player/EntityPlayerMP.changeDimension(ILnet/minecraftforge/common/util/ITeleporter;)Lnet/minecraft/entity/Entity;=|p_184204_1_,teleporter
|
||||
net/minecraft/entity/player/EntityPlayerMP.changeDimension(ILnet/minecraftforge/common/util/ITeleporter;)Lnet/minecraft/entity/Entity;=|p_184204_1_,teleporter
|
||||
net/minecraft/entity/player/EntityPlayer.getDigSpeed(Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/util/math/BlockPos;)F=|p_184813_1_,pos
|
||||
net/minecraft/server/management/PlayerList.changePlayerDimension(Lnet/minecraft/entity/player/EntityPlayerMP;ILnet/minecraftforge/common/util/ITeleporter;)V=|p_187242_1_,p_187242_2_,teleporter
|
||||
net/minecraft/server/management/PlayerList.transferEntityToWorld(Lnet/minecraft/entity/Entity;ILnet/minecraft/world/WorldServer;Lnet/minecraft/world/WorldServer;Lnet/minecraftforge/common/util/ITeleporter;)V=|p_82448_1_,p_82448_2_,p_82448_3_,p_82448_4_,teleporter
|
||||
|
|
Loading…
Reference in New Issue