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/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()); } 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")