From 47cb60a213a107dc91f5fec95ab223ed19f60ed3 Mon Sep 17 00:00:00 2001 From: 17146 <1714673995@qq.com> Date: Tue, 15 Apr 2025 01:51:37 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=97=A0=E4=BA=BA=E6=9C=BA?= =?UTF-8?q?=E8=A2=AB=E6=AF=81=E5=90=8E=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/vehicle/DroneEntity.java | 39 +++++++++---------- 1 file changed, 19 insertions(+), 20 deletions(-) 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 71eab402a..1023e9623 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/DroneEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/DroneEntity.java @@ -47,6 +47,7 @@ import net.minecraft.world.phys.Vec3; import net.neoforged.neoforge.event.EventHooks; import net.neoforged.neoforge.items.ItemHandlerHelper; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import org.joml.Math; import org.joml.Vector3f; import software.bernie.geckolib.animatable.GeoEntity; @@ -238,14 +239,12 @@ public class DroneEntity extends MobileVehicleEntity implements GeoEntity { this.refreshDimensions(); } - - private void droneDrop(Player player) { - Level level = player.level(); - if (!level.isClientSide()) { - RgoGrenadeEntity rgoGrenadeEntity = new RgoGrenadeEntity(player, level, 160); + private void droneDrop(@Nullable Player player) { + if (!this.level().isClientSide()) { + RgoGrenadeEntity rgoGrenadeEntity = new RgoGrenadeEntity(player, this.level(), 160); rgoGrenadeEntity.setPos(this.getX(), this.getEyeY() - 0.09, this.getZ()); rgoGrenadeEntity.droneShoot(this); - level.addFreshEntity(rgoGrenadeEntity); + this.level().addFreshEntity(rgoGrenadeEntity); } } @@ -515,6 +514,16 @@ public class DroneEntity extends MobileVehicleEntity implements GeoEntity { @Override public void destroy() { + Player controller = EntityFindUtil.findPlayer(this.level(), this.entityData.get(CONTROLLER)); + if (controller != null) { + if (controller.getMainHandItem().is(ModItems.MONITOR.get())) { + var item = controller.getMainHandItem(); + var tag = NBTTool.getTag(item); + Monitor.disLink(tag, controller); + NBTTool.saveTag(item, tag); + } + } + // 无人机爆炸 if (level() instanceof ServerLevel) { level().explode(null, this.getX(), this.getY(), this.getZ(), 0, Level.ExplosionInteraction.NONE); @@ -526,20 +535,10 @@ public class DroneEntity extends MobileVehicleEntity implements GeoEntity { } // RGO投弹 - ItemStack rgoGrenade = new ItemStack(ModItems.RGO_GRENADE.get(), this.entityData.get(AMMO)); - if (this.level() instanceof ServerLevel level) { - ItemEntity itemEntity = new ItemEntity(level, this.getX(), this.getY(), this.getZ(), rgoGrenade); - itemEntity.setPickUpDelay(10); - level.addFreshEntity(itemEntity); - } - - Player controller = EntityFindUtil.findPlayer(this.level(), this.entityData.get(CONTROLLER)); - if (controller != null) { - if (controller.getMainHandItem().is(ModItems.MONITOR.get())) { - var item = controller.getMainHandItem(); - var tag = NBTTool.getTag(item); - Monitor.disLink(tag, controller); - NBTTool.saveTag(item, tag); + if (this.level() instanceof ServerLevel) { + int count = this.entityData.get(AMMO); + for (int i = 0; i < count; i++) { + droneDrop(controller); } }