--- a/net/minecraft/world/entity/projectile/Arrow.java
+++ b/net/minecraft/world/entity/projectile/Arrow.java
@@ -18,7 +_,7 @@
 
 public class Arrow extends AbstractArrow {
     private static final int EXPOSED_POTION_DECAY_TIME = 600;
-    private static final int NO_EFFECT_COLOR = -1;
+    public static final int NO_EFFECT_COLOR = -1;
     private static final EntityDataAccessor<Integer> ID_EFFECT_COLOR = SynchedEntityData.defineId(Arrow.class, EntityDataSerializers.INT);
     private static final byte EVENT_POTION_PUFF = 0;
 
@@ -36,11 +_,11 @@
         this.updateColor();
     }
 
-    private PotionContents getPotionContents() {
+    public PotionContents getPotionContents() {
         return this.getPickupItemStackOrigin().getOrDefault(DataComponents.POTION_CONTENTS, PotionContents.EMPTY);
     }
 
-    private void setPotionContents(PotionContents potionContents) {
+    public void setPotionContents(PotionContents potionContents) {
         this.getPickupItemStackOrigin().set(DataComponents.POTION_CONTENTS, potionContents);
         this.updateColor();
     }
@@ -51,7 +_,7 @@
         this.updateColor();
     }
 
-    private void updateColor() {
+    public void updateColor() {
         PotionContents potionContents = this.getPotionContents();
         this.entityData.set(ID_EFFECT_COLOR, potionContents.equals(PotionContents.EMPTY) ? -1 : potionContents.getColor());
     }
@@ -66,6 +_,16 @@
         builder.define(ID_EFFECT_COLOR, -1);
     }
 
+    // Paper start - EAR 2
+    @Override
+    public void inactiveTick() {
+        if (this.isInGround()) {
+            this.life++;
+        }
+        super.inactiveTick();
+    }
+    // Paper end
+
     @Override
     public void tick() {
         super.tick();
@@ -121,12 +_,13 @@
                         mobEffectInstance.isVisible()
                     ),
                     effectSource
+                    , org.bukkit.event.entity.EntityPotionEffectEvent.Cause.ARROW // CraftBukkit
                 );
             }
         }
 
         for (MobEffectInstance mobEffectInstance : potionContents.customEffects()) {
-            living.addEffect(mobEffectInstance, effectSource);
+            living.addEffect(mobEffectInstance, effectSource, org.bukkit.event.entity.EntityPotionEffectEvent.Cause.ARROW); // CraftBukkit
         }
     }
 
