调整封闭载具判定

This commit is contained in:
17146 2025-06-06 23:24:36 +08:00 committed by Light_Quanta
parent 2ab2a48f3c
commit 4f087dc2ec
No known key found for this signature in database
GPG key ID: 11A39A1B8C890959
12 changed files with 61 additions and 4 deletions

View file

@ -1,7 +1,7 @@
package com.atsuishio.superbwarfare.compat.coldsweat; package com.atsuishio.superbwarfare.compat.coldsweat;
import com.atsuishio.superbwarfare.compat.CompatHolder; 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 com.momosoftworks.coldsweat.api.util.Temperature;
import net.neoforged.fml.ModList; import net.neoforged.fml.ModList;
import net.neoforged.neoforge.event.tick.PlayerTickEvent; import net.neoforged.neoforge.event.tick.PlayerTickEvent;
@ -10,7 +10,10 @@ public class ColdSweatCompatHandler {
public static void onPlayerInVehicle(PlayerTickEvent.Pre event) { public static void onPlayerInVehicle(PlayerTickEvent.Pre event) {
var player = event.getEntity(); 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); Temperature.set(player, Temperature.Trait.WORLD, 1);
} }
} }

View file

@ -1025,6 +1025,11 @@ public class A10Entity extends ContainerMobileVehicleEntity implements GeoEntity
return 0.3; return 0.3;
} }
@Override
public boolean isEnclosed(int index) {
return true;
}
@OnlyIn(Dist.CLIENT) @OnlyIn(Dist.CLIENT)
@Nullable @Nullable
public Pair<Quaternionf, Quaternionf> getPassengerRotation(Entity entity, float tickDelta) { public Pair<Quaternionf, Quaternionf> getPassengerRotation(Entity entity, float tickDelta) {

View file

@ -574,6 +574,11 @@ public class AnnihilatorEntity extends EnergyVehicleEntity implements GeoEntity,
return zoom ? 0.15 : 0.3; return zoom ? 0.15 : 0.3;
} }
@Override
public boolean isEnclosed(int index) {
return true;
}
@OnlyIn(Dist.CLIENT) @OnlyIn(Dist.CLIENT)
@Override @Override
public @Nullable Vec2 getCameraRotation(float partialTicks, Player player, boolean zoom, boolean isFirstPerson) { public @Nullable Vec2 getCameraRotation(float partialTicks, Player player, boolean zoom, boolean isFirstPerson) {

View file

@ -748,6 +748,11 @@ public class Bmp2Entity extends ContainerMobileVehicleEntity implements GeoEntit
return zoom ? 0.22 : 0.27; return zoom ? 0.22 : 0.27;
} }
@Override
public boolean isEnclosed(int index) {
return true;
}
@OnlyIn(Dist.CLIENT) @OnlyIn(Dist.CLIENT)
@Override @Override
public @Nullable Vec2 getCameraRotation(float partialTicks, Player player, boolean zoom, boolean isFirstPerson) { public @Nullable Vec2 getCameraRotation(float partialTicks, Player player, boolean zoom, boolean isFirstPerson) {

View file

@ -591,6 +591,11 @@ public class Hpj11Entity extends ContainerMobileVehicleEntity implements GeoEnti
return zoom ? 0.25 : 0.3; return zoom ? 0.25 : 0.3;
} }
@Override
public boolean isEnclosed(int index) {
return true;
}
@OnlyIn(Dist.CLIENT) @OnlyIn(Dist.CLIENT)
@Override @Override
public @Nullable Vec2 getCameraRotation(float partialTicks, Player player, boolean zoom, boolean isFirstPerson) { public @Nullable Vec2 getCameraRotation(float partialTicks, Player player, boolean zoom, boolean isFirstPerson) {

View file

@ -611,6 +611,11 @@ public class Lav150Entity extends ContainerMobileVehicleEntity implements GeoEnt
return zoom ? 0.23 : 0.3; return zoom ? 0.23 : 0.3;
} }
@Override
public boolean isEnclosed(int index) {
return true;
}
@OnlyIn(Dist.CLIENT) @OnlyIn(Dist.CLIENT)
@Override @Override
public @Nullable Vec2 getCameraRotation(float partialTicks, Player player, boolean zoom, boolean isFirstPerson) { public @Nullable Vec2 getCameraRotation(float partialTicks, Player player, boolean zoom, boolean isFirstPerson) {

View file

@ -432,6 +432,11 @@ public class Mk42Entity extends VehicleEntity implements GeoEntity, CannonEntity
return zoom ? 0.15 : 0.3; return zoom ? 0.15 : 0.3;
} }
@Override
public boolean isEnclosed(int index) {
return true;
}
@OnlyIn(Dist.CLIENT) @OnlyIn(Dist.CLIENT)
@Override @Override
public @Nullable Vec2 getCameraRotation(float partialTicks, Player player, boolean zoom, boolean isFirstPerson) { public @Nullable Vec2 getCameraRotation(float partialTicks, Player player, boolean zoom, boolean isFirstPerson) {

View file

@ -501,6 +501,11 @@ public class Mle1934Entity extends VehicleEntity implements GeoEntity, CannonEnt
return zoom ? 0.15 : 0.3; return zoom ? 0.15 : 0.3;
} }
@Override
public boolean isEnclosed(int index) {
return true;
}
@OnlyIn(Dist.CLIENT) @OnlyIn(Dist.CLIENT)
@Override @Override
public @Nullable Vec2 getCameraRotation(float partialTicks, Player player, boolean zoom, boolean isFirstPerson) { public @Nullable Vec2 getCameraRotation(float partialTicks, Player player, boolean zoom, boolean isFirstPerson) {

View file

@ -792,6 +792,11 @@ public class PrismTankEntity extends ContainerMobileVehicleEntity implements Geo
return zoom ? 0.26 : 0.33; return zoom ? 0.26 : 0.33;
} }
@Override
public boolean isEnclosed(int index) {
return index == 0;
}
@OnlyIn(Dist.CLIENT) @OnlyIn(Dist.CLIENT)
@Override @Override
public @Nullable Vec2 getCameraRotation(float partialTicks, Player player, boolean zoom, boolean isFirstPerson) { public @Nullable Vec2 getCameraRotation(float partialTicks, Player player, boolean zoom, boolean isFirstPerson) {

View file

@ -1254,6 +1254,11 @@ public class Yx100Entity extends ContainerMobileVehicleEntity implements GeoEnti
} else return original; } else return original;
} }
@Override
public boolean isEnclosed(int index) {
return index != 2;
}
@OnlyIn(Dist.CLIENT) @OnlyIn(Dist.CLIENT)
@Override @Override
public @Nullable Vec2 getCameraRotation(float partialTicks, Player player, boolean zoom, boolean isFirstPerson) { public @Nullable Vec2 getCameraRotation(float partialTicks, Player player, boolean zoom, boolean isFirstPerson) {

View file

@ -1038,6 +1038,15 @@ public abstract class VehicleEntity extends Entity {
return null; return null;
} }
/**
* 判断每个位置上是否是封闭载具封闭载具座位具有免疫负面效果等功能
*
* @param index 位置
*/
public boolean isEnclosed(int index) {
return false;
}
/** /**
* 渲染载具的第一人称UI * 渲染载具的第一人称UI
* 务必标记 @OnlyIn(Dist.CLIENT) ! * 务必标记 @OnlyIn(Dist.CLIENT) !

View file

@ -650,8 +650,8 @@ public class LivingEventHandler {
if (effectInstance == null) return; if (effectInstance == null) return;
if (effectInstance.getEffect().value().getCategory() == MobEffectCategory.HARMFUL if (effectInstance.getEffect().value().getCategory() == MobEffectCategory.HARMFUL
&& event.getEntity().getVehicle() instanceof ArmedVehicleEntity vehicle && event.getEntity().getVehicle() instanceof VehicleEntity vehicle
&& vehicle.hidePassenger(event.getEntity()) && vehicle.isEnclosed(vehicle.getSeatIndex(event.getEntity()))
) { ) {
event.setResult(MobEffectEvent.Applicable.Result.DO_NOT_APPLY); event.setResult(MobEffectEvent.Applicable.Result.DO_NOT_APPLY);
} }