--- a/net/minecraft/world/entity/projectile/Snowball.java
+++ b/net/minecraft/world/entity/projectile/Snowball.java
@@ -13,8 +13,12 @@
 import net.minecraft.world.level.Level;
 import net.minecraft.world.phys.EntityHitResult;
 import net.minecraft.world.phys.HitResult;
+// CraftBukkit start
+import org.bukkit.event.entity.EntityRemoveEvent;
+// CraftBukkit end
 
 public class Snowball extends ThrowableItemProjectile {
+
     public Snowball(EntityType<? extends Snowball> type, Level world) {
         super(type, world);
     }
@@ -33,21 +37,21 @@
     }
 
     private ParticleOptions getParticle() {
-        ItemStack itemStack = this.getItem();
-        return (ParticleOptions)(!itemStack.isEmpty() && !itemStack.is(this.getDefaultItem())
-            ? new ItemParticleOption(ParticleTypes.ITEM, itemStack)
-            : ParticleTypes.ITEM_SNOWBALL);
+        ItemStack itemstack = this.getItem();
+
+        return (ParticleOptions) (!itemstack.isEmpty() && !itemstack.is(this.getDefaultItem()) ? new ItemParticleOption(ParticleTypes.ITEM, itemstack) : ParticleTypes.ITEM_SNOWBALL);
     }
 
     @Override
     public void handleEntityEvent(byte status) {
         if (status == 3) {
-            ParticleOptions particleOptions = this.getParticle();
+            ParticleOptions particleparam = this.getParticle();
 
-            for (int i = 0; i < 8; i++) {
-                this.level().addParticle(particleOptions, this.getX(), this.getY(), this.getZ(), 0.0, 0.0, 0.0);
+            for (int i = 0; i < 8; ++i) {
+                this.level().addParticle(particleparam, this.getX(), this.getY(), this.getZ(), 0.0D, 0.0D, 0.0D);
             }
         }
+
     }
 
     @Override
@@ -55,15 +59,17 @@
         super.onHitEntity(entityHitResult);
         Entity entity = entityHitResult.getEntity();
         int i = entity instanceof Blaze ? 3 : 0;
-        entity.hurt(this.damageSources().thrown(this, this.getOwner()), (float)i);
+
+        entity.hurt(this.damageSources().thrown(this, this.getOwner()), (float) i);
     }
 
     @Override
     protected void onHit(HitResult hitResult) {
         super.onHit(hitResult);
         if (!this.level().isClientSide) {
-            this.level().broadcastEntityEvent(this, (byte)3);
-            this.discard();
+            this.level().broadcastEntityEvent(this, (byte) 3);
+            this.discard(EntityRemoveEvent.Cause.HIT); // CraftBukkit - add Bukkit remove cause
         }
+
     }
 }
