From 069d303c178f56cdd99f4429b43bc50ac43c9b5f Mon Sep 17 00:00:00 2001 From: Atsuihsio <842960157@qq.com> Date: Sun, 29 Dec 2024 00:56:50 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=B1=BB=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../superbwarfare/client/ClickHandler.java | 12 ++++----- .../model/entity/ProjectileEntityModel.java | 4 +-- .../client/screens/VehicleHudOverlay.java | 6 ++--- ...leEntity.java => IArmedVehicleEntity.java} | 2 +- .../superbwarfare/entity/ICannonEntity.java | 2 +- .../superbwarfare/entity/SpeedboatEntity.java | 2 +- .../entity/WheelChairEntity.java | 26 +------------------ .../entity/projectile/ProjectileEntity.java | 4 +-- .../event/ClientEventHandler.java | 15 +++++++---- .../event/LivingEventHandler.java | 6 ++--- .../mixins/MouseHandlerMixin.java | 4 +-- .../network/message/VehicleFireMessage.java | 4 +-- .../network/message/ZoomMessage.java | 6 ++--- .../superbwarfare/tools/SeekTool.java | 8 +++--- 14 files changed, 41 insertions(+), 60 deletions(-) rename src/main/java/com/atsuishio/superbwarfare/entity/{IVehicleEntity.java => IArmedVehicleEntity.java} (87%) diff --git a/src/main/java/com/atsuishio/superbwarfare/client/ClickHandler.java b/src/main/java/com/atsuishio/superbwarfare/client/ClickHandler.java index c81adc3d8..b17fc272d 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/ClickHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/ClickHandler.java @@ -91,7 +91,7 @@ public class ClickHandler { if (player.getMainHandItem().is(ModTags.Items.GUN) || stack.is(ModItems.MONITOR.get()) || player.hasEffect(ModMobEffects.SHOCK.get()) - || (player.getVehicle() instanceof IVehicleEntity && !(player.getVehicle() instanceof WheelChairEntity))) { + || (player.getVehicle() instanceof IArmedVehicleEntity && !(player.getVehicle() instanceof WheelChairEntity))) { if (button == GLFW.GLFW_MOUSE_BUTTON_LEFT) { event.setCanceled(true); } @@ -118,7 +118,7 @@ public class ClickHandler { if ((player.getMainHandItem().is(ModTags.Items.GUN) && !(player.getVehicle() instanceof ICannonEntity)) || stack.is(ModItems.MONITOR.get()) || (player.getVehicle() instanceof ICannonEntity) - || (player.getVehicle() instanceof IVehicleEntity iVehicle && iVehicle.isDriver(player) && stack.is(ItemStack.EMPTY.getItem())) + || (player.getVehicle() instanceof IArmedVehicleEntity iVehicle && iVehicle.isDriver(player) && stack.is(ItemStack.EMPTY.getItem())) || (stack.is(Items.SPYGLASS) && player.isScoping() && player.getOffhandItem().is(ModItems.FIRING_PARAMETERS.get()))) { if (button == ModKeyMappings.FIRE.getKey().getValue()) { handleWeaponFirePress(player, stack); @@ -162,7 +162,7 @@ public class ClickHandler { event.setCanceled(true); } - if (player.getVehicle() instanceof IVehicleEntity iVehicle && iVehicle.isDriver(player) && ClientEventHandler.zoom) { + if (player.getVehicle() instanceof IArmedVehicleEntity iVehicle && iVehicle.isDriver(player) && ClientEventHandler.zoom) { ClientEventHandler.vehicleFov = Mth.clamp(ClientEventHandler.vehicleFov + 0.4 * scroll, 1, 6); event.setCanceled(true); } @@ -244,7 +244,7 @@ public class ClickHandler { if ((player.getMainHandItem().is(ModTags.Items.GUN) && !(player.getVehicle() instanceof ICannonEntity)) || stack.is(ModItems.MONITOR.get()) || (player.getVehicle() instanceof ICannonEntity) - || (player.getVehicle() instanceof IVehicleEntity iVehicle && iVehicle.isDriver(player) && stack.is(ItemStack.EMPTY.getItem())) + || (player.getVehicle() instanceof IArmedVehicleEntity iVehicle && iVehicle.isDriver(player) && stack.is(ItemStack.EMPTY.getItem())) || (stack.is(Items.SPYGLASS) && player.isScoping() && player.getOffhandItem().is(ModItems.FIRING_PARAMETERS.get()))) { if (key == ModKeyMappings.FIRE.getKey().getValue()) { handleWeaponFirePress(player, stack); @@ -300,7 +300,7 @@ public class ClickHandler { return; } - if (player.getVehicle() instanceof IVehicleEntity iVehicle && iVehicle.isDriver(player)) { + if (player.getVehicle() instanceof IArmedVehicleEntity iVehicle && iVehicle.isDriver(player)) { ClientEventHandler.holdFire = true; } @@ -394,7 +394,7 @@ public class ClickHandler { } private static void handleVehicleMove(int key, int state, Player player) { - if (player.getVehicle() != null && player.getVehicle() instanceof IVehicleEntity && player.getVehicle().getFirstPassenger() == player) { + if (player.getVehicle() != null && player.getVehicle() instanceof IArmedVehicleEntity && player.getVehicle().getFirstPassenger() == player) { var options = Minecraft.getInstance().options; diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/entity/ProjectileEntityModel.java b/src/main/java/com/atsuishio/superbwarfare/client/model/entity/ProjectileEntityModel.java index 9bed90adc..a2c363f87 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/entity/ProjectileEntityModel.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/entity/ProjectileEntityModel.java @@ -1,7 +1,7 @@ package com.atsuishio.superbwarfare.client.model.entity; import com.atsuishio.superbwarfare.ModUtils; -import com.atsuishio.superbwarfare.entity.IVehicleEntity; +import com.atsuishio.superbwarfare.entity.IArmedVehicleEntity; import com.atsuishio.superbwarfare.entity.projectile.ProjectileEntity; import com.atsuishio.superbwarfare.event.ClientEventHandler; import com.atsuishio.superbwarfare.init.ModItems; @@ -30,7 +30,7 @@ public class ProjectileEntityModel extends GeoModel { || player.getMainHandItem().is(ModItems.GLOCK_17.get()) || player.getMainHandItem().is(ModItems.GLOCK_18.get()) || player.getMainHandItem().is(ModItems.BOCEK.get()) - || (player.getVehicle() instanceof IVehicleEntity iVehicle && iVehicle.isDriver(player) && !player.getMainHandItem().is(ModTags.Items.GUN))) { + || (player.getVehicle() instanceof IArmedVehicleEntity iVehicle && iVehicle.isDriver(player) && !player.getMainHandItem().is(ModTags.Items.GUN))) { return new ResourceLocation(ModUtils.MODID, "geo/projectile_entity.geo.json"); } else { return new ResourceLocation(ModUtils.MODID, "geo/projectile_entity2.geo.json"); diff --git a/src/main/java/com/atsuishio/superbwarfare/client/screens/VehicleHudOverlay.java b/src/main/java/com/atsuishio/superbwarfare/client/screens/VehicleHudOverlay.java index a89f2cf21..007b6e1e2 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/screens/VehicleHudOverlay.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/screens/VehicleHudOverlay.java @@ -73,7 +73,7 @@ public class VehicleHudOverlay { PoseStack poseStack = event.getGuiGraphics().pose(); - if (vehicle instanceof IVehicleEntity iVehicle && iVehicle.getAmmoCount(player) != -1) { + if (vehicle instanceof IArmedVehicleEntity iVehicle && iVehicle.getAmmoCount(player) != -1) { boolean iCharge = iVehicle instanceof IChargeEntity; @@ -121,10 +121,10 @@ public class VehicleHudOverlay { private static boolean shouldRenderCrossHair(Player player) { if (player == null) return false; return !player.isSpectator() - && (player.getVehicle() != null && player.getVehicle() instanceof IVehicleEntity); + && (player.getVehicle() != null && player.getVehicle() instanceof IArmedVehicleEntity); } - private static String getVehicleAmmoType(ItemStack stack, IVehicleEntity iVehicle) { + private static String getVehicleAmmoType(ItemStack stack, IArmedVehicleEntity iVehicle) { if (stack.getItem() == ModItems.AP_5_INCHES.get() && iVehicle instanceof ICannonEntity) { return Component.translatable("des.superbwarfare.tips.ammo_type.ap").getString(); } diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/IVehicleEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/IArmedVehicleEntity.java similarity index 87% rename from src/main/java/com/atsuishio/superbwarfare/entity/IVehicleEntity.java rename to src/main/java/com/atsuishio/superbwarfare/entity/IArmedVehicleEntity.java index b6fe04b78..fa10e7fff 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/IVehicleEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/IArmedVehicleEntity.java @@ -2,7 +2,7 @@ package com.atsuishio.superbwarfare.entity; import net.minecraft.world.entity.player.Player; -public interface IVehicleEntity { +public interface IArmedVehicleEntity { void vehicleShoot(Player player); diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/ICannonEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/ICannonEntity.java index 3537d3060..082e5b2d0 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/ICannonEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/ICannonEntity.java @@ -1,5 +1,5 @@ package com.atsuishio.superbwarfare.entity; -public interface ICannonEntity extends IVehicleEntity { +public interface ICannonEntity extends IArmedVehicleEntity { } diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/SpeedboatEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/SpeedboatEntity.java index b2c0eb556..1581f3bf3 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/SpeedboatEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/SpeedboatEntity.java @@ -79,7 +79,7 @@ import java.util.List; import static com.atsuishio.superbwarfare.tools.ParticleTool.sendParticle; -public class SpeedboatEntity extends MobileVehicleEntity implements GeoEntity, IChargeEntity, IVehicleEntity, HasCustomInventoryScreen, ContainerEntity { +public class SpeedboatEntity extends MobileVehicleEntity implements GeoEntity, IChargeEntity, IArmedVehicleEntity, HasCustomInventoryScreen, ContainerEntity { public static final EntityDataAccessor FIRE_ANIM = SynchedEntityData.defineId(SpeedboatEntity.class, EntityDataSerializers.INT); public static final EntityDataAccessor DELTA_ROT = SynchedEntityData.defineId(SpeedboatEntity.class, EntityDataSerializers.FLOAT); diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/WheelChairEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/WheelChairEntity.java index 0c835c8b3..707b81f13 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/WheelChairEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/WheelChairEntity.java @@ -34,7 +34,7 @@ import software.bernie.geckolib.util.GeckoLibUtil; import java.util.List; -public class WheelChairEntity extends MobileVehicleEntity implements GeoEntity, IVehicleEntity { +public class WheelChairEntity extends MobileVehicleEntity implements GeoEntity { private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this); public static final float MAX_HEALTH = 50; @@ -278,10 +278,6 @@ public class WheelChairEntity extends MobileVehicleEntity implements GeoEntity, } } - @Override - public void vehicleShoot(Player player) { - } - @Override public void registerControllers(AnimatableManager.ControllerRegistrar data) { } @@ -296,26 +292,6 @@ public class WheelChairEntity extends MobileVehicleEntity implements GeoEntity, return MAX_HEALTH; } - @Override - public boolean isDriver(Player player) { - return player == this.getFirstPassenger(); - } - - @Override - public int mainGunRpm() { - return 0; - } - - @Override - public boolean canShoot(Player player) { - return true; - } - - @Override - public int getAmmoCount(Player player) { - return -1; - } - @Override public int getMaxEnergy() { return MAX_ENERGY; 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 97fb55f9e..945cd69fe 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/projectile/ProjectileEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/projectile/ProjectileEntity.java @@ -221,11 +221,11 @@ public class ProjectileEntity extends Entity implements IEntityAdditionalSpawnDa float eyeHeight = entity.getEyeHeight(); float bodyHeight = entity.getBbHeight(); if ((eyeHeight - 0.35) < hitBoxPos.y && hitBoxPos.y < (eyeHeight + 0.4) && - !(entity instanceof ClaymoreEntity || entity instanceof MortarEntity || entity instanceof IVehicleEntity || entity instanceof DroneEntity)) { + !(entity instanceof ClaymoreEntity || entity instanceof MortarEntity || entity instanceof IArmedVehicleEntity || entity instanceof DroneEntity)) { headshot = true; } if (hitBoxPos.y < (0.33 * bodyHeight) && !(entity instanceof ClaymoreEntity || entity instanceof MortarEntity || - entity instanceof IVehicleEntity || entity instanceof DroneEntity)) { + entity instanceof IArmedVehicleEntity || entity instanceof DroneEntity)) { legShot = true; } diff --git a/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java b/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java index c434f11fb..160c26370 100644 --- a/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java @@ -4,8 +4,8 @@ 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.IArmedVehicleEntity; import com.atsuishio.superbwarfare.entity.ICannonEntity; -import com.atsuishio.superbwarfare.entity.IVehicleEntity; import com.atsuishio.superbwarfare.entity.SpeedboatEntity; import com.atsuishio.superbwarfare.init.*; import com.atsuishio.superbwarfare.network.ModVariables; @@ -220,7 +220,12 @@ public class ClientEventHandler { if (level == null) return; ItemStack stack = player.getMainHandItem(); - if (!stack.is(ModTags.Items.GUN)) return; + if (!stack.is(ModTags.Items.GUN)) { + clientTimer.stop(); + fireSpread = 0; + gunSpread = 0; + return; + } var perk = PerkHelper.getPerkByType(stack, Perk.Type.AMMO); int mode = GunsTool.getGunIntTag(stack, "FireMode"); @@ -553,7 +558,7 @@ public class ClientEventHandler { holdFire = false; } - if (player.getVehicle() instanceof IVehicleEntity iVehicle && iVehicle.isDriver(player) && iVehicle.canShoot(player)) { + if (player.getVehicle() instanceof IArmedVehicleEntity iVehicle && iVehicle.isDriver(player) && iVehicle.canShoot(player)) { int rpm = iVehicle.mainGunRpm(); if (rpm == 0) { rpm = 240; @@ -585,7 +590,7 @@ public class ClientEventHandler { } } - public static void playVehicleClientSounds(Player player, IVehicleEntity iVehicle) { + public static void playVehicleClientSounds(Player player, IArmedVehicleEntity iVehicle) { if (iVehicle instanceof SpeedboatEntity speedboat) { float pitch = speedboat.getEntityData().get(HEAT) <= 60 ? 1 : (float) (1 - 0.011 * java.lang.Math.abs(60 - speedboat.getEntityData().get(HEAT))); player.playSound(ModSounds.M_2_FIRE_1P.get(), 1f, pitch); @@ -1194,7 +1199,7 @@ public class ClientEventHandler { event.setFOV(event.getFOV() / droneFovLerp); } - if (player.getVehicle() instanceof IVehicleEntity && !(player.getVehicle() instanceof ICannonEntity) && zoom) { + if (player.getVehicle() instanceof IArmedVehicleEntity && !(player.getVehicle() instanceof ICannonEntity) && zoom) { vehicleFovLerp = Mth.lerp(0.1 * Minecraft.getInstance().getDeltaFrameTime(), vehicleFovLerp, vehicleFov); event.setFOV(event.getFOV() / vehicleFovLerp); } diff --git a/src/main/java/com/atsuishio/superbwarfare/event/LivingEventHandler.java b/src/main/java/com/atsuishio/superbwarfare/event/LivingEventHandler.java index 52f3f208d..aab84ce2b 100644 --- a/src/main/java/com/atsuishio/superbwarfare/event/LivingEventHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/event/LivingEventHandler.java @@ -93,7 +93,7 @@ public class LivingEventHandler { if (vehicle != null) { if (vehicle instanceof ICannonEntity) { event.setCanceled(true); - } else if (vehicle instanceof IVehicleEntity) { + } else if (vehicle instanceof IArmedVehicleEntity) { event.setAmount(0.3f * event.getAmount()); } } @@ -717,7 +717,7 @@ public class LivingEventHandler { if (!(sourceEntity instanceof Player player)) return; ItemStack stack = player.getMainHandItem(); - if (sourceEntity.getVehicle() instanceof IVehicleEntity vehicle && DamageTypeTool.isGunDamage(source) && !stack.is(ModTags.Items.GUN)) { + if (sourceEntity.getVehicle() instanceof IArmedVehicleEntity vehicle && DamageTypeTool.isGunDamage(source) && !stack.is(ModTags.Items.GUN)) { var drops = event.getDrops(); if (vehicle instanceof ContainerEntity containerEntity) { drops.forEach(itemEntity -> { @@ -731,7 +731,7 @@ public class LivingEventHandler { } } - if (sourceEntity.getVehicle() instanceof IVehicleEntity vehicle && source.is(ModDamageTypes.VEHICLE_STRIKE)) { + if (sourceEntity.getVehicle() instanceof IArmedVehicleEntity vehicle && source.is(ModDamageTypes.VEHICLE_STRIKE)) { var drops = event.getDrops(); if (vehicle instanceof ContainerEntity containerEntity) { drops.forEach(itemEntity -> { diff --git a/src/main/java/com/atsuishio/superbwarfare/mixins/MouseHandlerMixin.java b/src/main/java/com/atsuishio/superbwarfare/mixins/MouseHandlerMixin.java index 14ae4a2e2..97d454f8b 100644 --- a/src/main/java/com/atsuishio/superbwarfare/mixins/MouseHandlerMixin.java +++ b/src/main/java/com/atsuishio/superbwarfare/mixins/MouseHandlerMixin.java @@ -1,7 +1,7 @@ package com.atsuishio.superbwarfare.mixins; +import com.atsuishio.superbwarfare.entity.IArmedVehicleEntity; import com.atsuishio.superbwarfare.entity.ICannonEntity; -import com.atsuishio.superbwarfare.entity.IVehicleEntity; import com.atsuishio.superbwarfare.event.ClientEventHandler; import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.init.ModMobEffects; @@ -53,7 +53,7 @@ public class MouseHandlerMixin { return 0.33 / (1 + 0.08 * (droneFovLerp - 1)); } - if (player.getVehicle() instanceof IVehicleEntity iVehicle && iVehicle.isDriver(player) && ClientEventHandler.zoom) { + if (player.getVehicle() instanceof IArmedVehicleEntity iVehicle && iVehicle.isDriver(player) && ClientEventHandler.zoom) { return 0.33 / (1 + 0.08 * (vehicleFovLerp - 1)); } diff --git a/src/main/java/com/atsuishio/superbwarfare/network/message/VehicleFireMessage.java b/src/main/java/com/atsuishio/superbwarfare/network/message/VehicleFireMessage.java index fa7003f4a..a0c6b47b9 100644 --- a/src/main/java/com/atsuishio/superbwarfare/network/message/VehicleFireMessage.java +++ b/src/main/java/com/atsuishio/superbwarfare/network/message/VehicleFireMessage.java @@ -1,6 +1,6 @@ package com.atsuishio.superbwarfare.network.message; -import com.atsuishio.superbwarfare.entity.IVehicleEntity; +import com.atsuishio.superbwarfare.entity.IArmedVehicleEntity; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.world.level.Level; import net.minecraftforge.network.NetworkEvent; @@ -34,7 +34,7 @@ public class VehicleFireMessage { return; } - if (player.getVehicle() instanceof IVehicleEntity iVehicle) { + if (player.getVehicle() instanceof IArmedVehicleEntity iVehicle) { iVehicle.vehicleShoot(player); } } diff --git a/src/main/java/com/atsuishio/superbwarfare/network/message/ZoomMessage.java b/src/main/java/com/atsuishio/superbwarfare/network/message/ZoomMessage.java index 8adcca8ce..7979f0740 100644 --- a/src/main/java/com/atsuishio/superbwarfare/network/message/ZoomMessage.java +++ b/src/main/java/com/atsuishio/superbwarfare/network/message/ZoomMessage.java @@ -1,7 +1,7 @@ package com.atsuishio.superbwarfare.network.message; import com.atsuishio.superbwarfare.ModUtils; -import com.atsuishio.superbwarfare.entity.IVehicleEntity; +import com.atsuishio.superbwarfare.entity.IArmedVehicleEntity; import com.atsuishio.superbwarfare.entity.WheelChairEntity; import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.init.ModSounds; @@ -53,7 +53,7 @@ public class ZoomMessage { capability.syncPlayerVariables(player); }); - if (player.isPassenger() && player.getVehicle() instanceof IVehicleEntity && !(player.getVehicle() instanceof WheelChairEntity)) { + if (player.isPassenger() && player.getVehicle() instanceof IArmedVehicleEntity && !(player.getVehicle() instanceof WheelChairEntity)) { SoundTool.playLocalSound(player, ModSounds.CANNON_ZOOM_IN.get(), 2, 1); } } @@ -65,7 +65,7 @@ public class ZoomMessage { capability.syncPlayerVariables(player); }); - if (player.isPassenger() && player.getVehicle() instanceof IVehicleEntity && !(player.getVehicle() instanceof WheelChairEntity)) { + if (player.isPassenger() && player.getVehicle() instanceof IArmedVehicleEntity && !(player.getVehicle() instanceof WheelChairEntity)) { SoundTool.playLocalSound(player, ModSounds.CANNON_ZOOM_OUT.get(), 2, 1); } diff --git a/src/main/java/com/atsuishio/superbwarfare/tools/SeekTool.java b/src/main/java/com/atsuishio/superbwarfare/tools/SeekTool.java index d8305f5b5..aa896400b 100644 --- a/src/main/java/com/atsuishio/superbwarfare/tools/SeekTool.java +++ b/src/main/java/com/atsuishio/superbwarfare/tools/SeekTool.java @@ -1,6 +1,6 @@ package com.atsuishio.superbwarfare.tools; -import com.atsuishio.superbwarfare.entity.IVehicleEntity; +import com.atsuishio.superbwarfare.entity.IArmedVehicleEntity; import com.atsuishio.superbwarfare.entity.projectile.ProjectileEntity; import net.minecraft.core.BlockPos; import net.minecraft.util.Mth; @@ -46,7 +46,7 @@ public class SeekTool { && e != entity && e.isAlive() && !(e instanceof ItemEntity || e instanceof ExperienceOrb || e instanceof HangingEntity || e instanceof ProjectileEntity || e instanceof Projectile || e instanceof ArmorStand) - && (e instanceof LivingEntity || e instanceof IVehicleEntity) + && (e instanceof LivingEntity || e instanceof IArmedVehicleEntity) && !(e instanceof Player player && (player.isSpectator())) && (!e.isAlliedTo(entity) || e.getTeam() == null || e.getTeam().getName().equals("TDM"))) { return level.clip(new ClipContext(entity.getEyePosition(), e.getEyePosition(), @@ -63,7 +63,7 @@ public class SeekTool { && e != entity && e.isAlive() && !(e instanceof ItemEntity || e instanceof ExperienceOrb || e instanceof HangingEntity || e instanceof ProjectileEntity || e instanceof Projectile || e instanceof ArmorStand) - && (e instanceof LivingEntity || e instanceof IVehicleEntity) + && (e instanceof LivingEntity || e instanceof IArmedVehicleEntity) && !(e instanceof Player player && (player.isCreative() || player.isSpectator())) && (!e.isAlliedTo(entity) || e.getTeam() == null || e.getTeam().getName().equals("TDM"))) { return level.clip(new ClipContext(entity.getEyePosition(), e.getEyePosition(), @@ -78,7 +78,7 @@ public class SeekTool { .filter(e -> e.distanceToSqr(pos.getX(), pos.getY(), pos.getZ()) <= range * range && e.isAlive() && !(e instanceof ItemEntity || e instanceof ExperienceOrb || e instanceof HangingEntity || e instanceof ProjectileEntity || e instanceof Projectile || e instanceof ArmorStand) - && (e instanceof LivingEntity || e instanceof IVehicleEntity) + && (e instanceof LivingEntity || e instanceof IArmedVehicleEntity) && !(e instanceof Player player && (player.isCreative() || player.isSpectator()))) .toList(); }