--- a/net/minecraft/world/entity/IEntityAngerable.java +++ b/net/minecraft/world/entity/IEntityAngerable.java @@ -10,6 +10,10 @@ import net.minecraft.world.level.GameRules; import net.minecraft.world.level.World; +// CraftBukkit start +import org.bukkit.event.entity.EntityTargetEvent; +// CraftBukkit end + public interface IEntityAngerable { String TAG_ANGER_TIME = "AngerTime"; @@ -34,13 +38,13 @@ default void readPersistentAngerSaveData(World world, NBTTagCompound nbttagcompound) { this.setRemainingPersistentAngerTime(nbttagcompound.getIntOr("AngerTime", 0)); if (world instanceof WorldServer worldserver) { - UUID uuid = (UUID) nbttagcompound.read("AngryAt", UUIDUtil.CODEC).orElse((Object) null); + UUID uuid = (UUID) nbttagcompound.read("AngryAt", UUIDUtil.CODEC).orElse(null); // CraftBukkit - decompile error this.setPersistentAngerTarget(uuid); Entity entity = uuid != null ? worldserver.getEntity(uuid) : null; if (entity instanceof EntityLiving entityliving) { - this.setTarget(entityliving); + this.setTarget(entityliving, EntityTargetEvent.TargetReason.UNKNOWN, false); // CraftBukkit } } @@ -96,7 +100,7 @@ default void stopBeingAngry() { this.setLastHurtByMob((EntityLiving) null); this.setPersistentAngerTarget((UUID) null); - this.setTarget((EntityLiving) null); + this.setTarget((EntityLiving) null, org.bukkit.event.entity.EntityTargetEvent.TargetReason.FORGOT_TARGET, true); // CraftBukkit this.setRemainingPersistentAngerTime(0); } @@ -107,6 +111,8 @@ void setTarget(@Nullable EntityLiving entityliving); + boolean setTarget(@Nullable EntityLiving entityliving, org.bukkit.event.entity.EntityTargetEvent.TargetReason reason, boolean fireEvent); // CraftBukkit + boolean canAttack(EntityLiving entityliving); @Nullable