From 1c026572828ee36ece063eccde49d20258b9b4a4 Mon Sep 17 00:00:00 2001 From: Kam Date: Fri, 27 Feb 2026 00:11:11 -0500 Subject: [PATCH] Barrier Logic Corrections --- .../kamkeel/npcs/entity/EntityAbilityBarrier.java | 4 ++-- .../java/kamkeel/npcs/entity/EntityAbilityDome.java | 12 ++++++++---- .../java/kamkeel/npcs/entity/EntityAbilityPanel.java | 10 ++++++---- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/main/java/kamkeel/npcs/entity/EntityAbilityBarrier.java b/src/main/java/kamkeel/npcs/entity/EntityAbilityBarrier.java index 3cb3fe021..ebcdfe655 100644 --- a/src/main/java/kamkeel/npcs/entity/EntityAbilityBarrier.java +++ b/src/main/java/kamkeel/npcs/entity/EntityAbilityBarrier.java @@ -72,7 +72,7 @@ public abstract class EntityAbilityBarrier extends EntityEnergyAbility { } public boolean shouldReflect() { - return reflectEnabled && useHealth && result == ProjectileHitResult.BLOCKED; + return reflectEnabled && result == ProjectileHitResult.BLOCKED; } } @@ -267,7 +267,7 @@ public abstract class EntityAbilityBarrier extends EntityEnergyAbility { healthBefore, 0.0f, 0.0f, - false, + barrierData.reflect, barrierData.reflectStrengthPct, false ); diff --git a/src/main/java/kamkeel/npcs/entity/EntityAbilityDome.java b/src/main/java/kamkeel/npcs/entity/EntityAbilityDome.java index 6f6b75469..5bdb82a09 100644 --- a/src/main/java/kamkeel/npcs/entity/EntityAbilityDome.java +++ b/src/main/java/kamkeel/npcs/entity/EntityAbilityDome.java @@ -186,13 +186,17 @@ public class EntityAbilityDome extends EntityAbilityBarrier { } } - double prevX = projectile.posX - projectile.motionX; - double prevY = projectile.posY - projectile.motionY; - double prevZ = projectile.posZ - projectile.motionZ; + // Test the UPCOMING movement (this tick) so the barrier intercepts before + // entity collision runs in updateProjectile(). Using the previous tick's + // segment caused small domes to miss fast projectiles that could cross the + // dome and hit the player in a single tick. + double nextX = projectile.posX + projectile.motionX; + double nextY = projectile.posY + projectile.motionY; + double nextZ = projectile.posZ + projectile.motionZ; return isIncomingRay( + nextX, nextY, nextZ, projectile.posX, projectile.posY, projectile.posZ, - prevX, prevY, prevZ, projectile.getOwnerEntityId()); } diff --git a/src/main/java/kamkeel/npcs/entity/EntityAbilityPanel.java b/src/main/java/kamkeel/npcs/entity/EntityAbilityPanel.java index 717250fdd..e4df1dee6 100644 --- a/src/main/java/kamkeel/npcs/entity/EntityAbilityPanel.java +++ b/src/main/java/kamkeel/npcs/entity/EntityAbilityPanel.java @@ -340,13 +340,15 @@ public class EntityAbilityPanel extends EntityAbilityBarrier { } } - double prevX = projectile.posX - projectile.motionX; - double prevY = projectile.posY - projectile.motionY; - double prevZ = projectile.posZ - projectile.motionZ; + // Test the UPCOMING movement so the barrier intercepts before entity + // collision runs in updateProjectile(). + double nextX = projectile.posX + projectile.motionX; + double nextY = projectile.posY + projectile.motionY; + double nextZ = projectile.posZ + projectile.motionZ; return isIncomingRay( + nextX, nextY, nextZ, projectile.posX, projectile.posY, projectile.posZ, - prevX, prevY, prevZ, projectile.getOwnerEntityId()); }