--- a/net/minecraft/world/entity/monster/warden/Warden.java
+++ b/net/minecraft/world/entity/monster/warden/Warden.java
@@ -188,23 +_,23 @@
     }
 
     @Override
-    protected float getSoundVolume() {
+    public float getSoundVolume() {
         return 4.0F;
     }
 
     @Nullable
     @Override
-    protected SoundEvent getAmbientSound() {
+    public SoundEvent getAmbientSound() {
         return !this.hasPose(Pose.ROARING) && !this.isDiggingOrEmerging() ? this.getAngerLevel().getAmbientSound() : null;
     }
 
     @Override
-    protected SoundEvent getHurtSound(DamageSource damageSource) {
+    public SoundEvent getHurtSound(DamageSource damageSource) {
         return SoundEvents.WARDEN_HURT;
     }
 
     @Override
-    protected SoundEvent getDeathSound() {
+    public SoundEvent getDeathSound() {
         return SoundEvents.WARDEN_DEATH;
     }
 
@@ -395,7 +_,7 @@
 
     public static void applyDarknessAround(ServerLevel level, Vec3 pos, @Nullable Entity source, int radius) {
         MobEffectInstance mobEffectInstance = new MobEffectInstance(MobEffects.DARKNESS, 260, 0, false, false);
-        MobEffectUtil.addEffectToPlayersAround(level, source, pos, radius, mobEffectInstance, 200);
+        MobEffectUtil.addEffectToPlayersAround(level, source, pos, radius, mobEffectInstance, 200, org.bukkit.event.entity.EntityPotionEffectEvent.Cause.WARDEN); // CraftBukkit - Add EntityPotionEffectEvent.Cause
     }
 
     @Override
@@ -439,6 +_,15 @@
     @VisibleForTesting
     public void increaseAngerAt(@Nullable Entity entity, int offset, boolean playListeningSound) {
         if (!this.isNoAi() && this.canTargetEntity(entity)) {
+            // Paper start - Add WardenAngerChangeEvent
+            int activeAnger = this.angerManagement.getActiveAnger(entity);
+            io.papermc.paper.event.entity.WardenAngerChangeEvent event = new io.papermc.paper.event.entity.WardenAngerChangeEvent((org.bukkit.entity.Warden) this.getBukkitEntity(), entity.getBukkitEntity(), activeAnger, Math.min(150, activeAnger + offset));
+            this.level().getCraftServer().getPluginManager().callEvent(event);
+            if (event.isCancelled()) {
+                return;
+            }
+            offset = event.getNewAnger() - activeAnger;
+            // Paper end - Add WardenAngerChangeEvent
             WardenAi.setDigCooldown(this);
             boolean flag = !(this.getTarget() instanceof Player);
             int i = this.angerManagement.increaseAnger(entity, offset);
