--- a/net/minecraft/world/entity/monster/EntityPigZombie.java
+++ b/net/minecraft/world/entity/monster/EntityPigZombie.java
@@ -154,7 +154,7 @@
         }).filter((entitypigzombie) -> {
             return !entitypigzombie.isAlliedTo((Entity) this.getTarget());
         }).forEach((entitypigzombie) -> {
-            entitypigzombie.setTarget(this.getTarget());
+            entitypigzombie.setTarget(this.getTarget(), org.bukkit.event.entity.EntityTargetEvent.TargetReason.TARGET_ATTACKED_NEARBY_ENTITY, true); // CraftBukkit
         });
     }
 
@@ -163,7 +163,7 @@
     }
 
     @Override
-    public void setTarget(@Nullable EntityLiving entityliving) {
+    public boolean setTarget(@Nullable EntityLiving entityliving, org.bukkit.event.entity.EntityTargetEvent.TargetReason reason, boolean fireEvent) { // CraftBukkit - signature
         if (this.getTarget() == null && entityliving != null) {
             this.playFirstAngerSoundIn = EntityPigZombie.FIRST_ANGER_SOUND_DELAY.sample(this.random);
             this.ticksUntilNextAlert = EntityPigZombie.ALERT_INTERVAL.sample(this.random);
@@ -173,12 +173,21 @@
             this.setLastHurtByPlayer((EntityHuman) entityliving);
         }
 
-        super.setTarget(entityliving);
+        return super.setTarget(entityliving, reason, fireEvent); // CraftBukkit
     }
 
     @Override
     public void startPersistentAngerTimer() {
-        this.setRemainingPersistentAngerTime(EntityPigZombie.PERSISTENT_ANGER_TIME.sample(this.random));
+        // CraftBukkit start
+        Entity entity = ((WorldServer) this.level()).getEntity(getPersistentAngerTarget());
+        org.bukkit.event.entity.PigZombieAngerEvent event = new org.bukkit.event.entity.PigZombieAngerEvent((org.bukkit.entity.PigZombie) this.getBukkitEntity(), (entity == null) ? null : entity.getBukkitEntity(), EntityPigZombie.PERSISTENT_ANGER_TIME.sample(this.random));
+        this.level().getCraftServer().getPluginManager().callEvent(event);
+        if (event.isCancelled()) {
+            this.setPersistentAngerTarget(null);
+            return;
+        }
+        this.setRemainingPersistentAngerTime(event.getNewAnger());
+        // CraftBukkit end
     }
 
     public static boolean checkZombifiedPiglinSpawnRules(EntityTypes<EntityPigZombie> entitytypes, GeneratorAccess generatoraccess, EnumMobSpawn enummobspawn, BlockPosition blockposition, RandomSource randomsource) {
