diff options
author | Alkalus <Draknyte1@hotmail.com> | 2020-04-10 11:26:47 +0100 |
---|---|---|
committer | Alkalus <Draknyte1@hotmail.com> | 2020-04-10 11:26:47 +0100 |
commit | ddeb9c0c0fc4da536a291aee51019c0d2dd824f8 (patch) | |
tree | 56b1da51853b0b6a00a97fc5a0e21a89ece3566a /src/Java/gtPlusPlus/core/util/minecraft | |
parent | 0c0c4eba9a8a99687c4d157d1658976871bba047 (diff) | |
download | GT5-Unofficial-ddeb9c0c0fc4da536a291aee51019c0d2dd824f8.tar.gz GT5-Unofficial-ddeb9c0c0fc4da536a291aee51019c0d2dd824f8.tar.bz2 GT5-Unofficial-ddeb9c0c0fc4da536a291aee51019c0d2dd824f8.zip |
$ More work overhauling GT/IC2 Hazmat system.
Diffstat (limited to 'src/Java/gtPlusPlus/core/util/minecraft')
3 files changed, 72 insertions, 8 deletions
diff --git a/src/Java/gtPlusPlus/core/util/minecraft/EnergyUtils.java b/src/Java/gtPlusPlus/core/util/minecraft/EnergyUtils.java index 7daefbcc23..8b02ea9c7c 100644 --- a/src/Java/gtPlusPlus/core/util/minecraft/EnergyUtils.java +++ b/src/Java/gtPlusPlus/core/util/minecraft/EnergyUtils.java @@ -1,17 +1,20 @@ package gtPlusPlus.core.util.minecraft; import gregtech.api.util.GT_ModHandler; -import gtPlusPlus.api.objects.Logger; import ic2.api.item.IElectricItem; import ic2.api.item.IElectricItemManager; import ic2.api.item.ISpecialElectricItem; +import net.minecraft.item.ItemRedstone; import net.minecraft.item.ItemStack; public class EnergyUtils { public static class EU { - public static boolean isElectricItem(ItemStack aStack) { + public static boolean isElectricItem(ItemStack aStack) { + if (aStack == null || aStack.getItem() == null || aStack.getItem() instanceof ItemRedstone) { + return false; + } if (aStack.getItem() instanceof ISpecialElectricItem) { return true; } diff --git a/src/Java/gtPlusPlus/core/util/minecraft/EntityUtils.java b/src/Java/gtPlusPlus/core/util/minecraft/EntityUtils.java index 66f9e2453d..fda7b0b738 100644 --- a/src/Java/gtPlusPlus/core/util/minecraft/EntityUtils.java +++ b/src/Java/gtPlusPlus/core/util/minecraft/EntityUtils.java @@ -16,12 +16,11 @@ import gtPlusPlus.core.util.reflect.ReflectionUtils; import ic2.core.IC2Potion; import ic2.core.item.armor.ItemArmorHazmat; import net.minecraft.block.Block; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLiving; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.EnumCreatureType; +import net.minecraft.entity.*; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; import net.minecraft.util.DamageSource; import net.minecraft.util.MathHelper; import net.minecraft.world.World; @@ -103,7 +102,7 @@ public class EntityUtils { duration = radiationLevel*30; } //IC2Potion.radiation.applyTo(entityLiving, duration, damage * 15); - GT_Utility.applyRadioactivity(entityLiving, radiationLevel, stackSize); + applyRadioactivity(entityLiving, radiationLevel, stackSize); } } } @@ -111,6 +110,68 @@ public class EntityUtils { } return false; } + + public static boolean isWearingFullFrostHazmat(EntityLivingBase aEntity) { + for (byte i = 1; i < 5; i++) + if (!HazmatUtils.providesProtetion_Frost(aEntity.getEquipmentInSlot(i))) { + return false; + } + return true; + } + + public static boolean isWearingFullHeatHazmat(EntityLivingBase aEntity) { + for (byte i = 1; i < 5; i++) + if (!HazmatUtils.providesProtetion_Fire(aEntity.getEquipmentInSlot(i))) { + return false; + } + return true; + } + + public static boolean isWearingFullBioHazmat(EntityLivingBase aEntity) { + for (byte i = 1; i < 5; i++) + if (!HazmatUtils.providesProtetion_Biohazard(aEntity.getEquipmentInSlot(i))) { + return false; + } + return true; + } + + public static boolean isWearingFullRadioHazmat(EntityLivingBase aEntity) { + for (byte i = 1; i < 5; i++) + if (!HazmatUtils.providesProtetion_Radiation(aEntity.getEquipmentInSlot(i))) { + return false; + } + return true; + } + + public static boolean isWearingFullElectroHazmat(EntityLivingBase aEntity) { + for (byte i = 1; i < 5; i++) + if (!HazmatUtils.providesProtetion_Electricity(aEntity.getEquipmentInSlot(i))) { + return false; + } + return true; + } + + public static boolean isWearingFullGasHazmat(EntityLivingBase aEntity) { + for (byte i = 1; i < 5; i++) + if (!HazmatUtils.providesProtetion_Gas(aEntity.getEquipmentInSlot(i))) { + return false; + } + return true; + } + + public static boolean applyRadioactivity(EntityLivingBase aEntity, int aLevel, int aAmountOfItems) { + if (aLevel > 0 && aEntity != null && aEntity.getCreatureAttribute() != EnumCreatureAttribute.UNDEAD && aEntity.getCreatureAttribute() != EnumCreatureAttribute.ARTHROPOD && !ItemArmorHazmat.hasCompleteHazmat(aEntity)) { + PotionEffect tEffect = null; + aEntity.addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, aLevel * 140 * aAmountOfItems + Math.max(0, ((tEffect = aEntity.getActivePotionEffect(Potion.moveSlowdown)) == null ? 0 : tEffect.getDuration())), Math.max(0, (5 * aLevel) / 7))); + aEntity.addPotionEffect(new PotionEffect(Potion.digSlowdown.id, aLevel * 150 * aAmountOfItems + Math.max(0, ((tEffect = aEntity.getActivePotionEffect(Potion.digSlowdown)) == null ? 0 : tEffect.getDuration())), Math.max(0, (5 * aLevel) / 7))); + aEntity.addPotionEffect(new PotionEffect(Potion.confusion.id, aLevel * 130 * aAmountOfItems + Math.max(0, ((tEffect = aEntity.getActivePotionEffect(Potion.confusion)) == null ? 0 : tEffect.getDuration())), Math.max(0, (5 * aLevel) / 7))); + aEntity.addPotionEffect(new PotionEffect(Potion.weakness.id, aLevel * 150 * aAmountOfItems + Math.max(0, ((tEffect = aEntity.getActivePotionEffect(Potion.weakness)) == null ? 0 : tEffect.getDuration())), Math.max(0, (5 * aLevel) / 7))); + aEntity.addPotionEffect(new PotionEffect(Potion.hunger.id, aLevel * 130 * aAmountOfItems + Math.max(0, ((tEffect = aEntity.getActivePotionEffect(Potion.hunger)) == null ? 0 : tEffect.getDuration())), Math.max(0, (5 * aLevel) / 7))); + aEntity.addPotionEffect(new PotionEffect(IC2Potion.radiation.id, aLevel * 180 * aAmountOfItems + Math.max(0, ((tEffect = aEntity.getActivePotionEffect(Potion.potionTypes[24])) == null ? 0 : tEffect.getDuration())), Math.max(0, (5 * aLevel) / 7))); + return true; + } + return false; + } public static boolean applyHeatDamageToEntity(final int heatLevel, final World world, final Entity entityHolding){ if (!world.isRemote){ diff --git a/src/Java/gtPlusPlus/core/util/minecraft/HazmatUtils.java b/src/Java/gtPlusPlus/core/util/minecraft/HazmatUtils.java index fc017199b1..f0b93a32dc 100644 --- a/src/Java/gtPlusPlus/core/util/minecraft/HazmatUtils.java +++ b/src/Java/gtPlusPlus/core/util/minecraft/HazmatUtils.java @@ -385,7 +385,7 @@ public class HazmatUtils { return true; } for (GT_ItemStack o : aSet) { - if (o != null) { + if (o != null && o.mItem != null && aStack != null && aStack.getItem() != null) { if (GT_Utility.areStacksEqual(o.toStack(), aStack, true)) { return true; } |