From da7bb84159a537425a6345b2983da28687052f7f Mon Sep 17 00:00:00 2001 From: Atsuishio <842960157@qq.com> Date: Sun, 13 Apr 2025 01:21:31 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=B1=E9=A5=B5=E5=B0=86=E5=BD=B1=E5=93=8D?= =?UTF-8?q?=E8=9C=82=E7=BE=A4=E6=97=A0=E4=BA=BA=E6=9C=BA=E8=BF=BD=E8=B8=AA?= =?UTF-8?q?=E7=9B=AE=E6=A0=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/renderer/entity/Yx100Renderer.java | 9 +++++---- .../entity/projectile/SwarmDroneEntity.java | 12 +++++++++++- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/Yx100Renderer.java b/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/Yx100Renderer.java index b47455cef..cb092a052 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/Yx100Renderer.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/Yx100Renderer.java @@ -128,10 +128,6 @@ public class Yx100Renderer extends GeoEntityRenderer { } if (name.equals("base")) { - - Player player = Minecraft.getInstance().player; - bone.setHidden(ClientEventHandler.zoomVehicle && animatable.getFirstPassenger() == player); - float a = animatable.getEntityData().get(YAW); float r = (Mth.abs(a) - 90f) / 90f; @@ -154,6 +150,11 @@ public class Yx100Renderer extends GeoEntityRenderer { bone.setRotZ(r2 * Mth.lerp(partialTick, (float) animatable.recoilShakeO, (float) animatable.getRecoilShake()) * Mth.DEG_TO_RAD * 1.5f); } + if (name.equals("root")) { + Player player = Minecraft.getInstance().player; + bone.setHidden(ClientEventHandler.zoomVehicle && animatable.getFirstPassenger() == player); + } + for (int i = 0; i < 41; i++) { float tO = animatable.leftTrackO + 2 * i; float t = animatable.getLeftTrack() + 2 * i; diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/projectile/SwarmDroneEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/projectile/SwarmDroneEntity.java index 89a829ad4..52662b9b2 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/projectile/SwarmDroneEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/projectile/SwarmDroneEntity.java @@ -9,6 +9,7 @@ import com.atsuishio.superbwarfare.network.message.receive.ClientIndicatorMessag import com.atsuishio.superbwarfare.tools.CustomExplosion; import com.atsuishio.superbwarfare.tools.EntityFindUtil; import com.atsuishio.superbwarfare.tools.ParticleTool; +import com.atsuishio.superbwarfare.tools.SeekTool; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.syncher.EntityDataAccessor; @@ -40,6 +41,7 @@ import software.bernie.geckolib.animation.*; import software.bernie.geckolib.util.GeckoLibUtil; import javax.annotation.Nullable; +import java.util.List; public class SwarmDroneEntity extends FastThrowableProjectile implements GeoEntity, DestroyableProjectileEntity { @@ -49,6 +51,7 @@ public class SwarmDroneEntity extends FastThrowableProjectile implements GeoEnti public static final EntityDataAccessor TARGET_Z = SynchedEntityData.defineId(SwarmDroneEntity.class, EntityDataSerializers.FLOAT); public static final EntityDataAccessor HEALTH = SynchedEntityData.defineId(SwarmDroneEntity.class, EntityDataSerializers.FLOAT); private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this); + private boolean distracted = false; private float explosionDamage = 80f; private float explosionRadius = 5f; @@ -189,8 +192,15 @@ public class SwarmDroneEntity extends FastThrowableProjectile implements GeoEnti @Override public void tick() { super.tick(); - Entity entity = EntityFindUtil.findEntity(this.level(), entityData.get(TARGET_UUID)); + List decoy = SeekTool.seekLivingEntities(this, this.level(), 32, 90); + + for (var e : decoy) { + if (e instanceof DecoyEntity decoyEntity && !distracted) { + this.entityData.set(TARGET_UUID, decoyEntity.getStringUUID()); + distracted = true; + } + } if (this.tickCount == 1) { if (!this.level().isClientSide() && this.level() instanceof ServerLevel serverLevel) {