--- a/net/minecraft/world/entity/projectile/EntityTippedArrow.java
+++ b/net/minecraft/world/entity/projectile/EntityTippedArrow.java
@@ -28,7 +28,7 @@
     private static final int NO_EFFECT_COLOR = -1;
     private static final DataWatcherObject<Integer> ID_EFFECT_COLOR = DataWatcher.defineId(EntityTippedArrow.class, DataWatcherRegistry.INT);
     private static final byte EVENT_POTION_PUFF = 0;
-    private PotionRegistry potion;
+    public PotionRegistry potion; // CraftBukkit private -> public
     public final Set<MobEffect> effects;
     private boolean fixedColor;
 
@@ -86,7 +86,7 @@
         return nbttagcompound != null && nbttagcompound.contains("CustomPotionColor", 99) ? nbttagcompound.getInt("CustomPotionColor") : -1;
     }
 
-    private void updateColor() {
+    public void updateColor() { // CraftBukkit private -> public
         this.fixedColor = false;
         if (this.potion == Potions.EMPTY && this.effects.isEmpty()) {
             this.entityData.set(EntityTippedArrow.ID_EFFECT_COLOR, -1);
@@ -212,7 +212,7 @@
             mobeffect = (MobEffect) iterator.next();
             entityliving.addEffect(new MobEffect(mobeffect.getEffect(), Math.max(mobeffect.mapDuration((i) -> {
                 return i / 8;
-            }), 1), mobeffect.getAmplifier(), mobeffect.isAmbient(), mobeffect.isVisible()), entity);
+            }), 1), mobeffect.getAmplifier(), mobeffect.isAmbient(), mobeffect.isVisible()), entity, org.bukkit.event.entity.EntityPotionEffectEvent.Cause.ARROW); // CraftBukkit
         }
 
         if (!this.effects.isEmpty()) {
@@ -220,7 +220,7 @@
 
             while (iterator.hasNext()) {
                 mobeffect = (MobEffect) iterator.next();
-                entityliving.addEffect(mobeffect, entity);
+                entityliving.addEffect(mobeffect, entity, org.bukkit.event.entity.EntityPotionEffectEvent.Cause.ARROW); // CraftBukkit
             }
         }
 
