diff --git a/src/main/java/com/hbm/blocks/bomb/NukeCustom.java b/src/main/java/com/hbm/blocks/bomb/NukeCustom.java index b0ec7d80e..e7bf38641 100644 --- a/src/main/java/com/hbm/blocks/bomb/NukeCustom.java +++ b/src/main/java/com/hbm/blocks/bomb/NukeCustom.java @@ -32,7 +32,6 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MathHelper; import net.minecraft.world.World; -@Untested public class NukeCustom extends BlockContainer implements IBomb { public TileEntityNukeCustom tetn = new TileEntityNukeCustom(); diff --git a/src/main/java/com/hbm/blocks/generic/BlockFallout.java b/src/main/java/com/hbm/blocks/generic/BlockFallout.java index eb00fb56a..de8d7a641 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockFallout.java +++ b/src/main/java/com/hbm/blocks/generic/BlockFallout.java @@ -3,6 +3,8 @@ package com.hbm.blocks.generic; import java.util.ArrayList; import java.util.Random; +import com.hbm.extprop.HbmLivingProps; +import com.hbm.extprop.HbmLivingProps.ContaminationEffect; import com.hbm.interfaces.IItemHazard; import com.hbm.items.ModItems; import com.hbm.modules.ItemHazardModule; @@ -59,7 +61,8 @@ public class BlockFallout extends Block implements IItemHazard { public void onBlockClicked(World world, int x, int y, int z, EntityPlayer player) { if(!world.isRemote) { - player.addPotionEffect(new PotionEffect(HbmPotion.radiation.id, 15 * 20, 1)); + //player.addPotionEffect(new PotionEffect(HbmPotion.radiation.id, 15 * 20, 1)); + HbmLivingProps.addCont(player, new ContaminationEffect(1F, 200, false)); } } diff --git a/src/main/java/com/hbm/blocks/machine/BlockDecon.java b/src/main/java/com/hbm/blocks/machine/BlockDecon.java index 3aeb909a5..4d26e24c1 100644 --- a/src/main/java/com/hbm/blocks/machine/BlockDecon.java +++ b/src/main/java/com/hbm/blocks/machine/BlockDecon.java @@ -45,12 +45,6 @@ public class BlockDecon extends BlockContainer { @Override @SideOnly(Side.CLIENT) - public void randomDisplayTick(World p_149734_1_, int x, int y, int z, Random rand) { - float f = x + 0.5F; - float f1 = y + 1.0F; - float f2 = z + 0.5F; - - p_149734_1_.spawnParticle("cloud", f, f1, f2, 0.0D, 0.1D, 0.0D); - } + public void randomDisplayTick(World p_149734_1_, int x, int y, int z, Random rand) { } } diff --git a/src/main/java/com/hbm/entity/projectile/EntityBulletBase.java b/src/main/java/com/hbm/entity/projectile/EntityBulletBase.java index a8f1d5d11..4fb3bd64b 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityBulletBase.java +++ b/src/main/java/com/hbm/entity/projectile/EntityBulletBase.java @@ -261,13 +261,7 @@ public class EntityBulletBase extends Entity implements IProjectile { //handle entity collision if(movement.entityHit != null) { - DamageSource damagesource = null; - - if (this.shooter == null) { - damagesource = ModDamageSource.causeBulletDamage(this, this); - } else { - damagesource = ModDamageSource.causeBulletDamage(this, shooter); - } + DamageSource damagesource = this.config.getDamage(this, shooter); if(!worldObj.isRemote) { if(!config.doesPenetrate) diff --git a/src/main/java/com/hbm/entity/projectile/EntityRainbow.java b/src/main/java/com/hbm/entity/projectile/EntityRainbow.java index 5bcf2e5e1..6ee46d925 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityRainbow.java +++ b/src/main/java/com/hbm/entity/projectile/EntityRainbow.java @@ -332,18 +332,7 @@ public class EntityRainbow extends Entity implements IProjectile } else { - int j = rand.nextInt(5); - - if(j == 0) - damagesource = ModDamageSource.causeSubatomicDamage(this, this.shootingEntity); - else if(j == 1) - damagesource = ModDamageSource.causeSubatomicDamage2(this, this.shootingEntity); - else if(j == 2) - damagesource = ModDamageSource.causeSubatomicDamage3(this, this.shootingEntity); - else if(j == 3) - damagesource = ModDamageSource.causeSubatomicDamage4(this, this.shootingEntity); - else - damagesource = ModDamageSource.causeSubatomicDamage5(this, this.shootingEntity); + damagesource = ModDamageSource.causeSubatomicDamage(this, this.shootingEntity); } if (this.isBurning() && !(movingobjectposition.entityHit instanceof EntityEnderman)) diff --git a/src/main/java/com/hbm/handler/BulletConfiguration.java b/src/main/java/com/hbm/handler/BulletConfiguration.java index 05eaf5e5a..61fa9b04a 100644 --- a/src/main/java/com/hbm/handler/BulletConfiguration.java +++ b/src/main/java/com/hbm/handler/BulletConfiguration.java @@ -2,15 +2,22 @@ package com.hbm.handler; import java.util.List; +import com.hbm.entity.projectile.EntityBulletBase; import com.hbm.handler.guncfg.BulletConfigFactory; import com.hbm.interfaces.IBulletHitBehavior; import com.hbm.interfaces.IBulletHurtBehavior; import com.hbm.interfaces.IBulletImpactBehavior; import com.hbm.interfaces.IBulletRicochetBehavior; import com.hbm.interfaces.IBulletUpdateBehavior; +import com.hbm.interfaces.Untested; +import com.hbm.lib.ModDamageSource; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; import net.minecraft.item.Item; import net.minecraft.potion.PotionEffect; +import net.minecraft.util.DamageSource; +import net.minecraft.util.EntityDamageSourceIndirect; public class BulletConfiguration { @@ -87,6 +94,12 @@ public class BulletConfiguration { public int plink; //vanilla particle FX public String vPFX = ""; + + public String damageType = ModDamageSource.s_bullet; + public boolean dmgProj = true; + public boolean dmgFire = false; + public boolean dmgExplosion = false; + public boolean dmgBypass = false; public static final int STYLE_NONE = -1; public static final int STYLE_NORMAL = 0; @@ -156,4 +169,27 @@ public class BulletConfiguration { this.spread *= mod; return this; } + + @Untested + public DamageSource getDamage(EntityBulletBase bullet, EntityLivingBase shooter) { + + DamageSource dmg; + + String unloc = damageType; + + if(unloc.equals(ModDamageSource.s_zomg_prefix)) + unloc += (bullet.worldObj.rand.nextInt(5) + 1); //pain + + if(shooter != null) + dmg = new EntityDamageSourceIndirect(unloc, bullet, shooter); + else + dmg = new DamageSource(unloc); + + if(this.dmgProj) dmg.setProjectile(); + if(this.dmgFire) dmg.setFireDamage(); + if(this.dmgExplosion) dmg.setExplosion(); + if(this.dmgBypass) dmg.setDamageBypassesArmor(); + + return dmg; + } } diff --git a/src/main/java/com/hbm/handler/EntityEffectHandler.java b/src/main/java/com/hbm/handler/EntityEffectHandler.java index 721d651b9..ea003a040 100644 --- a/src/main/java/com/hbm/handler/EntityEffectHandler.java +++ b/src/main/java/com/hbm/handler/EntityEffectHandler.java @@ -1,10 +1,13 @@ package com.hbm.handler; +import java.util.ArrayList; +import java.util.List; import java.util.Random; import com.hbm.config.RadiationConfig; import com.hbm.explosion.ExplosionNukeSmall; import com.hbm.extprop.HbmLivingProps; +import com.hbm.extprop.HbmLivingProps.ContaminationEffect; import com.hbm.main.MainRegistry; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; @@ -57,10 +60,31 @@ public class EntityEffectHandler { } } + handleContamination(entity); handleRadiation(entity); handleDigamma(entity); } + private static void handleContamination(EntityLivingBase entity) { + + if(entity.worldObj.isRemote) + return; + + List contamination = HbmLivingProps.getCont(entity); + List rem = new ArrayList(); + + for(ContaminationEffect con : contamination) { + ContaminationUtil.contaminate(entity, HazardType.RADIATION, con.ignoreArmor ? ContaminationType.RAD_BYPASS : ContaminationType.CREATIVE, con.getRad()); + + con.time--; + + if(con.time <= 0) + rem.add(con); + } + + contamination.removeAll(rem); + } + private static void handleRadiation(EntityLivingBase entity) { if(ContaminationUtil.isRadImmune(entity)) @@ -71,6 +95,7 @@ public class EntityEffectHandler { RadiationSavedData data = RadiationSavedData.getData(world); if(!world.isRemote) { + int ix = (int)MathHelper.floor_double(entity.posX); int iy = (int)MathHelper.floor_double(entity.posY); int iz = (int)MathHelper.floor_double(entity.posZ); diff --git a/src/main/java/com/hbm/handler/guncfg/GunEnergyFactory.java b/src/main/java/com/hbm/handler/guncfg/GunEnergyFactory.java index c096cc280..f047cee32 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunEnergyFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunEnergyFactory.java @@ -12,6 +12,7 @@ import com.hbm.handler.GunConfiguration; import com.hbm.interfaces.IBulletImpactBehavior; import com.hbm.interfaces.IBulletUpdateBehavior; import com.hbm.items.ModItems; +import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; @@ -181,6 +182,10 @@ public class GunEnergyFactory { bullet.plink = BulletConfiguration.PLINK_NONE; bullet.emp = 10; + bullet.damageType = ModDamageSource.s_emp; + bullet.dmgProj = false; + bullet.dmgBypass = true; + bullet.effects = new ArrayList(); bullet.effects.add(new PotionEffect(Potion.moveSlowdown.id, 10 * 20, 1)); bullet.effects.add(new PotionEffect(Potion.weakness.id, 10 * 20, 4)); @@ -212,6 +217,10 @@ public class GunEnergyFactory { bullet.vPFX = "flame"; bullet.incendiary = 10; + bullet.damageType = ModDamageSource.s_flamethrower; + bullet.dmgProj = false; + bullet.dmgFire = true; + bullet.bImpact = new IBulletImpactBehavior() { @Override @@ -279,6 +288,8 @@ public class GunEnergyFactory { bullet.vPFX = "flame"; bullet.incendiary = 0; + bullet.dmgBypass = true; + PotionEffect eff = new PotionEffect(HbmPotion.phosphorus.id, 20 * 20, 0, true); eff.getCurativeItems().clear(); bullet.effects = new ArrayList(); @@ -302,6 +313,8 @@ public class GunEnergyFactory { bullet.vPFX = "cloud"; bullet.incendiary = 0; + bullet.dmgFire = false; + bullet.bImpact = BulletConfigFactory.getGasEffect(5, 60 * 20); return bullet; @@ -557,6 +570,10 @@ public class GunEnergyFactory { bullet.dmgMin = 10000; bullet.dmgMax = 25000; bullet.liveAfterImpact = true; + + bullet.damageType = ModDamageSource.s_zomg_prefix; + bullet.dmgProj = false; + bullet.dmgBypass = true; bullet.style = bullet.STYLE_BOLT; bullet.trail = bullet.BOLT_ZOMG; diff --git a/src/main/java/com/hbm/inventory/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/AssemblerRecipes.java index 10b738222..8193bbce5 100644 --- a/src/main/java/com/hbm/inventory/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/AssemblerRecipes.java @@ -37,7 +37,6 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraftforge.oredict.OreDictionary; -@Untested public class AssemblerRecipes { public static File config; diff --git a/src/main/java/com/hbm/inventory/container/ContainerWatzCore.java b/src/main/java/com/hbm/inventory/container/ContainerWatzCore.java index 433a4f860..a3760e10c 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerWatzCore.java +++ b/src/main/java/com/hbm/inventory/container/ContainerWatzCore.java @@ -15,22 +15,8 @@ import net.minecraft.item.ItemStack; public class ContainerWatzCore extends Container { private TileEntityWatzCore diFurnace; - - private int powerList; - private int heatList; - private int decayMultiplier; - private int powerMultiplier; - private int heatMultiplier; - private int heat; public ContainerWatzCore(InventoryPlayer invPlayer, TileEntityWatzCore tedf) { - - powerList = 0; - heatList = 0; - decayMultiplier = 0; - powerMultiplier = 0; - heatMultiplier = 0; - heat = 0; diFurnace = tedf; @@ -149,79 +135,4 @@ public class ContainerWatzCore extends Container { public boolean canInteractWith(EntityPlayer player) { return diFurnace.isUseableByPlayer(player); } - - @Override - public void detectAndSendChanges() { - super.detectAndSendChanges(); - - for(int i = 0; i < this.crafters.size(); i++) - { - ICrafting par1 = (ICrafting)this.crafters.get(i); - - if(this.powerList != this.diFurnace.powerList) - { - par1.sendProgressBarUpdate(this, 0, this.diFurnace.powerList); - } - - if(this.heatList != this.diFurnace.heatList) - { - par1.sendProgressBarUpdate(this, 1, this.diFurnace.heatList); - } - - if(this.decayMultiplier != this.diFurnace.decayMultiplier) - { - par1.sendProgressBarUpdate(this, 2, this.diFurnace.decayMultiplier); - } - - if(this.powerMultiplier != this.diFurnace.powerMultiplier) - { - par1.sendProgressBarUpdate(this, 3, this.diFurnace.powerMultiplier); - } - - if(this.heatMultiplier != this.diFurnace.heatMultiplier) - { - par1.sendProgressBarUpdate(this, 4, this.diFurnace.heatMultiplier); - } - - if(this.heat != this.diFurnace.heat) - { - par1.sendProgressBarUpdate(this, 5, this.diFurnace.heat); - } - } - - this.powerList = this.diFurnace.powerList; - this.heatList = this.diFurnace.heatList; - this.decayMultiplier = this.diFurnace.decayMultiplier; - this.powerMultiplier = this.diFurnace.powerMultiplier; - this.heatMultiplier = this.diFurnace.heatMultiplier; - this.heat = this.diFurnace.heat; - } - - @Override - public void updateProgressBar(int i, int j) { - if(i == 0) - { - diFurnace.powerList = j; - } - if(i == 1) - { - diFurnace.heatList = j; - } - if(i == 2) - { - diFurnace.decayMultiplier = j; - } - if(i == 3) - { - diFurnace.powerMultiplier = j; - } - if(i == 4) - { - diFurnace.heatMultiplier = j; - } - if(i == 5) - { - diFurnace.heat = j; - } - } } diff --git a/src/main/java/com/hbm/lib/ModDamageSource.java b/src/main/java/com/hbm/lib/ModDamageSource.java index 56bfbcd92..f3cd61a7e 100644 --- a/src/main/java/com/hbm/lib/ModDamageSource.java +++ b/src/main/java/com/hbm/lib/ModDamageSource.java @@ -52,165 +52,150 @@ public class ModDamageSource extends DamageSource { public static DamageSource monoxide = (new DamageSource("monoxide")).setDamageIsAbsolute().setDamageBypassesArmor(); public static DamageSource asbestos = (new DamageSource("asbestos")).setDamageIsAbsolute().setDamageBypassesArmor(); + public static final String s_bullet = "revolverBullet"; + public static final String s_emplacer = "chopperBullet"; + public static final String s_tau = "tau"; + public static final String s_combineball = "cmb"; + public static final String s_zomg_prefix = "subAtomic"; + public static final String s_euthanized = "euthanized"; + public static final String s_emp = "electrified"; + public static final String s_flamethrower = "flamethrower"; + public static final String s_immolator = "plasma"; + public static final String s_cryolator = "ice"; + public static final String s_laser = "laser"; + public ModDamageSource(String p_i1566_1_) { super(p_i1566_1_); } - public static DamageSource causeBulletDamage(EntityBullet p_76353_0_, Entity p_76353_1_) - { - return (new EntityDamageSourceIndirect("revolverBullet", p_76353_0_, p_76353_1_)).setProjectile(); - } - public static DamageSource causeBulletDamage(EntityBulletBase base, Entity ent) - { - return (new EntityDamageSourceIndirect("revolverBullet", base, ent)).setProjectile(); - } - public static DamageSource causeDisplacementDamage(EntityBullet p_76353_0_, Entity p_76353_1_) - { - return (new EntityDamageSourceIndirect("chopperBullet", p_76353_0_, p_76353_1_)).setProjectile(); - } - public static DamageSource causeTauDamage(EntityBullet p_76353_0_, Entity p_76353_1_) - { - return (new EntityDamageSourceIndirect("tau", p_76353_0_, p_76353_1_)).setProjectile().setDamageBypassesArmor(); - } - public static DamageSource causeCombineDamage(Entity p_76353_0_, Entity p_76353_1_) - { - return (new EntityDamageSourceIndirect("cmb", p_76353_0_, p_76353_1_)).setProjectile().setDamageBypassesArmor(); - } - public static DamageSource causeSubatomicDamage(EntityRainbow p_76353_0_, Entity p_76353_1_) - { - return (new EntityDamageSourceIndirect("subAtomic", p_76353_0_, p_76353_1_)).setProjectile().setDamageBypassesArmor(); - } - public static DamageSource causeSubatomicDamage2(EntityRainbow p_76353_0_, Entity p_76353_1_) - { - return (new EntityDamageSourceIndirect("subAtomic2", p_76353_0_, p_76353_1_)).setProjectile().setDamageBypassesArmor(); - } - public static DamageSource causeSubatomicDamage3(EntityRainbow p_76353_0_, Entity p_76353_1_) - { - return (new EntityDamageSourceIndirect("subAtomic3", p_76353_0_, p_76353_1_)).setProjectile().setDamageBypassesArmor(); - } - public static DamageSource causeSubatomicDamage4(EntityRainbow p_76353_0_, Entity p_76353_1_) - { - return (new EntityDamageSourceIndirect("subAtomic4", p_76353_0_, p_76353_1_)).setProjectile().setDamageBypassesArmor(); - } - public static DamageSource causeSubatomicDamage5(EntityRainbow p_76353_0_, Entity p_76353_1_) - { - return (new EntityDamageSourceIndirect("subAtomic5", p_76353_0_, p_76353_1_)).setProjectile().setDamageBypassesArmor(); - } - public static DamageSource euthanized(Entity p_76353_0_, Entity p_76353_1_) - { - return (new EntityDamageSourceIndirect("euthanized", p_76353_0_, p_76353_1_)).setDamageBypassesArmor(); - } - public static DamageSource causeDischargeDamage(EntityDischarge p_76353_0_, Entity p_76353_1_) - { - return (new EntityDamageSourceIndirect("electrified", p_76353_0_, p_76353_1_)).setDamageBypassesArmor(); - } - public static DamageSource causeFireDamage(EntityFire p_76353_0_, Entity p_76353_1_) - { - return (new EntityDamageSourceIndirect("flamethrower", p_76353_0_, p_76353_1_)).setFireDamage().setDamageBypassesArmor(); - } - public static DamageSource causePlasmaDamage(EntityPlasmaBeam p_76353_0_, Entity p_76353_1_) - { - return (new EntityDamageSourceIndirect("plasma", p_76353_0_, p_76353_1_)).setDamageBypassesArmor(); - } - public static DamageSource causeIceDamage(EntityLN2 p_76353_0_, Entity p_76353_1_) - { - return (new EntityDamageSourceIndirect("ice", p_76353_0_, p_76353_1_)).setDamageBypassesArmor(); - } - public static DamageSource causeLaserDamage(EntityLaserBeam p_76353_0_, Entity p_76353_1_) - { - return (new EntityDamageSourceIndirect("laser", p_76353_0_, p_76353_1_)).setDamageBypassesArmor(); - } - public static DamageSource causeLaserDamage(EntityMinerBeam p_76353_0_, Entity p_76353_1_) - { - return (new EntityDamageSourceIndirect("laser", p_76353_0_, p_76353_1_)).setDamageBypassesArmor(); - } - - public static boolean getIsBullet(DamageSource source) { - if(source instanceof EntityDamageSourceIndirect) - { - return ((EntityDamageSourceIndirect)source).damageType.equals("revolverBullet"); - } - return false; - } - - public static boolean getIsEmplacer(DamageSource source) { - if(source instanceof EntityDamageSourceIndirect) - { - return ((EntityDamageSourceIndirect)source).damageType.equals("chopperBullet"); - } - return false; - } - - public static boolean getIsTau(DamageSource source) { - if(source instanceof EntityDamageSourceIndirect) - { - return ((EntityDamageSourceIndirect)source).damageType.equals("tau"); - } - return false; - } - - public static boolean getIsPoison(DamageSource source) { - if(source instanceof EntityDamageSourceIndirect) - { - return ((EntityDamageSourceIndirect)source).damageType.equals("euthanized"); - } - return false; - } - - public static boolean getIsCmb(DamageSource source) { - if(source instanceof EntityDamageSourceIndirect) - { - return ((EntityDamageSourceIndirect)source).damageType.equals("cmb"); - } - return false; - } - - public static boolean getIsSubatomic(DamageSource source) { - if(source instanceof EntityDamageSourceIndirect) - { - String s = ((EntityDamageSourceIndirect)source).damageType; - return s.equals("subAtomic") || s.equals("subAtomic2") || s.equals("subAtomic3") || s.equals("subAtomic4") || s.equals("subAtomic5"); - } - return false; - } - - public static boolean getIsDischarge(DamageSource source) { - if(source instanceof EntityDamageSourceIndirect) - { - return ((EntityDamageSourceIndirect)source).damageType.equals("electrified"); - } - return false; - } - - public static boolean getIsFire(DamageSource source) { - if(source instanceof EntityDamageSourceIndirect) - { - return ((EntityDamageSourceIndirect)source).damageType.equals("flamethrower"); - } - return false; - } - - public static boolean getIsPlasma(DamageSource source) { - if(source instanceof EntityDamageSourceIndirect) - { - return ((EntityDamageSourceIndirect)source).damageType.equals("plasma"); - } - return false; - } - - public static boolean getIsLiquidNitrogen(DamageSource source) { - if(source instanceof EntityDamageSourceIndirect) - { - return ((EntityDamageSourceIndirect)source).damageType.equals("ice"); - } - return false; - } - - public static boolean getIsLaser(DamageSource source) { - if(source instanceof EntityDamageSourceIndirect) - { - return ((EntityDamageSourceIndirect)source).damageType.equals("laser"); - } - return false; - } + + public static DamageSource causeBulletDamage(EntityBullet ent, Entity hit) { + return (new EntityDamageSourceIndirect(s_bullet, ent, hit)).setProjectile(); + } + + public static DamageSource causeBulletDamage(Entity base, Entity ent) { + return (new EntityDamageSourceIndirect(s_bullet, base, ent)).setProjectile(); + } + + public static DamageSource causeDisplacementDamage(Entity ent, Entity hit) { + return (new EntityDamageSourceIndirect(s_emplacer, ent, hit)).setProjectile(); + } + + public static DamageSource causeTauDamage(Entity ent, Entity hit) { + return (new EntityDamageSourceIndirect(s_tau, ent, hit)).setProjectile().setDamageBypassesArmor(); + } + + public static DamageSource causeCombineDamage(Entity ent, Entity hit) { + return (new EntityDamageSourceIndirect(s_combineball, ent, hit)).setProjectile().setDamageBypassesArmor(); + } + + public static DamageSource causeSubatomicDamage(Entity ent, Entity hit) { + return (new EntityDamageSourceIndirect(s_zomg_prefix + (ent.worldObj.rand.nextInt(5) + 1), ent, hit)).setProjectile().setDamageBypassesArmor(); + } + + public static DamageSource euthanized(Entity ent, Entity hit) { + return (new EntityDamageSourceIndirect(s_euthanized, ent, hit)).setDamageBypassesArmor(); + } + + public static DamageSource causeDischargeDamage(EntityDischarge ent, Entity hit) { + return (new EntityDamageSourceIndirect(s_emp, ent, hit)).setDamageBypassesArmor(); + } + + public static DamageSource causeFireDamage(EntityFire ent, Entity hit) { + return (new EntityDamageSourceIndirect(s_flamethrower, ent, hit)).setFireDamage().setDamageBypassesArmor(); + } + + public static DamageSource causePlasmaDamage(EntityPlasmaBeam ent, Entity hit) { + return (new EntityDamageSourceIndirect(s_immolator, ent, hit)).setDamageBypassesArmor(); + } + + public static DamageSource causeIceDamage(EntityLN2 ent, Entity hit) { + return (new EntityDamageSourceIndirect(s_cryolator, ent, hit)).setDamageBypassesArmor(); + } + + public static DamageSource causeLaserDamage(EntityLaserBeam ent, Entity hit) { + return (new EntityDamageSourceIndirect(s_laser, ent, hit)).setDamageBypassesArmor(); + } + + public static DamageSource causeLaserDamage(EntityMinerBeam ent, Entity hit) { + return (new EntityDamageSourceIndirect("s_laser", ent, hit)).setDamageBypassesArmor(); + } + + public static boolean getIsBullet(DamageSource source) { + if(source instanceof EntityDamageSourceIndirect) { + return ((EntityDamageSourceIndirect) source).damageType.equals("revolverBullet"); + } + return false; + } + + public static boolean getIsEmplacer(DamageSource source) { + if(source instanceof EntityDamageSourceIndirect) { + return ((EntityDamageSourceIndirect) source).damageType.equals("chopperBullet"); + } + return false; + } + + public static boolean getIsTau(DamageSource source) { + if(source instanceof EntityDamageSourceIndirect) { + return ((EntityDamageSourceIndirect) source).damageType.equals("tau"); + } + return false; + } + + public static boolean getIsPoison(DamageSource source) { + if(source instanceof EntityDamageSourceIndirect) { + return ((EntityDamageSourceIndirect) source).damageType.equals("euthanized"); + } + return false; + } + + public static boolean getIsCmb(DamageSource source) { + if(source instanceof EntityDamageSourceIndirect) { + return ((EntityDamageSourceIndirect) source).damageType.equals("cmb"); + } + return false; + } + + public static boolean getIsSubatomic(DamageSource source) { + if(source instanceof EntityDamageSourceIndirect) { + String s = ((EntityDamageSourceIndirect) source).damageType; + return s.startsWith("subAtomic"); + } + return false; + } + + public static boolean getIsDischarge(DamageSource source) { + if(source instanceof EntityDamageSourceIndirect) { + return ((EntityDamageSourceIndirect) source).damageType.equals("electrified"); + } + return false; + } + + public static boolean getIsFire(DamageSource source) { + if(source instanceof EntityDamageSourceIndirect) { + return ((EntityDamageSourceIndirect) source).damageType.equals("flamethrower"); + } + return false; + } + + public static boolean getIsPlasma(DamageSource source) { + if(source instanceof EntityDamageSourceIndirect) { + return ((EntityDamageSourceIndirect) source).damageType.equals("plasma"); + } + return false; + } + + public static boolean getIsLiquidNitrogen(DamageSource source) { + if(source instanceof EntityDamageSourceIndirect) { + return ((EntityDamageSourceIndirect) source).damageType.equals("ice"); + } + return false; + } + + public static boolean getIsLaser(DamageSource source) { + if(source instanceof EntityDamageSourceIndirect) { + return ((EntityDamageSourceIndirect) source).damageType.equals("laser"); + } + return false; + } } diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index e752b9c09..ac6f24cae 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -970,6 +970,13 @@ public class ClientProxy extends ServerProxy { } } + if("townaura".equals(data.getString("mode"))) { + fx = new EntityAuraFX(world, x, y, z, 0, 0, 0); + float color = 0.5F + rand.nextFloat() * 0.5F; + fx.setRBGColorF(0.8F * color, 0.9F * color, 1.0F * color); + fx.setVelocity(mX, mY, mZ); + } + if("blockdust".equals(data.getString("mode"))) { Block b = Block.getBlockById(data.getInteger("block")); diff --git a/src/main/java/com/hbm/tileentity/conductor/TileEntityPylonRedWire.java b/src/main/java/com/hbm/tileentity/conductor/TileEntityPylonRedWire.java index f5686ae5d..aa9f03897 100644 --- a/src/main/java/com/hbm/tileentity/conductor/TileEntityPylonRedWire.java +++ b/src/main/java/com/hbm/tileentity/conductor/TileEntityPylonRedWire.java @@ -22,7 +22,6 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; -@Untested public class TileEntityPylonRedWire extends TileEntity implements IConductor, INBTPacketReceiver { public List uoteab = new ArrayList(); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java b/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java index de8a8e5c3..2a0f4cfb8 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java @@ -46,7 +46,6 @@ public class TileEntityChungus extends TileEntity implements IFluidAcceptor, IFl tanks[1] = new FluidTank(FluidType.WATER, 1000000000, 1); } - @Untested @Override public void updateEntity() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityDecon.java b/src/main/java/com/hbm/tileentity/machine/TileEntityDecon.java index 83ccc73c2..f13790e02 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityDecon.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityDecon.java @@ -1,11 +1,14 @@ package com.hbm.tileentity.machine; import java.util.List; +import java.util.Random; import com.hbm.extprop.HbmLivingProps; +import com.hbm.main.MainRegistry; import com.hbm.potion.HbmPotion; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; @@ -22,8 +25,23 @@ public class TileEntityDecon extends TileEntity { for(EntityLivingBase e : entities) { HbmLivingProps.incrementRadiation(e, -0.5F); e.removePotionEffect(HbmPotion.radiation.id); + HbmLivingProps.getCont(e).clear(); } } + } else { + + Random rand = worldObj.rand; + + NBTTagCompound nbt = new NBTTagCompound(); + nbt.setString("type", "vanillaExt"); + nbt.setString("mode", "townaura"); + nbt.setDouble("posX", xCoord + 0.125 + rand.nextDouble() * 0.75); + nbt.setDouble("posY", yCoord + 1.1); + nbt.setDouble("posZ", zCoord + 0.125 + rand.nextDouble() * 0.75); + nbt.setDouble("mX", 0.0); + nbt.setDouble("mY", 0.04); + nbt.setDouble("mZ", 0.0); + MainRegistry.proxy.effectNT(nbt); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadar.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadar.java index 150e1a736..cd2cdeecf 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadar.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadar.java @@ -19,7 +19,6 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; -@Untested public class TileEntityMachineRadar extends TileEntityTickingBase implements IConsumer { public List entList = new ArrayList(); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineShredder.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineShredder.java index e9a0b2c53..ac9263c7d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineShredder.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineShredder.java @@ -304,7 +304,6 @@ public class TileEntityMachineShredder extends TileEntity implements ISidedInven } } - @Untested public boolean canProcess() { if(slots[27] != null && slots[28] != null && this.getGearLeft() > 0 && this.getGearLeft() < 3 && diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityWatzCore.java b/src/main/java/com/hbm/tileentity/machine/TileEntityWatzCore.java index 2a78afc92..b900b1439 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityWatzCore.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityWatzCore.java @@ -518,17 +518,8 @@ public class TileEntityWatzCore extends TileEntity implements ISidedInventory, I @Override public void updateEntity() { - if (this.isStructureValid(this.worldObj) && !worldObj.isRemote) { - - age++; - if (age >= 20) { - age = 0; - } - - if (age == 9 || age == 19) { - ffgeuaInit(); - fillFluidInit(tank.getTankType()); - } + + if (this.isStructureValid(this.worldObj)) { powerMultiplier = 100; heatMultiplier = 100; @@ -552,35 +543,48 @@ public class TileEntityWatzCore extends TileEntity implements ISidedInventory, I decayPellet(i); } } - - //Only damages filter when heat is present (thus waste being created) - if (heatList > 0) { - ItemCapacitor.setDura(slots[38], ItemCapacitor.getDura(slots[38]) - 1); + + if(!worldObj.isRemote) { + + age++; + if (age >= 20) { + age = 0; + } + + if (age == 9 || age == 19) { + ffgeuaInit(); + fillFluidInit(tank.getTankType()); + } + + //Only damages filter when heat is present (thus waste being created) + if (heatList > 0) { + ItemCapacitor.setDura(slots[38], ItemCapacitor.getDura(slots[38]) - 1); + } + + heatList *= heatMultiplier; + heatList /= 100; + heat = heatList; + + powerList *= powerMultiplier; + powerList /= 100; + power += powerList; + + tank.setFill(tank.getFill() + ((decayMultiplier * heat) / 100) / 100); + + if(power > maxPower) + power = maxPower; + + //Gets rid of 1/4 of the total waste, if at least one access hatch is not occupied + if(tank.getFill() > tank.getMaxFill()) + emptyWaste(); + + power = Library.chargeItemsFromTE(slots, 37, power, maxPower); + + tank.updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); + tank.unloadTank(36, 39, slots); + + PacketDispatcher.wrapper.sendToAllAround(new AuxElectricityPacket(xCoord, yCoord, zCoord, power), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); } - - heatList *= heatMultiplier; - heatList /= 100; - heat = heatList; - - powerList *= powerMultiplier; - powerList /= 100; - power += powerList; - - tank.setFill(tank.getFill() + ((decayMultiplier * heat) / 100) / 100); - - if(power > maxPower) - power = maxPower; - - //Gets rid of 1/4 of the total waste, if at least one access hatch is not occupied - if(tank.getFill() > tank.getMaxFill()) - emptyWaste(); - - power = Library.chargeItemsFromTE(slots, 37, power, maxPower); - - tank.updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); - tank.unloadTank(36, 39, slots); - - PacketDispatcher.wrapper.sendToAllAround(new AuxElectricityPacket(xCoord, yCoord, zCoord, power), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); } } diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index ca8415ac4..0a5b1a49c 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -310,6 +310,7 @@ death.attack.exhaust=%1$s wurde von einer startenden Rakete verbrutzelt. death.attack.flamethrower=%1$s wurde von %2$s gegrillt. death.attack.ice=%1$s wurde von %2$s in ein Eis am Stiel verwandelt. death.attack.laser=%1$s wurde von %2$s zerbröselt. +death.attack.laser.item=%1$s wurde von %2$s mit %3$s zerbröselt. death.attack.lead=%1$s starb an Bleivergiftung. death.attack.lunar=%1$s vergaß lebenswichtige Organe aufzuladen. death.attack.meteorite=%1$s wurde von einem fallenden Stein aus dem Weltall erschlagen. @@ -320,14 +321,15 @@ death.attack.pc=%1$s wurde zu einer Pfütze in der pinken Wolke. death.attack.plasma=%1$s wurde von %2$s eingeäschert. death.attack.radiation=%1$s starb an Strahlenvergiftung. death.attack.revolverBullet=%1$s wurde von %2$s in den Kopf geschossen. +death.attack.revolverBullet.item=%1$s wurde von %2$s mit %3$s in den Kopf geschossen. death.attack.rubble=%1$s wurde von Schutt zerquetscht. death.attack.shrapnel=%1$s wurde von einem Schrapnell zerfetzt. death.attack.spikes=%1$s wurde aufgespießt. +death.attack.subAtomic1=%1$s's Atome wurden von %2$s vernichtet. death.attack.subAtomic2=%1$s verließ das QPU-Gitter weil %2$s seine De-Facto-Geschwindigkeit manipulierte. death.attack.subAtomic3=%1$s's Divergenzwert fiel wegen %2$s unter 1 Prozent. death.attack.subAtomic4=%1$s wurde von %2$s durch null geteilt. death.attack.subAtomic5=%1$s wurde von %2$s nullifiziert. -death.attack.subAtomic=%1$s's Atome wurden von %2$s vernichtet. death.attack.suicide=%1$s blies sich die Rübe weg. death.attack.taint=%1$s starb an Flux-Tumoren. death.attack.tau=%1$s wurde von %2$s mit negativ geladenen Tauonen durchsiebt. diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 632c758ef..bcd178897 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -378,6 +378,7 @@ death.attack.exhaust=%1$s was turned into shish kebab by a starting rocket. death.attack.flamethrower=%1$s was cremated by %2$s. death.attack.ice=%1$s was turned into a popsicle by %2$s. death.attack.laser=%1$s was turned into ash by %2$s. +death.attack.laser.item=%1$s was turned into ash by %2$s using %3$s. death.attack.lead=%1$s died from lead poisoning. death.attack.lunar=%1$s forgot to charge their vital organs. death.attack.meteorite=%1$s was hit by a falling rock from outer space. @@ -388,14 +389,15 @@ death.attack.pc=%1$s was reduced to a puddle in the pink cloud. death.attack.plasma=%1$s was immolated by %2$s. death.attack.radiation=%1$s died from radiation poisoning. death.attack.revolverBullet=%1$s was shot in the head by %2$s. +death.attack.revolverBullet=%1$s was shot in the head by %2$s using %3$s. death.attack.rubble=%1$s was squashed by debris. death.attack.shrapnel=%1$s was ragged by a shrapnel. death.attack.spikes=%1$s got impaled. +death.attack.subAtomic1=%1$s's atoms have been destroyed by %2$s. death.attack.subAtomic2=%1$s was QPU-misaligned because %2$s tampered with their de facto speed. death.attack.subAtomic3=%1$s's divergence dropped below 1 percent because of %2$s. death.attack.subAtomic4=%1$s was divided by zero by %2$s. death.attack.subAtomic5=%1$s was nullified by %2$s. -death.attack.subAtomic=%1$s's atoms have been destroyed by %2$s. death.attack.suicide=%1$s blew their head off. death.attack.taint=%1$s died from flux tumors. death.attack.tau=%1$s was riddeled by %2$s using negatively charged tauons.