From 04e6cbe6cf12e813dddbfec29cc328a3f37ae721 Mon Sep 17 00:00:00 2001 From: Kam Date: Thu, 26 Feb 2026 19:29:08 -0500 Subject: [PATCH 1/2] 1.11 Beta 11 --- build.gradle | 2 +- src/main/java/noppes/npcs/CustomNpcs.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 2da148f4b..c4783606b 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ plugins { id 'idea' } -version = "1.11-beta10" +version = "1.11-beta11" group= "kamkeel.customnpc-plus" archivesBaseName = "CustomNPC-Plus" diff --git a/src/main/java/noppes/npcs/CustomNpcs.java b/src/main/java/noppes/npcs/CustomNpcs.java index b284aa6ba..73f87c7f6 100644 --- a/src/main/java/noppes/npcs/CustomNpcs.java +++ b/src/main/java/noppes/npcs/CustomNpcs.java @@ -124,7 +124,7 @@ import java.util.HashSet; import java.util.Set; import java.util.function.Consumer; -@Mod(modid = "customnpcs", name = "CustomNPC+", version = "1.11-beta10") +@Mod(modid = "customnpcs", name = "CustomNPC+", version = "1.11-beta11") public class CustomNpcs { @SidedProxy(clientSide = "noppes.npcs.client.ClientProxy", serverSide = "noppes.npcs.CommonProxy") From 1c026572828ee36ece063eccde49d20258b9b4a4 Mon Sep 17 00:00:00 2001 From: Kam Date: Fri, 27 Feb 2026 00:11:11 -0500 Subject: [PATCH 2/2] 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()); }