ForgePatch/patches_old/minecraft/net/minecraft/entity/EntityLiving.java.patch

89 lines
3.8 KiB
Diff

--- ../src-base/minecraft/net/minecraft/entity/EntityLiving.java
+++ ../src-work/minecraft/net/minecraft/entity/EntityLiving.java
@@ -170,6 +170,7 @@
public void func_70624_b(@Nullable EntityLivingBase p_70624_1_)
{
this.field_70696_bz = p_70624_1_;
+ net.minecraftforge.common.ForgeHooks.onLivingSetAttackTarget(this, p_70624_1_);
}
public boolean func_70686_a(Class <? extends EntityLivingBase > p_70686_1_)
@@ -576,7 +577,7 @@
super.func_70636_d();
this.field_70170_p.field_72984_F.func_76320_a("looting");
- if (!this.field_70170_p.field_72995_K && this.func_98052_bS() && !this.field_70729_aU && this.field_70170_p.func_82736_K().func_82766_b("mobGriefing"))
+ if (!this.field_70170_p.field_72995_K && this.func_98052_bS() && !this.field_70729_aU && net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.field_70170_p, this))
{
for (EntityItem entityitem : this.field_70170_p.func_72872_a(EntityItem.class, this.func_174813_aQ().func_72314_b(1.0D, 0.0D, 1.0D)))
{
@@ -702,10 +703,22 @@
protected void func_70623_bb()
{
+ net.minecraftforge.fml.common.eventhandler.Event.Result result = null;
if (this.field_82179_bU)
{
this.field_70708_bq = 0;
}
+ else if ((this.field_70708_bq & 0x1F) == 0x1F && (result = net.minecraftforge.event.ForgeEventFactory.canEntityDespawn(this)) != net.minecraftforge.fml.common.eventhandler.Event.Result.DEFAULT)
+ {
+ if (result == net.minecraftforge.fml.common.eventhandler.Event.Result.DENY)
+ {
+ this.field_70708_bq = 0;
+ }
+ else
+ {
+ this.func_70106_y();
+ }
+ }
else
{
Entity entity = this.field_70170_p.func_72890_a(this, -1.0D);
@@ -839,7 +852,6 @@
return !this.field_70170_p.func_72953_d(this.func_174813_aQ()) && this.field_70170_p.func_184144_a(this, this.func_174813_aQ()).isEmpty() && this.field_70170_p.func_72917_a(this.func_174813_aQ(), this);
}
- @SideOnly(Side.CLIENT)
public float func_70603_bj()
{
return 1.0F;
@@ -991,6 +1003,8 @@
public static EntityEquipmentSlot func_184640_d(ItemStack p_184640_0_)
{
+ final EntityEquipmentSlot slot = p_184640_0_.func_77973_b().getEquipmentSlot(p_184640_0_);
+ if (slot != null) return slot; // FORGE: Allow modders to set a non-default equipment slot for a stack; e.g. a non-armor chestplate-slot item
if (p_184640_0_.func_77973_b() != Item.func_150898_a(Blocks.field_150423_aK) && p_184640_0_.func_77973_b() != Items.field_151144_bL)
{
if (p_184640_0_.func_77973_b() instanceof ItemArmor)
@@ -1003,7 +1017,7 @@
}
else
{
- return p_184640_0_.func_77973_b() == Items.field_185159_cQ ? EntityEquipmentSlot.OFFHAND : EntityEquipmentSlot.MAINHAND;
+ return p_184640_0_.func_77973_b().isShield(p_184640_0_, null) ? EntityEquipmentSlot.OFFHAND : EntityEquipmentSlot.MAINHAND;
}
}
else
@@ -1434,5 +1448,19 @@
ON_GROUND,
IN_AIR,
IN_WATER;
+
+ private final java.util.function.BiPredicate<net.minecraft.world.IBlockAccess, BlockPos> spawnPredicate;
+
+ SpawnPlacementType() { this.spawnPredicate = null; }
+
+ SpawnPlacementType(java.util.function.BiPredicate<net.minecraft.world.IBlockAccess, BlockPos> spawnPredicate)
+ {
+ this.spawnPredicate = spawnPredicate;
+ }
+
+ public boolean canSpawnAt(World world, BlockPos pos)
+ {
+ return this.spawnPredicate != null ? this.spawnPredicate.test(world, pos) : net.minecraft.world.WorldEntitySpawner.canCreatureTypeSpawnBody(this, world, pos);
+ }
}
}