--- a/net/minecraft/world/entity/projectile/AbstractHurtingProjectile.java
+++ b/net/minecraft/world/entity/projectile/AbstractHurtingProjectile.java
@@ -19,6 +_,8 @@
     public static final double INITAL_ACCELERATION_POWER = 0.1;
     public static final double DEFLECTION_SCALE = 0.5;
     public double accelerationPower = 0.1;
+    public float bukkitYield = 1; // CraftBukkit
+    public boolean isIncendiary = true; // CraftBukkit
 
     protected AbstractHurtingProjectile(EntityType<? extends AbstractHurtingProjectile> entityType, Level level) {
         super(entityType, level);
@@ -83,12 +_,12 @@
             }
 
             if (hitResultOnMoveVector.getType() != HitResult.Type.MISS && this.isAlive()) {
-                this.hitTargetOrDeflectSelf(hitResultOnMoveVector);
+                this.preHitTargetOrDeflectSelf(hitResultOnMoveVector); // CraftBukkit - projectile hit event
             }
 
             this.createParticleTrail();
         } else {
-            this.discard();
+            this.discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.DESPAWN); // CraftBukkit - add Bukkit remove cause
         }
     }
 
@@ -171,7 +_,7 @@
         return 1.0F;
     }
 
-    private void assignDirectionalMovement(Vec3 movement, double accelerationPower) {
+    public void assignDirectionalMovement(Vec3 movement, double accelerationPower) {
         this.setDeltaMovement(movement.normalize().scale(accelerationPower));
         this.hasImpulse = true;
     }
