--- a/net/minecraft/world/entity/projectile/LlamaSpit.java
+++ b/net/minecraft/world/entity/projectile/LlamaSpit.java
@@ -15,6 +15,7 @@
 import net.minecraft.world.phys.Vec3;
 
 public class LlamaSpit extends Projectile {
+
     public LlamaSpit(EntityType<? extends LlamaSpit> type, Level world) {
         super(type, world);
     }
@@ -22,41 +23,47 @@
     public LlamaSpit(Level world, Llama owner) {
         this(EntityType.LLAMA_SPIT, world);
         this.setOwner(owner);
-        this.setPos(owner.getX() - (double)(owner.getBbWidth() + 1.0F) * 0.5D * (double)Mth.sin(owner.yBodyRot * ((float)Math.PI / 180F)), owner.getEyeY() - (double)0.1F, owner.getZ() + (double)(owner.getBbWidth() + 1.0F) * 0.5D * (double)Mth.cos(owner.yBodyRot * ((float)Math.PI / 180F)));
+        this.setPos(owner.getX() - (double) (owner.getBbWidth() + 1.0F) * 0.5D * (double) Mth.sin(owner.yBodyRot * 0.017453292F), owner.getEyeY() - 0.10000000149011612D, owner.getZ() + (double) (owner.getBbWidth() + 1.0F) * 0.5D * (double) Mth.cos(owner.yBodyRot * 0.017453292F));
     }
 
     @Override
     public void tick() {
         super.tick();
-        Vec3 vec3 = this.getDeltaMovement();
-        HitResult hitResult = ProjectileUtil.getHitResultOnMoveVector(this, this::canHitEntity);
-        this.onHit(hitResult);
-        double d = this.getX() + vec3.x;
-        double e = this.getY() + vec3.y;
-        double f = this.getZ() + vec3.z;
+        Vec3 vec3d = this.getDeltaMovement();
+        HitResult movingobjectposition = ProjectileUtil.getHitResultOnMoveVector(this, this::canHitEntity);
+
+        this.preOnHit(movingobjectposition); // CraftBukkit - projectile hit event
+        double d0 = this.getX() + vec3d.x;
+        double d1 = this.getY() + vec3d.y;
+        double d2 = this.getZ() + vec3d.z;
+
         this.updateRotation();
-        float g = 0.99F;
-        float h = 0.06F;
+        float f = 0.99F;
+        float f1 = 0.06F;
+
         if (this.level().getBlockStates(this.getBoundingBox()).noneMatch(BlockBehaviour.BlockStateBase::isAir)) {
             this.discard();
         } else if (this.isInWaterOrBubble()) {
             this.discard();
         } else {
-            this.setDeltaMovement(vec3.scale((double)0.99F));
+            this.setDeltaMovement(vec3d.scale(0.9900000095367432D));
             if (!this.isNoGravity()) {
-                this.setDeltaMovement(this.getDeltaMovement().add(0.0D, (double)-0.06F, 0.0D));
+                this.setDeltaMovement(this.getDeltaMovement().add(0.0D, -0.05999999865889549D, 0.0D));
             }
 
-            this.setPos(d, e, f);
+            this.setPos(d0, d1, d2);
         }
     }
 
     @Override
     protected void onHitEntity(EntityHitResult entityHitResult) {
         super.onHitEntity(entityHitResult);
-        Entity var3 = this.getOwner();
-        if (var3 instanceof LivingEntity livingEntity) {
-            entityHitResult.getEntity().hurt(this.damageSources().mobProjectile(this, livingEntity), 1.0F);
+        Entity entity = this.getOwner();
+
+        if (entity instanceof LivingEntity) {
+            LivingEntity entityliving = (LivingEntity) entity;
+
+            entityHitResult.getEntity().hurt(this.damageSources().mobProjectile(this, entityliving), 1.0F);
         }
 
     }
@@ -71,21 +78,21 @@
     }
 
     @Override
-    protected void defineSynchedData() {
-    }
+    protected void defineSynchedData() {}
 
     @Override
     public void recreateFromPacket(ClientboundAddEntityPacket packet) {
         super.recreateFromPacket(packet);
-        double d = packet.getXa();
-        double e = packet.getYa();
-        double f = packet.getZa();
+        double d0 = packet.getXa();
+        double d1 = packet.getYa();
+        double d2 = packet.getZa();
 
-        for(int i = 0; i < 7; ++i) {
-            double g = 0.4D + 0.1D * (double)i;
-            this.level().addParticle(ParticleTypes.SPIT, this.getX(), this.getY(), this.getZ(), d * g, e, f * g);
+        for (int i = 0; i < 7; ++i) {
+            double d3 = 0.4D + 0.1D * (double) i;
+
+            this.level().addParticle(ParticleTypes.SPIT, this.getX(), this.getY(), this.getZ(), d0 * d3, d1, d2 * d3);
         }
 
-        this.setDeltaMovement(d, e, f);
+        this.setDeltaMovement(d0, d1, d2);
     }
 }
