From d07f085d5749da701dc2bc7e85fbf0a98a4fc634 Mon Sep 17 00:00:00 2001 From: 17146 <1714673995@qq.com> Date: Thu, 23 Jan 2025 17:26:53 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=97=A0=E4=BA=BA=E6=9C=BA?= =?UTF-8?q?=E5=88=A4=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/model/entity/DroneModel.java | 4 ++-- .../client/overlay/DroneUIOverlay.java | 6 +++--- .../client/renderer/entity/DroneRenderer.java | 2 +- .../entity/projectile/ProjectileEntity.java | 1 + .../entity/projectile/RgoGrenadeEntity.java | 2 +- .../entity/{ => vehicle}/DroneEntity.java | 9 +++++++-- .../entity/vehicle/MobileVehicleEntity.java | 13 +++++++++---- .../superbwarfare/entity/vehicle/VehicleEntity.java | 1 - .../superbwarfare/event/ClientEventHandler.java | 1 - .../com/atsuishio/superbwarfare/item/Monitor.java | 2 +- .../atsuishio/superbwarfare/mixins/CameraMixin.java | 1 - .../network/message/DroneFireMessage.java | 2 +- .../network/message/InteractMessage.java | 2 +- .../superbwarfare/tools/EntityFindUtil.java | 2 +- 14 files changed, 28 insertions(+), 20 deletions(-) rename src/main/java/com/atsuishio/superbwarfare/entity/{ => vehicle}/DroneEntity.java (99%) diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/entity/DroneModel.java b/src/main/java/com/atsuishio/superbwarfare/client/model/entity/DroneModel.java index 82e8bdf96..e2840e7e2 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/entity/DroneModel.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/entity/DroneModel.java @@ -1,7 +1,7 @@ package com.atsuishio.superbwarfare.client.model.entity; import com.atsuishio.superbwarfare.ModUtils; -import com.atsuishio.superbwarfare.entity.DroneEntity; +import com.atsuishio.superbwarfare.entity.vehicle.DroneEntity; import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.tools.EntityFindUtil; import net.minecraft.resources.ResourceLocation; @@ -13,7 +13,7 @@ import software.bernie.geckolib.model.GeoModel; import java.util.UUID; -import static com.atsuishio.superbwarfare.entity.DroneEntity.*; +import static com.atsuishio.superbwarfare.entity.vehicle.DroneEntity.*; public class DroneModel extends GeoModel { @Override diff --git a/src/main/java/com/atsuishio/superbwarfare/client/overlay/DroneUIOverlay.java b/src/main/java/com/atsuishio/superbwarfare/client/overlay/DroneUIOverlay.java index 3ff261139..1ef2bfd1c 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/overlay/DroneUIOverlay.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/overlay/DroneUIOverlay.java @@ -2,7 +2,7 @@ package com.atsuishio.superbwarfare.client.overlay; import com.atsuishio.superbwarfare.ModUtils; import com.atsuishio.superbwarfare.client.RenderHelper; -import com.atsuishio.superbwarfare.entity.DroneEntity; +import com.atsuishio.superbwarfare.entity.vehicle.DroneEntity; import com.atsuishio.superbwarfare.event.ClientEventHandler; import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.tools.EntityFindUtil; @@ -32,8 +32,8 @@ import java.text.DecimalFormat; import java.util.List; import static com.atsuishio.superbwarfare.client.RenderHelper.preciseBlit; -import static com.atsuishio.superbwarfare.entity.DroneEntity.AMMO; -import static com.atsuishio.superbwarfare.entity.DroneEntity.KAMIKAZE_MODE; +import static com.atsuishio.superbwarfare.entity.vehicle.DroneEntity.AMMO; +import static com.atsuishio.superbwarfare.entity.vehicle.DroneEntity.KAMIKAZE_MODE; @Mod.EventBusSubscriber(value = Dist.CLIENT) public class DroneUIOverlay { diff --git a/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/DroneRenderer.java b/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/DroneRenderer.java index 54800881b..de9138c60 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/DroneRenderer.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/DroneRenderer.java @@ -2,7 +2,7 @@ package com.atsuishio.superbwarfare.client.renderer.entity; import com.atsuishio.superbwarfare.client.model.entity.DroneModel; -import com.atsuishio.superbwarfare.entity.DroneEntity; +import com.atsuishio.superbwarfare.entity.vehicle.DroneEntity; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.math.Axis; diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/projectile/ProjectileEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/projectile/ProjectileEntity.java index 91711876f..26ef79353 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/projectile/ProjectileEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/projectile/ProjectileEntity.java @@ -3,6 +3,7 @@ package com.atsuishio.superbwarfare.entity.projectile; import com.atsuishio.superbwarfare.ModUtils; import com.atsuishio.superbwarfare.block.BarbedWireBlock; import com.atsuishio.superbwarfare.entity.*; +import com.atsuishio.superbwarfare.entity.vehicle.DroneEntity; import com.atsuishio.superbwarfare.entity.vehicle.IArmedVehicleEntity; import com.atsuishio.superbwarfare.init.*; import com.atsuishio.superbwarfare.item.Transcript; diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/projectile/RgoGrenadeEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/projectile/RgoGrenadeEntity.java index bc248e042..3e00fb8e8 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/projectile/RgoGrenadeEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/projectile/RgoGrenadeEntity.java @@ -3,7 +3,7 @@ package com.atsuishio.superbwarfare.entity.projectile; import com.atsuishio.superbwarfare.ModUtils; import com.atsuishio.superbwarfare.config.server.ExplosionConfig; import com.atsuishio.superbwarfare.config.server.ExplosionDestroyConfig; -import com.atsuishio.superbwarfare.entity.DroneEntity; +import com.atsuishio.superbwarfare.entity.vehicle.DroneEntity; import com.atsuishio.superbwarfare.init.ModDamageTypes; import com.atsuishio.superbwarfare.init.ModEntities; import com.atsuishio.superbwarfare.init.ModItems; diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/DroneEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/DroneEntity.java similarity index 99% rename from src/main/java/com/atsuishio/superbwarfare/entity/DroneEntity.java rename to src/main/java/com/atsuishio/superbwarfare/entity/vehicle/DroneEntity.java index 57cac6476..10e0df8e8 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/DroneEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/DroneEntity.java @@ -1,12 +1,12 @@ -package com.atsuishio.superbwarfare.entity; +package com.atsuishio.superbwarfare.entity.vehicle; import com.atsuishio.superbwarfare.config.server.ExplosionConfig; import com.atsuishio.superbwarfare.config.server.ExplosionDestroyConfig; +import com.atsuishio.superbwarfare.entity.C4Entity; import com.atsuishio.superbwarfare.entity.projectile.FlareDecoyEntity; import com.atsuishio.superbwarfare.entity.projectile.LaserEntity; import com.atsuishio.superbwarfare.entity.projectile.ProjectileEntity; import com.atsuishio.superbwarfare.entity.projectile.RgoGrenadeEntity; -import com.atsuishio.superbwarfare.entity.vehicle.MobileVehicleEntity; import com.atsuishio.superbwarfare.init.ModDamageTypes; import com.atsuishio.superbwarfare.init.ModEntities; import com.atsuishio.superbwarfare.init.ModItems; @@ -609,4 +609,9 @@ public class DroneEntity extends MobileVehicleEntity implements GeoEntity { } super.onRemovedFromWorld(); } + + @Override + public boolean canCrushEntities() { + return false; + } } diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/MobileVehicleEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/MobileVehicleEntity.java index 9484100bd..9da7866ce 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/MobileVehicleEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/MobileVehicleEntity.java @@ -1,7 +1,6 @@ package com.atsuishio.superbwarfare.entity.vehicle; import com.atsuishio.superbwarfare.entity.C4Entity; -import com.atsuishio.superbwarfare.entity.DroneEntity; import com.atsuishio.superbwarfare.entity.TargetEntity; import com.atsuishio.superbwarfare.entity.projectile.FlareDecoyEntity; import com.atsuishio.superbwarfare.entity.projectile.LaserEntity; @@ -139,7 +138,7 @@ public class MobileVehicleEntity extends EnergyVehicleEntity { .toList(); for (var entity : entities) { - Vec3 toVec = this.position().add(new Vec3(1, 1 ,1).scale(random.nextFloat() * 0.01f + 1f)).vectorTo(entity.position()); + Vec3 toVec = this.position().add(new Vec3(1, 1, 1).scale(random.nextFloat() * 0.01f + 1f)).vectorTo(entity.position()); Vec3 velAdd = toVec.normalize().scale(Math.max((this.getBbWidth() + 2) - position().distanceTo(entity.position()), 0) * 0.002); double entitySize = entity.getBbWidth() * entity.getBbHeight(); double thisSize = this.getBbWidth() * this.getBbHeight(); @@ -153,10 +152,11 @@ public class MobileVehicleEntity extends EnergyVehicleEntity { /** * 撞击实体并造成伤害 + * * @param velocity 动量 */ public void crushEntities(Vec3 velocity) { - if (this instanceof DroneEntity) return; + if (!this.canCrushEntities()) return; if (velocity.horizontalDistance() < 0.25) return; if (isRemoved()) return; var frontBox = getBoundingBox().move(velocity.scale(0.5)); @@ -166,7 +166,8 @@ public class MobileVehicleEntity extends EnergyVehicleEntity { entity -> entity != this && entity != getFirstPassenger() && entity.getVehicle() == null) .stream().filter(entity -> entity.isAlive() && !(entity instanceof ItemEntity || entity instanceof Projectile || entity instanceof ProjectileEntity || entity instanceof LaserEntity || entity instanceof FlareDecoyEntity || entity instanceof AreaEffectCloud || entity instanceof C4Entity) - && !(entity instanceof Player player && (player.isSpectator() || player.isCreative()))) + && !(entity instanceof Player player && (player.isSpectator() || player.isCreative())) + && !entity.getType().getDescriptionId().equals("entity.create.super_glue")) .toList(); for (var entity : entities) { @@ -230,4 +231,8 @@ public class MobileVehicleEntity extends EnergyVehicleEntity { super.addAdditionalSaveData(compound); compound.putFloat("Power", this.entityData.get(POWER)); } + + public boolean canCrushEntities() { + return true; + } } diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/VehicleEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/VehicleEntity.java index bbe8658ac..f3fdb2e16 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/VehicleEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/VehicleEntity.java @@ -1,6 +1,5 @@ package com.atsuishio.superbwarfare.entity.vehicle; -import com.atsuishio.superbwarfare.entity.DroneEntity; import com.atsuishio.superbwarfare.init.ModDamageTypes; import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.init.ModParticleTypes; diff --git a/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java b/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java index 75d0b0311..f15cd448e 100644 --- a/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java @@ -3,7 +3,6 @@ package com.atsuishio.superbwarfare.event; import com.atsuishio.superbwarfare.ModUtils; import com.atsuishio.superbwarfare.client.ClickHandler; import com.atsuishio.superbwarfare.config.client.DisplayConfig; -import com.atsuishio.superbwarfare.entity.DroneEntity; import com.atsuishio.superbwarfare.entity.vehicle.*; import com.atsuishio.superbwarfare.init.*; import com.atsuishio.superbwarfare.item.gun.GunItem; diff --git a/src/main/java/com/atsuishio/superbwarfare/item/Monitor.java b/src/main/java/com/atsuishio/superbwarfare/item/Monitor.java index 775f9627d..687c1cc8e 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/Monitor.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/Monitor.java @@ -1,7 +1,7 @@ package com.atsuishio.superbwarfare.item; import com.atsuishio.superbwarfare.ModUtils; -import com.atsuishio.superbwarfare.entity.DroneEntity; +import com.atsuishio.superbwarfare.entity.vehicle.DroneEntity; import com.atsuishio.superbwarfare.event.ClientEventHandler; import com.atsuishio.superbwarfare.network.message.ResetCameraTypeMessage; import com.atsuishio.superbwarfare.tools.EntityFindUtil; diff --git a/src/main/java/com/atsuishio/superbwarfare/mixins/CameraMixin.java b/src/main/java/com/atsuishio/superbwarfare/mixins/CameraMixin.java index 903f5399c..1e8df990f 100644 --- a/src/main/java/com/atsuishio/superbwarfare/mixins/CameraMixin.java +++ b/src/main/java/com/atsuishio/superbwarfare/mixins/CameraMixin.java @@ -1,6 +1,5 @@ package com.atsuishio.superbwarfare.mixins; -import com.atsuishio.superbwarfare.entity.DroneEntity; import com.atsuishio.superbwarfare.entity.vehicle.*; import com.atsuishio.superbwarfare.event.ClientEventHandler; import com.atsuishio.superbwarfare.init.ModItems; diff --git a/src/main/java/com/atsuishio/superbwarfare/network/message/DroneFireMessage.java b/src/main/java/com/atsuishio/superbwarfare/network/message/DroneFireMessage.java index 504c6b515..bf33bc17d 100644 --- a/src/main/java/com/atsuishio/superbwarfare/network/message/DroneFireMessage.java +++ b/src/main/java/com/atsuishio/superbwarfare/network/message/DroneFireMessage.java @@ -1,6 +1,6 @@ package com.atsuishio.superbwarfare.network.message; -import com.atsuishio.superbwarfare.entity.DroneEntity; +import com.atsuishio.superbwarfare.entity.vehicle.DroneEntity; import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.tools.EntityFindUtil; import com.atsuishio.superbwarfare.tools.SeekTool; diff --git a/src/main/java/com/atsuishio/superbwarfare/network/message/InteractMessage.java b/src/main/java/com/atsuishio/superbwarfare/network/message/InteractMessage.java index cf00a113a..ebe3a1ce7 100644 --- a/src/main/java/com/atsuishio/superbwarfare/network/message/InteractMessage.java +++ b/src/main/java/com/atsuishio/superbwarfare/network/message/InteractMessage.java @@ -1,6 +1,6 @@ package com.atsuishio.superbwarfare.network.message; -import com.atsuishio.superbwarfare.entity.DroneEntity; +import com.atsuishio.superbwarfare.entity.vehicle.DroneEntity; import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.init.ModTags; import com.atsuishio.superbwarfare.tools.EntityFindUtil; diff --git a/src/main/java/com/atsuishio/superbwarfare/tools/EntityFindUtil.java b/src/main/java/com/atsuishio/superbwarfare/tools/EntityFindUtil.java index 013e11bb6..3c266c1d8 100644 --- a/src/main/java/com/atsuishio/superbwarfare/tools/EntityFindUtil.java +++ b/src/main/java/com/atsuishio/superbwarfare/tools/EntityFindUtil.java @@ -1,6 +1,6 @@ package com.atsuishio.superbwarfare.tools; -import com.atsuishio.superbwarfare.entity.DroneEntity; +import com.atsuishio.superbwarfare.entity.vehicle.DroneEntity; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.Entity;