调整封闭载具判定
This commit is contained in:
parent
2ab2a48f3c
commit
4f087dc2ec
12 changed files with 61 additions and 4 deletions
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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<Quaternionf, Quaternionf> getPassengerRotation(Entity entity, float tickDelta) {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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) !
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue