From 5a8e1744a1a4871faab3fca401a5c50a0f3e9c39 Mon Sep 17 00:00:00 2001 From: 17146 <1714673995@qq.com> Date: Thu, 26 Sep 2024 11:23:17 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E4=BA=86=E5=AD=90=E5=BC=B9?= =?UTF-8?q?=E7=A9=BF=E9=80=8F=E7=9A=84=E6=95=88=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/projectile/ProjectileEntity.java | 26 +++++++++---------- .../superbwarfare/tools/TooltipTool.java | 2 +- 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/src/main/java/net/mcreator/superbwarfare/entity/projectile/ProjectileEntity.java b/src/main/java/net/mcreator/superbwarfare/entity/projectile/ProjectileEntity.java index b6e898cbb..9a87ca885 100644 --- a/src/main/java/net/mcreator/superbwarfare/entity/projectile/ProjectileEntity.java +++ b/src/main/java/net/mcreator/superbwarfare/entity/projectile/ProjectileEntity.java @@ -57,10 +57,7 @@ import software.bernie.geckolib.util.GeckoLibUtil; import javax.annotation.Nullable; import java.text.DecimalFormat; -import java.util.ArrayDeque; -import java.util.ArrayList; -import java.util.List; -import java.util.Queue; +import java.util.*; import java.util.function.BiFunction; import java.util.function.Function; import java.util.function.Predicate; @@ -247,7 +244,7 @@ public class ProjectileEntity extends Entity implements IEntityAdditionalSpawnDa Vec3 vec = this.getDeltaMovement(); - if (!this.level().isClientSide()) { + if (!this.level().isClientSide() && this.shooter != null) { Vec3 startVec = this.position(); Vec3 endVec = startVec.add(this.getDeltaMovement()); HitResult result = rayTraceBlocks(this.level(), new ClipContext(startVec, endVec, ClipContext.Block.COLLIDER, ClipContext.Fluid.NONE, this), IGNORE_LEAVES); @@ -256,16 +253,18 @@ public class ProjectileEntity extends Entity implements IEntityAdditionalSpawnDa } List entityResults = new ArrayList<>(); + var temp = findEntitiesOnPath(startVec, endVec); + if (temp != null) entityResults.addAll(temp); + entityResults.sort(Comparator.comparingDouble(e -> e.getHitPos().distanceTo(this.shooter.position()))); - if (this.beast) { - var temp = findEntitiesOnPath(startVec, endVec); - if (temp != null) entityResults.addAll(temp); - } else { - var temp = this.findEntityOnPath(startVec, endVec); - if (temp != null) entityResults.add(temp); - } + for (EntityResult entityResult : entityResults) { + if (!this.beast) { + this.bypassArmorRate -= 0.2F; + if (this.bypassArmorRate < 0) { + break; + } + } - for (var entityResult : entityResults) { result = new ExtendedEntityRayTraceResult(entityResult); if (((EntityHitResult) result).getEntity() instanceof Player player) { if (this.shooter instanceof Player && !((Player) this.shooter).canHarmPlayer(player)) { @@ -423,7 +422,6 @@ public class ProjectileEntity extends Entity implements IEntityAdditionalSpawnDa } } - // TODO 实现穿甲比例大于1时的穿透生物效果 protected void onHitEntity(Entity entity, boolean headshot, boolean legShot) { if (this.shooter == null) return; diff --git a/src/main/java/net/mcreator/superbwarfare/tools/TooltipTool.java b/src/main/java/net/mcreator/superbwarfare/tools/TooltipTool.java index 8527e3f2b..84ec40a8b 100644 --- a/src/main/java/net/mcreator/superbwarfare/tools/TooltipTool.java +++ b/src/main/java/net/mcreator/superbwarfare/tools/TooltipTool.java @@ -39,8 +39,8 @@ public class TooltipTool { addLevelTips(tooltip, stack); addBypassTips(tooltip, stack); - addPerkTips(tooltip, stack); addRpmTips(tooltip, stack); + addPerkTips(tooltip, stack); } public static void addShotgunTips(List tooltip, ItemStack stack, int count) {