From 4f087dc2eced2332ca1c793b14375db046159b35 Mon Sep 17 00:00:00 2001 From: 17146 <1714673995@qq.com> Date: Fri, 6 Jun 2025 23:24:36 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=B0=81=E9=97=AD=E8=BD=BD?= =?UTF-8?q?=E5=85=B7=E5=88=A4=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../compat/coldsweat/ColdSweatCompatHandler.java | 7 +++++-- .../superbwarfare/entity/vehicle/A10Entity.java | 5 +++++ .../superbwarfare/entity/vehicle/AnnihilatorEntity.java | 5 +++++ .../superbwarfare/entity/vehicle/Bmp2Entity.java | 5 +++++ .../superbwarfare/entity/vehicle/Hpj11Entity.java | 5 +++++ .../superbwarfare/entity/vehicle/Lav150Entity.java | 5 +++++ .../superbwarfare/entity/vehicle/Mk42Entity.java | 5 +++++ .../superbwarfare/entity/vehicle/Mle1934Entity.java | 5 +++++ .../superbwarfare/entity/vehicle/PrismTankEntity.java | 5 +++++ .../superbwarfare/entity/vehicle/Yx100Entity.java | 5 +++++ .../superbwarfare/entity/vehicle/base/VehicleEntity.java | 9 +++++++++ .../superbwarfare/event/LivingEventHandler.java | 4 ++-- 12 files changed, 61 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/atsuishio/superbwarfare/compat/coldsweat/ColdSweatCompatHandler.java b/src/main/java/com/atsuishio/superbwarfare/compat/coldsweat/ColdSweatCompatHandler.java index 4699a345a..8f1f01e89 100644 --- a/src/main/java/com/atsuishio/superbwarfare/compat/coldsweat/ColdSweatCompatHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/compat/coldsweat/ColdSweatCompatHandler.java @@ -1,7 +1,7 @@ package com.atsuishio.superbwarfare.compat.coldsweat; import com.atsuishio.superbwarfare.compat.CompatHolder; -import com.atsuishio.superbwarfare.entity.vehicle.base.ArmedVehicleEntity; +import com.atsuishio.superbwarfare.entity.vehicle.base.EnergyVehicleEntity; import com.momosoftworks.coldsweat.api.util.Temperature; import net.neoforged.fml.ModList; import net.neoforged.neoforge.event.tick.PlayerTickEvent; @@ -10,7 +10,10 @@ public class ColdSweatCompatHandler { public static void onPlayerInVehicle(PlayerTickEvent.Pre event) { var player = event.getEntity(); - if (player.getVehicle() instanceof ArmedVehicleEntity vehicle && vehicle.hidePassenger(player)) { + if (player.getVehicle() instanceof EnergyVehicleEntity vehicle + && vehicle.isEnclosed(vehicle.getSeatIndex(player)) + && vehicle.getEnergy() > 0 + ) { Temperature.set(player, Temperature.Trait.WORLD, 1); } } diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/A10Entity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/A10Entity.java index afe3dd9c5..5c08eeaa4 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/A10Entity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/A10Entity.java @@ -1025,6 +1025,11 @@ public class A10Entity extends ContainerMobileVehicleEntity implements GeoEntity return 0.3; } + @Override + public boolean isEnclosed(int index) { + return true; + } + @OnlyIn(Dist.CLIENT) @Nullable public Pair getPassengerRotation(Entity entity, float tickDelta) { diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/AnnihilatorEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/AnnihilatorEntity.java index 44ca2843c..3a8777c55 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/AnnihilatorEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/AnnihilatorEntity.java @@ -574,6 +574,11 @@ public class AnnihilatorEntity extends EnergyVehicleEntity implements GeoEntity, return zoom ? 0.15 : 0.3; } + @Override + public boolean isEnclosed(int index) { + return true; + } + @OnlyIn(Dist.CLIENT) @Override public @Nullable Vec2 getCameraRotation(float partialTicks, Player player, boolean zoom, boolean isFirstPerson) { diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Bmp2Entity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Bmp2Entity.java index 322117c0c..d64f5ac1d 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Bmp2Entity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Bmp2Entity.java @@ -748,6 +748,11 @@ public class Bmp2Entity extends ContainerMobileVehicleEntity implements GeoEntit return zoom ? 0.22 : 0.27; } + @Override + public boolean isEnclosed(int index) { + return true; + } + @OnlyIn(Dist.CLIENT) @Override public @Nullable Vec2 getCameraRotation(float partialTicks, Player player, boolean zoom, boolean isFirstPerson) { diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Hpj11Entity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Hpj11Entity.java index 477720558..db318a41c 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Hpj11Entity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Hpj11Entity.java @@ -591,6 +591,11 @@ public class Hpj11Entity extends ContainerMobileVehicleEntity implements GeoEnti return zoom ? 0.25 : 0.3; } + @Override + public boolean isEnclosed(int index) { + return true; + } + @OnlyIn(Dist.CLIENT) @Override public @Nullable Vec2 getCameraRotation(float partialTicks, Player player, boolean zoom, boolean isFirstPerson) { diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Lav150Entity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Lav150Entity.java index 7452e63fc..1894fdaff 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Lav150Entity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Lav150Entity.java @@ -611,6 +611,11 @@ public class Lav150Entity extends ContainerMobileVehicleEntity implements GeoEnt return zoom ? 0.23 : 0.3; } + @Override + public boolean isEnclosed(int index) { + return true; + } + @OnlyIn(Dist.CLIENT) @Override public @Nullable Vec2 getCameraRotation(float partialTicks, Player player, boolean zoom, boolean isFirstPerson) { diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Mk42Entity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Mk42Entity.java index 10473f9a3..2b4d320a9 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Mk42Entity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Mk42Entity.java @@ -432,6 +432,11 @@ public class Mk42Entity extends VehicleEntity implements GeoEntity, CannonEntity return zoom ? 0.15 : 0.3; } + @Override + public boolean isEnclosed(int index) { + return true; + } + @OnlyIn(Dist.CLIENT) @Override public @Nullable Vec2 getCameraRotation(float partialTicks, Player player, boolean zoom, boolean isFirstPerson) { diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Mle1934Entity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Mle1934Entity.java index f541eb725..8b74a8b48 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Mle1934Entity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Mle1934Entity.java @@ -501,6 +501,11 @@ public class Mle1934Entity extends VehicleEntity implements GeoEntity, CannonEnt return zoom ? 0.15 : 0.3; } + @Override + public boolean isEnclosed(int index) { + return true; + } + @OnlyIn(Dist.CLIENT) @Override public @Nullable Vec2 getCameraRotation(float partialTicks, Player player, boolean zoom, boolean isFirstPerson) { diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/PrismTankEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/PrismTankEntity.java index 424079a07..aadc0e669 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/PrismTankEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/PrismTankEntity.java @@ -792,6 +792,11 @@ public class PrismTankEntity extends ContainerMobileVehicleEntity implements Geo return zoom ? 0.26 : 0.33; } + @Override + public boolean isEnclosed(int index) { + return index == 0; + } + @OnlyIn(Dist.CLIENT) @Override public @Nullable Vec2 getCameraRotation(float partialTicks, Player player, boolean zoom, boolean isFirstPerson) { diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Yx100Entity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Yx100Entity.java index 9bd194678..f84299f2e 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Yx100Entity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Yx100Entity.java @@ -1254,6 +1254,11 @@ public class Yx100Entity extends ContainerMobileVehicleEntity implements GeoEnti } else return original; } + @Override + public boolean isEnclosed(int index) { + return index != 2; + } + @OnlyIn(Dist.CLIENT) @Override public @Nullable Vec2 getCameraRotation(float partialTicks, Player player, boolean zoom, boolean isFirstPerson) { diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/base/VehicleEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/base/VehicleEntity.java index e72e538e3..ac990bc5f 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/base/VehicleEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/base/VehicleEntity.java @@ -1038,6 +1038,15 @@ public abstract class VehicleEntity extends Entity { return null; } + /** + * 判断每个位置上是否是封闭载具(封闭载具座位具有免疫负面效果等功能) + * + * @param index 位置 + */ + public boolean isEnclosed(int index) { + return false; + } + /** * 渲染载具的第一人称UI * 务必标记 @OnlyIn(Dist.CLIENT) ! diff --git a/src/main/java/com/atsuishio/superbwarfare/event/LivingEventHandler.java b/src/main/java/com/atsuishio/superbwarfare/event/LivingEventHandler.java index dc21eefae..62d3c2f1a 100644 --- a/src/main/java/com/atsuishio/superbwarfare/event/LivingEventHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/event/LivingEventHandler.java @@ -650,8 +650,8 @@ public class LivingEventHandler { if (effectInstance == null) return; if (effectInstance.getEffect().value().getCategory() == MobEffectCategory.HARMFUL - && event.getEntity().getVehicle() instanceof ArmedVehicleEntity vehicle - && vehicle.hidePassenger(event.getEntity()) + && event.getEntity().getVehicle() instanceof VehicleEntity vehicle + && vehicle.isEnclosed(vehicle.getSeatIndex(event.getEntity())) ) { event.setResult(MobEffectEvent.Applicable.Result.DO_NOT_APPLY); }