diff --git a/patches/minecraft/net/minecraft/world/entity/projectile/AbstractArrow.java.patch b/patches/minecraft/net/minecraft/world/entity/projectile/AbstractArrow.java.patch index 3b96241b7a..daafeb51d3 100644 --- a/patches/minecraft/net/minecraft/world/entity/projectile/AbstractArrow.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/projectile/AbstractArrow.java.patch @@ -30,7 +30,7 @@ this.clearFire(); } -@@ -186,9 +_,28 @@ +@@ -186,9 +_,34 @@ } } @@ -42,6 +42,9 @@ + case SKIP_ENTITY: + if (hitresult.getType() != HitResult.Type.ENTITY) { // If there is no entity, we just return default behaviour + this.preOnHit(hitresult); // CraftBukkit - projectile hit event ++ if (this.ketting$preOnHitResult) { // Ketting - Fix mixin errors ++ this.onHit(hitresult); ++ } + this.hasImpulse = true; + break; + } @@ -56,6 +59,9 @@ + this.setPierceLevel((byte) 0); + case DEFAULT: + this.preOnHit(hitresult); // CraftBukkit - projectile hit event ++ if (this.ketting$preOnHitResult) { // Ketting - Fix mixin errors ++ this.onHit(hitresult); ++ } + this.hasImpulse = true; + break; + } diff --git a/patches/minecraft/net/minecraft/world/entity/projectile/AbstractHurtingProjectile.java.patch b/patches/minecraft/net/minecraft/world/entity/projectile/AbstractHurtingProjectile.java.patch index 891e55c526..34e437c689 100644 --- a/patches/minecraft/net/minecraft/world/entity/projectile/AbstractHurtingProjectile.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/projectile/AbstractHurtingProjectile.java.patch @@ -22,7 +22,7 @@ double d0 = Math.sqrt(p_36821_ * p_36821_ + p_36822_ * p_36822_ + p_36823_ * p_36823_); if (d0 != 0.0D) { this.xPower = p_36821_ / d0 * 0.1D; -@@ -65,8 +_,14 @@ +@@ -65,8 +_,17 @@ } HitResult hitresult = ProjectileUtil.getHitResultOnMoveVector(this, this::canHitEntity); @@ -30,6 +30,9 @@ - this.onHit(hitresult); + if (hitresult.getType() != HitResult.Type.MISS && !net.minecraftforge.event.ForgeEventFactory.onProjectileImpact(this, hitresult)) { + this.preOnHit(hitresult); // CraftBukkit - projectile hit event ++ if (this.ketting$preOnHitResult) { // Ketting - Fix mixin errors ++ this.onHit(hitresult); ++ } + + // CraftBukkit start - Fire ProjectileHitEvent + if (this.isRemoved()) { diff --git a/patches/minecraft/net/minecraft/world/entity/projectile/FireworkRocketEntity.java.patch b/patches/minecraft/net/minecraft/world/entity/projectile/FireworkRocketEntity.java.patch index 83d5dbf3a4..9242574163 100644 --- a/patches/minecraft/net/minecraft/world/entity/projectile/FireworkRocketEntity.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/projectile/FireworkRocketEntity.java.patch @@ -23,12 +23,15 @@ protected void defineSynchedData() { this.entityData.define(DATA_ID_FIREWORKS_ITEM, ItemStack.EMPTY); this.entityData.define(DATA_ATTACHED_TO_TARGET, OptionalInt.empty()); -@@ -130,7 +_,7 @@ +@@ -130,7 +_,10 @@ HitResult hitresult = ProjectileUtil.getHitResultOnMoveVector(this, this::canHitEntity); if (!this.noPhysics) { - this.onHit(hitresult); + this.preOnHit(hitresult); // CraftBukkit - projectile hit event ++ if (this.ketting$preOnHitResult) { // Ketting - Fix mixin errors ++ this.onHit(hitresult); ++ } this.hasImpulse = true; } diff --git a/patches/minecraft/net/minecraft/world/entity/projectile/FishingHook.java.patch b/patches/minecraft/net/minecraft/world/entity/projectile/FishingHook.java.patch index 3153976756..772d7dfd60 100644 --- a/patches/minecraft/net/minecraft/world/entity/projectile/FishingHook.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/projectile/FishingHook.java.patch @@ -29,12 +29,17 @@ if (!p_37137_.isRemoved() && p_37137_.isAlive() && (flag || flag1) && !(this.distanceToSqr(p_37137_) > 1024.0D)) { return false; } else { -@@ -241,7 +_,7 @@ +@@ -241,7 +_,12 @@ private void checkCollision() { HitResult hitresult = ProjectileUtil.getHitResultOnMoveVector(this, this::canHitEntity); - this.onHit(hitresult); -+ if (hitresult.getType() == HitResult.Type.MISS || !net.minecraftforge.event.ForgeEventFactory.onProjectileImpact(this, hitresult)) this.preOnHit(hitresult); // CraftBukkit - projectile hit event ++ if (hitresult.getType() == HitResult.Type.MISS || !net.minecraftforge.event.ForgeEventFactory.onProjectileImpact(this, hitresult)) { ++ this.preOnHit(hitresult); // CraftBukkit - projectile hit event ++ if (this.ketting$preOnHitResult) { // Ketting - Fix mixin errors ++ this.onHit(hitresult); ++ } ++ } } protected boolean canHitEntity(Entity p_37135_) { diff --git a/patches/minecraft/net/minecraft/world/entity/projectile/LlamaSpit.java.patch b/patches/minecraft/net/minecraft/world/entity/projectile/LlamaSpit.java.patch index c7754a8dc5..5a5451dbfe 100644 --- a/patches/minecraft/net/minecraft/world/entity/projectile/LlamaSpit.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/projectile/LlamaSpit.java.patch @@ -1,12 +1,16 @@ --- a/net/minecraft/world/entity/projectile/LlamaSpit.java +++ b/net/minecraft/world/entity/projectile/LlamaSpit.java -@@ -29,7 +_,8 @@ +@@ -29,7 +_,12 @@ super.tick(); Vec3 vec3 = this.getDeltaMovement(); HitResult hitresult = ProjectileUtil.getHitResultOnMoveVector(this, this::canHitEntity); - this.onHit(hitresult); -+ if (hitresult.getType() != HitResult.Type.MISS && !net.minecraftforge.event.ForgeEventFactory.onProjectileImpact(this, hitresult)) -+ this.preOnHit(hitresult); // CraftBukkit - projectile hit event ++ if (hitresult.getType() != HitResult.Type.MISS && !net.minecraftforge.event.ForgeEventFactory.onProjectileImpact(this, hitresult)) { ++ this.preOnHit(hitresult); // CraftBukkit - projectile hit event ++ if (this.ketting$preOnHitResult) { // Ketting - Fix mixin errors ++ this.onHit(hitresult); ++ } ++ } double d0 = this.getX() + vec3.x; double d1 = this.getY() + vec3.y; double d2 = this.getZ() + vec3.z; diff --git a/patches/minecraft/net/minecraft/world/entity/projectile/Projectile.java.patch b/patches/minecraft/net/minecraft/world/entity/projectile/Projectile.java.patch index 20af351118..a4e72dd20c 100644 --- a/patches/minecraft/net/minecraft/world/entity/projectile/Projectile.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/projectile/Projectile.java.patch @@ -19,17 +19,16 @@ } @Nullable -@@ -132,6 +_,16 @@ +@@ -132,6 +_,15 @@ this.setDeltaMovement(this.getDeltaMovement().add(vec3.x, p_37252_.onGround() ? 0.0D : vec3.y, vec3.z)); } ++ protected boolean ketting$preOnHitResult; + // CraftBukkit start - call projectile hit event + protected void preOnHit(HitResult hitResult) { + org.bukkit.event.entity.ProjectileHitEvent event = org.bukkit.craftbukkit.v1_20_R1.event.CraftEventFactory.callProjectileHitEvent(this, hitResult); + this.hitCancelled = event != null && event.isCancelled(); -+ if (hitResult.getType() == HitResult.Type.BLOCK || !this.hitCancelled) { -+ this.onHit(hitResult); -+ } ++ ketting$preOnHitResult = hitResult.getType() == HitResult.Type.BLOCK || !this.hitCancelled; + } + // CraftBukkit end + diff --git a/patches/minecraft/net/minecraft/world/entity/projectile/ShulkerBullet.java.patch b/patches/minecraft/net/minecraft/world/entity/projectile/ShulkerBullet.java.patch index 8256f8374c..778761d6c0 100644 --- a/patches/minecraft/net/minecraft/world/entity/projectile/ShulkerBullet.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/projectile/ShulkerBullet.java.patch @@ -22,7 +22,7 @@ public SoundSource getSoundSource() { return SoundSource.HOSTILE; -@@ -212,8 +_,8 @@ +@@ -212,8 +_,11 @@ } HitResult hitresult = ProjectileUtil.getHitResultOnMoveVector(this, this::canHitEntity); @@ -30,6 +30,9 @@ - this.onHit(hitresult); + if (hitresult.getType() != HitResult.Type.MISS && !net.minecraftforge.event.ForgeEventFactory.onProjectileImpact(this, hitresult)) { + this.preOnHit(hitresult); // CraftBukkit - projectile hit event ++ if (this.ketting$preOnHitResult) { // Ketting - Fix mixin errors ++ this.onHit(hitresult); ++ } } } diff --git a/patches/minecraft/net/minecraft/world/entity/projectile/ThrowableProjectile.java.patch b/patches/minecraft/net/minecraft/world/entity/projectile/ThrowableProjectile.java.patch index 0582791520..69f93b9682 100644 --- a/patches/minecraft/net/minecraft/world/entity/projectile/ThrowableProjectile.java.patch +++ b/patches/minecraft/net/minecraft/world/entity/projectile/ThrowableProjectile.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/entity/projectile/ThrowableProjectile.java +++ b/net/minecraft/world/entity/projectile/ThrowableProjectile.java -@@ -58,8 +_,8 @@ +@@ -58,8 +_,11 @@ } } @@ -8,6 +8,9 @@ - this.onHit(hitresult); + if (hitresult.getType() != HitResult.Type.MISS && !flag && !net.minecraftforge.event.ForgeEventFactory.onProjectileImpact(this, hitresult)) { + this.preOnHit(hitresult); // CraftBukkit - projectile hit event ++ if (this.ketting$preOnHitResult) { // Ketting - Fix mixin errors ++ this.onHit(hitresult); ++ } } this.checkInsideBlocks();