package zmaster587.advancedRocketry.atmosphere;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import zmaster587.advancedRocketry.api.AdvancedRocketryItems;
import zmaster587.advancedRocketry.api.EntityRocketBase;
import zmaster587.advancedRocketry.api.armor.IFillableArmor;
import zmaster587.advancedRocketry.api.armor.IProtectiveArmor;
import zmaster587.advancedRocketry.integration.CompatibilityMgr;
import zmaster587.advancedRocketry.network.PacketOxygenState;
import zmaster587.libVulpes.network.PacketHandler;
public class AtmosphereLowOxygen extends AtmosphereType {
public AtmosphereLowOxygen(boolean canTick, boolean isBreathable,
String name) {
super(canTick, isBreathable, name);
}
@Override
public String getDisplayMessage() {
return "Warning: No Oxygen detected!";
}
@Override
public void onTick(EntityLivingBase player) {
if(player.worldObj.getTotalWorldTime() % 10 == 0 && !isImmune(player)) {
if(!isImmune(player)) {
player.attackEntityFrom(AtmosphereHandler.vacuumDamage, 1);
if(player instanceof EntityPlayer)
PacketHandler.sendToPlayer(new PacketOxygenState(), (EntityPlayer)player);
}
}
}
@Override
public boolean isImmune(EntityLivingBase player) {
//Checks if player is wearing spacesuit or anything that extends ItemSpaceArmor
ItemStack chest = player.getEquipmentInSlot(3);
ItemStack helm = player.getEquipmentInSlot(4);
//TODO change over to use API #ISealedArmor
return (player instanceof EntityPlayer && ((EntityPlayer)player).capabilities.isCreativeMode)
|| player.ridingEntity instanceof EntityRocketBase ||
helm != null && (helm.getItem() instanceof IProtectiveArmor && ((IProtectiveArmor)helm.getItem()).protectsFromSubstance(this, helm, true) || AtmosphereVacuum.protectsFrom(helm, 1)) &&
chest != null && (chest.getItem() instanceof IProtectiveArmor && ((IProtectiveArmor)chest.getItem()).protectsFromSubstance(this, chest, true) || AtmosphereVacuum.protectsFrom(chest, 2)) &&
((chest.getItem() instanceof IFillableArmor) && ((IFillableArmor)AdvancedRocketryItems.itemSpaceSuit_Chest).decrementAir(chest, 1) > 0);
}
}