From cb16663ea828ccfa76dd74984851e0e66772bc82 Mon Sep 17 00:00:00 2001 From: Atsuishio <842960157@qq.com> Date: Mon, 14 Jul 2025 01:32:51 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E6=AD=A5=E6=B7=BB=E5=8A=A0=E7=81=AB?= =?UTF-8?q?=E7=AE=AD=E7=82=AE=E5=B0=BE=E7=84=B0=E4=BC=A4=E5=AE=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/vehicle/Type63Entity.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Type63Entity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Type63Entity.java index e0389cb9e..b593673dc 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Type63Entity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Type63Entity.java @@ -29,11 +29,14 @@ import net.minecraft.util.Mth; import net.minecraft.world.Container; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Explosion; import net.minecraft.world.level.Level; +import net.minecraft.world.level.entity.EntityTypeTest; +import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; import net.neoforged.neoforge.event.EventHooks; import org.jetbrains.annotations.NotNull; @@ -234,6 +237,23 @@ public class Type63Entity extends ContainerMobileVehicleEntity implements GeoEnt level().addFreshEntity(entityToSpawn); level().playSound(null, shootPos.x, shootPos.y, shootPos.z, ModSounds.MEDIUM_ROCKET_FIRE.get(), SoundSource.PLAYERS, 4f, random.nextFloat() * 0.1f + 0.95f); + AABB ab = new AABB(getBoundingBox().getCenter(), getBoundingBox().getCenter()).inflate(0.75).move(getShootVector(1).scale(-2)).expandTowards(getShootVector(1).scale(-5)); + + List entities = level().getEntities(EntityTypeTest.forClass(Entity.class), ab, + entity -> entity != this && entity != getFirstPassenger() && entity.getVehicle() == null) + .stream().filter(entity -> entity != this) + .toList(); + + for (var entity : entities) { + entity.hurt(ModDamageTypes.causeBurnDamage(entity.level().registryAccess(), player), 30 - 2 * entity.distanceTo(this)); + double force = 4 - 0.7 * entity.distanceTo(this); + if (level().isClientSide) { + entity.push(-force * getShootVector(1).x, -force * getShootVector(1).y, -force * getShootVector(1).z); + } else { + entity.push(-force * getShootVector(1).x, -force * getShootVector(1).y, -force * getShootVector(1).z); + } + } + cooldown = 10; if (level() instanceof ServerLevel serverLevel) { for (int p = 0; p < 15; p++) {