From 537b845b093dc59982e07ac84867952383cb3702 Mon Sep 17 00:00:00 2001 From: Atsuihsio <842960157@qq.com> Date: Fri, 24 Jan 2025 15:59:15 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=97=A0=E4=BA=BA=E6=9C=BA?= =?UTF-8?q?=E6=95=B0=E5=80=BC=EF=BC=8C=E4=BF=AE=E5=A4=8D=E5=BF=AB=E9=80=9F?= =?UTF-8?q?=E7=82=B9=E5=87=BB=E7=AA=81=E7=A0=B4=E6=AD=A6=E5=99=A8=E5=B0=84?= =?UTF-8?q?=E9=80=9F=E4=B8=8A=E9=99=90bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/server/ExplosionConfig.java | 6 +++--- .../entity/vehicle/DroneEntity.java | 6 ++++-- .../event/ClientEventHandler.java | 19 ++++++++++++------- 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/atsuishio/superbwarfare/config/server/ExplosionConfig.java b/src/main/java/com/atsuishio/superbwarfare/config/server/ExplosionConfig.java index 2984ce4be..7c4b4adce 100644 --- a/src/main/java/com/atsuishio/superbwarfare/config/server/ExplosionConfig.java +++ b/src/main/java/com/atsuishio/superbwarfare/config/server/ExplosionConfig.java @@ -68,10 +68,10 @@ public class ExplosionConfig { builder.push("Drone Kamikaze"); builder.comment("The hit damage of Drone Kamikaze"); - DRONE_KAMIKAZE_HIT_DAMAGE = builder.defineInRange("drone_kamikaze_hit_damage", 300, 1, 10000000); + DRONE_KAMIKAZE_HIT_DAMAGE = builder.defineInRange("drone_kamikaze_hit_damage", 200, 1, 10000000); builder.comment("The hit damage of Drone Kamikaze with C4"); - DRONE_KAMIKAZE_HIT_DAMAGE_C4 = builder.defineInRange("drone_kamikaze_hit_damage_c4", 700, 1, 10000000); + DRONE_KAMIKAZE_HIT_DAMAGE_C4 = builder.defineInRange("drone_kamikaze_hit_damage_c4", 150, 1, 10000000); builder.comment("The explosion damage of Drone Kamikaze"); DRONE_KAMIKAZE_EXPLOSION_DAMAGE = builder.defineInRange("drone_kamikaze_explosion_damage", 160, 1, 10000000); @@ -84,7 +84,7 @@ public class ExplosionConfig { builder.push("C4"); builder.comment("The explosion damage of C4"); - C4_EXPLOSION_DAMAGE = builder.defineInRange("c4_explosion_damage", 500, 1, Integer.MAX_VALUE); + C4_EXPLOSION_DAMAGE = builder.defineInRange("c4_explosion_damage", 300, 1, Integer.MAX_VALUE); builder.comment("The explosion countdown of C4"); C4_EXPLOSION_COUNTDOWN = builder.defineInRange("c4_explosion_countdown", 514, 1, Integer.MAX_VALUE); diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/DroneEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/DroneEntity.java index 10e0df8e8..77a39f166 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/DroneEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/DroneEntity.java @@ -477,9 +477,11 @@ public class DroneEntity extends MobileVehicleEntity implements GeoEntity { if (lastTickSpeed > 0.12) { if (this.entityData.get(KAMIKAZE_MODE) != 0 && 20 * lastTickSpeed > this.getHealth()) { if (this.entityData.get(KAMIKAZE_MODE) == 1) { - target.hurt(ModDamageTypes.causeCustomExplosionDamage(this.level().registryAccess(), this, controller), ExplosionConfig.DRONE_KAMIKAZE_HIT_DAMAGE.get()); + target.hurt(ModDamageTypes.causeProjectileBoomDamage(this.level().registryAccess(), this, controller), ExplosionConfig.DRONE_KAMIKAZE_HIT_DAMAGE.get()); + target.invulnerableTime = 0; } else if (this.entityData.get(KAMIKAZE_MODE) == 2) { - target.hurt(ModDamageTypes.causeCustomExplosionDamage(this.level().registryAccess(), this, controller), ExplosionConfig.DRONE_KAMIKAZE_HIT_DAMAGE_C4.get()); + target.hurt(ModDamageTypes.causeProjectileBoomDamage(this.level().registryAccess(), this, controller), ExplosionConfig.DRONE_KAMIKAZE_HIT_DAMAGE_C4.get()); + target.invulnerableTime = 0; } if (controller != null && controller.getMainHandItem().is(ModItems.MONITOR.get())) { diff --git a/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java b/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java index f15cd448e..765e6e1e7 100644 --- a/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java @@ -291,10 +291,10 @@ public class ClientEventHandler { if (stack.is(ModItems.LUNGE_MINE.get()) && ((lungeAttack >= 18 && lungeAttack <= 21) || lungeSprint > 0)) { Entity lookingEntity = TraceTool.findLookingEntity(player, player.getEntityReach() + 1.5); - BlockHitResult result = player.level().clip(new ClipContext(player.getEyePosition(), player.getEyePosition().add(player.getLookAngle().scale(player.getBlockReach() + 1.5)), + BlockHitResult result = player.level().clip(new ClipContext(player.getEyePosition(), player.getEyePosition().add(player.getLookAngle().scale(player.getBlockReach() + 0.5)), ClipContext.Block.OUTLINE, ClipContext.Fluid.NONE, player)); - Vec3 looking = Vec3.atLowerCornerOf(player.level().clip(new ClipContext(player.getEyePosition(), player.getEyePosition().add(player.getLookAngle().scale(player.getBlockReach() + 1.5)), ClipContext.Block.OUTLINE, ClipContext.Fluid.NONE, player)).getBlockPos()); + Vec3 looking = Vec3.atLowerCornerOf(player.level().clip(new ClipContext(player.getEyePosition(), player.getEyePosition().add(player.getLookAngle().scale(player.getBlockReach() + 0.5)), ClipContext.Block.OUTLINE, ClipContext.Fluid.NONE, player)).getBlockPos()); BlockState blockState = player.level().getBlockState(BlockPos.containing(looking.x(), looking.y(), looking.z())); if (lookingEntity != null) { @@ -302,7 +302,7 @@ public class ClientEventHandler { lungeSprint = 0; lungeAttack = 0; lungeDraw = 30; - } else if (blockState.canOcclude() || blockState.getBlock() instanceof DoorBlock || blockState.getBlock() instanceof CrossCollisionBlock || blockState.getBlock() instanceof BellBlock) { + } else if ((blockState.canOcclude() || blockState.getBlock() instanceof DoorBlock || blockState.getBlock() instanceof CrossCollisionBlock || blockState.getBlock() instanceof BellBlock) && lungeSprint == 0) { ModUtils.PACKET_HANDLER.sendToServer(new LungeMineAttackMessage(1, player.getUUID(), result)); lungeSprint = 0; lungeAttack = 0; @@ -451,7 +451,7 @@ public class ClientEventHandler { } } else { - if (mode != 0) { + if (mode != 0 && clientTimer.getProgress() >= cooldown) { clientTimer.stop(); } fireSpread = 0; @@ -686,12 +686,17 @@ public class ClientEventHandler { if ((holdFireVehicle)) { if (!clientTimerVehicle.started()) { clientTimerVehicle.start(); + // 首发瞬间发射 + clientTimerVehicle.setProgress((cooldown + 1)); + } + + if (clientTimerVehicle.getProgress() >= cooldown) { ModUtils.PACKET_HANDLER.sendToServer(new VehicleFireMessage(0)); playVehicleClientSounds(player, iVehicle); + clientTimerVehicle.setProgress((clientTimerVehicle.getProgress() - cooldown)); } - if (clientTimerVehicle.getProgress() >= cooldown) { - clientTimerVehicle.stop(); - } + } else if (clientTimerVehicle.getProgress() >= cooldown) { + clientTimerVehicle.stop(); } } else { clientTimerVehicle.stop();