diff --git a/assets/hbm/lang/de_DE.lang b/assets/hbm/lang/de_DE.lang index 4f1bf466b..a145ac93d 100644 --- a/assets/hbm/lang/de_DE.lang +++ b/assets/hbm/lang/de_DE.lang @@ -451,6 +451,7 @@ item.powder_spark_mix.name=Sparkmischung item.ingot_dineutronium.name=Dineutroniumbarren item.powder_dineutronium.name=Dineutroniumstaub item.nugget_dineutronium.name=Dineutroniumnugget +item.ingot_starmetal.name=Sternenmetallbarren item.solid_fuel.name=Festbrennstoff @@ -1114,6 +1115,7 @@ item.nugget_euphemium.name=Euphemiumnugget item.rod_quad_euphemium.name=Ausgebrannter Schrabidiumvierfachbrennstab item.plate_euphemium.name=Euphemium-Verbundplatte item.plate_dineutronium.name=Dineutronium-Verbundplatte +item.plate_desh.name=Desh-Verbundplatte item.euphemium_helmet.name=Euphemiumstiefel item.euphemium_plate.name=Euphemiumbrustplatte diff --git a/assets/hbm/lang/en_US.lang b/assets/hbm/lang/en_US.lang index 8750d0eeb..87eec71cb 100644 --- a/assets/hbm/lang/en_US.lang +++ b/assets/hbm/lang/en_US.lang @@ -451,6 +451,7 @@ item.powder_spark_mix.name=Spark Blend item.ingot_dineutronium.name=Dineutronium Ingot item.powder_dineutronium.name=Dineutronium Powder item.nugget_dineutronium.name=Dineutronium Nugget +item.ingot_starmetal.name=Starmetal Ingot item.solid_fuel.name=Solid Fuel @@ -1117,6 +1118,7 @@ item.nugget_euphemium.name=Euphemium Nugget item.rod_quad_euphemium.name=Burned Out Quad Schrabidium Fuel Rod item.plate_euphemium.name=Euphemium Compound Plate item.plate_dineutronium.name=Dineutronium Compound Plate +item.plate_desh.name=Desh Compound Plate item.euphemium_helmet.name=Euphemium Helemt item.euphemium_plate.name=Euphemium Chestplate diff --git a/assets/hbm/textures/items/ingot_starmetal.png b/assets/hbm/textures/items/ingot_starmetal.png new file mode 100644 index 000000000..5c4484da2 Binary files /dev/null and b/assets/hbm/textures/items/ingot_starmetal.png differ diff --git a/assets/hbm/textures/items/plate_desh.png b/assets/hbm/textures/items/plate_desh.png new file mode 100644 index 000000000..081e5ded5 Binary files /dev/null and b/assets/hbm/textures/items/plate_desh.png differ diff --git a/com/hbm/blocks/bomb/NukeFleija.java b/com/hbm/blocks/bomb/NukeFleija.java index 56f9eeef2..cc5d87ffb 100644 --- a/com/hbm/blocks/bomb/NukeFleija.java +++ b/com/hbm/blocks/bomb/NukeFleija.java @@ -6,6 +6,7 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.entity.effect.EntityCloudFleija; +import com.hbm.entity.effect.EntityCloudFleijaRainbow; import com.hbm.entity.logic.EntityNukeExplosionAdvanced; import com.hbm.entity.logic.EntityNukeExplosionMK3; import com.hbm.interfaces.IBomb; @@ -154,7 +155,7 @@ public class NukeFleija extends BlockContainer implements IBomb { world.spawnEntityInWorld(entity); - EntityCloudFleija cloud = new EntityCloudFleija(world, r); + EntityCloudFleijaRainbow cloud = new EntityCloudFleijaRainbow(world, r); cloud.posX = x; cloud.posY = y; cloud.posZ = z; diff --git a/com/hbm/blocks/test/TestBombAdvanced.java b/com/hbm/blocks/test/TestBombAdvanced.java index a231a2cff..0a3709ffb 100644 --- a/com/hbm/blocks/test/TestBombAdvanced.java +++ b/com/hbm/blocks/test/TestBombAdvanced.java @@ -1,5 +1,6 @@ package com.hbm.blocks.test; +import com.hbm.entity.logic.EntityNukeExplosionMK4; import com.hbm.lib.RefStrings; import com.hbm.tileentity.bomb.TileEntityTestBombAdvanced; @@ -107,7 +108,7 @@ public class TestBombAdvanced extends BlockContainer { public void explode(World world, int x, int y, int z, int bombStartStrength, int bombStrengthA) { - int r = bombStartStrength; //radius of explosion (change this to bigger numbers for more epicness) + /*int r = bombStartStrength; //radius of explosion (change this to bigger numbers for more epicness) int r2 = r*r; //radius^2, for faster distance checks. (No sqrt needed for pythagoras) int r22 = r2/2; //half of r^2, calculations outside the loop only get called once. Always pull out as many things from the loop as possible. for (int xx = -r; xx < r; xx++) @@ -129,6 +130,14 @@ public class TestBombAdvanced extends BlockContainer { } //you can change the if statement to if (ZZ= this.getMaxAge()) + { + this.age = 0; + this.setDead(); + } + + this.scale++; + } + + @Override + protected void readEntityFromNBT(NBTTagCompound p_70037_1_) { + age = p_70037_1_.getShort("age"); + scale = p_70037_1_.getShort("scale"); + } + + @Override + protected void writeEntityToNBT(NBTTagCompound p_70014_1_) { + p_70014_1_.setShort("age", (short)age); + p_70014_1_.setShort("scale", (short)scale); + + } + + public void setMaxAge(int i) { + this.dataWatcher.updateObject(16, Integer.valueOf(i)); + } + + public int getMaxAge() { + return this.dataWatcher.getWatchableObjectInt(16); + } +} diff --git a/com/hbm/entity/logic/EntityNukeExplosionMK4.java b/com/hbm/entity/logic/EntityNukeExplosionMK4.java new file mode 100644 index 000000000..f0a24d6f8 --- /dev/null +++ b/com/hbm/entity/logic/EntityNukeExplosionMK4.java @@ -0,0 +1,54 @@ +package com.hbm.entity.logic; + +import com.hbm.explosion.ExplosionLarge; + +import net.minecraft.entity.Entity; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +public class EntityNukeExplosionMK4 extends Entity { + + //Strength of the blast + public long strength; + //How many rays should be created + public long count; + //How many rays are calculated per tick + public int speed; + //How many rays have already been processed + public long done; + + public EntityNukeExplosionMK4(World p_i1582_1_) { + super(p_i1582_1_); + } + + public EntityNukeExplosionMK4(World world, long strength, long count, int speed) { + super(world); + this.strength = strength; + this.count = count; + this.speed = speed; + } + + @Override + public void onUpdate() { + ExplosionLarge.destructionRay(worldObj, posX, posY, posZ, speed, strength); + done += speed; + if(done >= count) + this.setDead(); + } + + @Override + protected void entityInit() { + + } + + @Override + protected void readEntityFromNBT(NBTTagCompound p_70037_1_) { + + } + + @Override + protected void writeEntityToNBT(NBTTagCompound p_70014_1_) { + + } + +} diff --git a/com/hbm/explosion/ExplosionLarge.java b/com/hbm/explosion/ExplosionLarge.java index 24af0fff9..b420651fd 100644 --- a/com/hbm/explosion/ExplosionLarge.java +++ b/com/hbm/explosion/ExplosionLarge.java @@ -11,6 +11,7 @@ import com.hbm.entity.projectile.EntityShrapnel; import net.minecraft.entity.Entity; import net.minecraft.entity.item.EntityItem; +import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.util.Vec3; import net.minecraft.world.World; @@ -19,6 +20,45 @@ public class ExplosionLarge { static Random rand = new Random(); + public static void destructionRay(World world, double posX, double posY, double posZ, int count, long strength) { + + for(int k = 0; k < count; k++) { + double phi = rand.nextDouble() * (Math.PI * 2); + double costheta = rand.nextDouble() * 2 - 1; + double theta = Math.acos(costheta); + double x = Math.sin( theta) * Math.cos( phi ); + double y = Math.sin( theta) * Math.sin( phi ); + double z = Math.cos( theta ); + + Vec3 vec = Vec3.createVectorHelper(x, y, z); + int length = (int)Math.ceil(strength); + + float res = strength; + + for(int i = 0; i < length; i ++) { + + int x0 = (int)(posX + (vec.xCoord * i)); + int y0 = (int)(posY + (vec.yCoord * i)); + int z0 = (int)(posZ + (vec.zCoord * i)); + + if(!world.isRemote) { + + if(world.getBlock(x0, y0, z0).getMaterial().isLiquid()) { + world.setBlock(x0, y0, z0, Blocks.air); + } + + res -= Math.pow(world.getBlock(x0, y0, z0).getExplosionResistance(null), 2); + + if(res > 0 && world.getBlock(x0, y0, z0) != Blocks.air) { + + + world.setBlock(x0, y0, z0, Blocks.air); + } + } + } + } + } + public static void spawnParticles(World world, double x, double y, double z, int count) { for(int i = 0; i < count; i++) { diff --git a/com/hbm/inventory/MachineRecipes.java b/com/hbm/inventory/MachineRecipes.java index 1344d91e8..c0987d3d1 100644 --- a/com/hbm/inventory/MachineRecipes.java +++ b/com/hbm/inventory/MachineRecipes.java @@ -99,6 +99,11 @@ public class MachineRecipes { return new ItemStack(ModItems.ingot_dura_steel, 2); } + if (mODE(item, new String[] {"ingotSteel", "dustSteel"}) && item2 == ModItems.powder_meteorite + || item == ModItems.powder_meteorite && mODE(item2, new String[] {"ingotSteel", "dustSteel"})) { + return new ItemStack(ModItems.ingot_starmetal, 2); + } + return null; } @@ -768,6 +773,8 @@ public class MachineRecipes { getFurnaceOutput(ModItems.ingot_steel, ModItems.ingot_tungsten).copy()); recipes.put(new ItemStack[] { new ItemStack(ModItems.ingot_steel), new ItemStack(ModItems.powder_cobalt) }, getFurnaceOutput(ModItems.ingot_steel, ModItems.powder_cobalt).copy()); + recipes.put(new ItemStack[] { new ItemStack(ModItems.ingot_steel), new ItemStack(ModItems.powder_meteorite) }, + getFurnaceOutput(ModItems.ingot_steel, ModItems.powder_meteorite).copy()); } catch (Exception x) { MainRegistry.logger.error("Unable to register alloy recipes for NEI!"); } @@ -2954,6 +2961,33 @@ public class MachineRecipes { list.add(new ItemStack(Blocks.tnt, 3)); list.add(new ItemStack(ModItems.plate_schrabidium, 8)); break; + case COMPONENT_LIMITER: + list.add(new ItemStack(ModItems.hull_big_steel, 2)); + list.add(new ItemStack(ModItems.plate_steel, 32)); + list.add(new ItemStack(ModItems.plate_titanium, 18)); + list.add(new ItemStack(ModItems.plate_desh, 12)); + list.add(new ItemStack(ModItems.pipes_steel, 4)); + list.add(new ItemStack(ModItems.circuit_gold, 8)); + list.add(new ItemStack(ModItems.circuit_schrabidium, 4)); + list.add(new ItemStack(ModItems.ingot_starmetal, 14)); + list.add(new ItemStack(ModItems.plate_dalekanium, 5)); + list.add(new ItemStack(ModItems.powder_magic, 16)); + list.add(new ItemStack(ModBlocks.fwatz_computer, 3)); + break; + case COMPONENT_EMITTER: + list.add(new ItemStack(ModItems.hull_big_steel, 3)); + list.add(new ItemStack(ModItems.hull_big_titanium, 2)); + list.add(new ItemStack(ModItems.plate_steel, 32)); + list.add(new ItemStack(ModItems.plate_lead, 24)); + list.add(new ItemStack(ModItems.plate_desh, 24)); + list.add(new ItemStack(ModItems.pipes_steel, 8)); + list.add(new ItemStack(ModItems.circuit_gold, 12)); + list.add(new ItemStack(ModItems.circuit_schrabidium, 8)); + list.add(new ItemStack(ModItems.ingot_starmetal, 26)); + list.add(new ItemStack(ModItems.powder_magic, 48)); + list.add(new ItemStack(ModBlocks.fwatz_computer, 2)); + list.add(new ItemStack(ModItems.crystal_xen, 1)); + break; default: list.add(new ItemStack(Items.stick)); break; @@ -3624,6 +3658,12 @@ public class MachineRecipes { case FLEIJA_PROPELLANT: output = new ItemStack(ModItems.fleija_propellant, 1); break; + case COMPONENT_LIMITER: + output = new ItemStack(ModItems.component_limiter, 1); + break; + case COMPONENT_EMITTER: + output = new ItemStack(ModItems.component_emitter, 1); + break; default: output = new ItemStack(Items.stick, 1); break; diff --git a/com/hbm/inventory/gui/GUIAMSBase.java b/com/hbm/inventory/gui/GUIAMSBase.java index bcea7c723..4f5ff210e 100644 --- a/com/hbm/inventory/gui/GUIAMSBase.java +++ b/com/hbm/inventory/gui/GUIAMSBase.java @@ -36,9 +36,9 @@ public class GUIAMSBase extends GuiInfoContainer { base.tanks[2].renderTankInfo(this, mouseX, mouseY, guiLeft + 26, guiTop + 124 - 52, 16, 52); base.tanks[3].renderTankInfo(this, mouseX, mouseY, guiLeft + 134, guiTop + 124 - 52, 16, 52); this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 116, guiTop + 124 - 104, 7, 104, base.power, base.maxPower); - this.drawCustomInfo(this, mouseX, mouseY, guiLeft + 44, guiTop + 124 - 104, 7, 104, new String[] { "Restriction Field:", base.field + "%" }); - this.drawCustomInfo(this, mouseX, mouseY, guiLeft + 53, guiTop + 124 - 104, 7, 104, new String[] { "Efficiency:", base.efficiency + "%" }); - this.drawCustomInfo(this, mouseX, mouseY, guiLeft + 125, guiTop + 124 - 104, 7, 104, new String[] { "Heat:", base.heat + "/" + base.maxHeat }); + this.drawCustomInfo(this, mouseX, mouseY, guiLeft + 44, guiTop + 124 - 106, 7, 106, new String[] { "Restriction Field:", base.field + "%" }); + this.drawCustomInfo(this, mouseX, mouseY, guiLeft + 53, guiTop + 124 - 106, 7, 106, new String[] { "Efficiency:", base.efficiency + "%" }); + this.drawCustomInfo(this, mouseX, mouseY, guiLeft + 125, guiTop + 124 - 106, 7, 106, new String[] { "Heat:", base.heat + "/" + base.maxHeat }); } @Override diff --git a/com/hbm/items/ModItems.java b/com/hbm/items/ModItems.java index 2bcd6d6f1..89ad9d7d7 100644 --- a/com/hbm/items/ModItems.java +++ b/com/hbm/items/ModItems.java @@ -93,6 +93,7 @@ public class ModItems { public static Item ingot_dineutronium; public static Item nugget_dineutronium; public static Item powder_dineutronium; + public static Item ingot_starmetal; public static Item nugget_uranium; public static Item nugget_u235; @@ -135,6 +136,7 @@ public class ModItems { public static Item bolt_compound; public static Item plate_polymer; public static Item plate_dineutronium; + public static Item plate_desh; public static Item ingot_dura_steel; public static Item ingot_polymer; @@ -1220,6 +1222,7 @@ public class ModItems { bolt_compound = new Item().setUnlocalizedName("bolt_compound").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":bolt_compound"); plate_polymer = new Item().setUnlocalizedName("plate_polymer").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":plate_polymer"); plate_dineutronium = new Item().setUnlocalizedName("plate_dineutronium").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":plate_dineutronium"); + plate_desh = new Item().setUnlocalizedName("plate_desh").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":plate_desh"); ingot_dura_steel = new ItemCustomLore().setUnlocalizedName("ingot_dura_steel").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":ingot_dura_steel"); ingot_polymer = new ItemCustomLore().setUnlocalizedName("ingot_polymer").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":ingot_polymer"); @@ -1228,6 +1231,7 @@ public class ModItems { ingot_dineutronium = new ItemCustomLore().setUnlocalizedName("ingot_dineutronium").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":ingot_dineutronium"); nugget_dineutronium = new ItemCustomLore().setUnlocalizedName("nugget_dineutronium").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":nugget_dineutronium"); powder_dineutronium = new ItemCustomLore().setUnlocalizedName("powder_dineutronium").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":powder_dineutronium"); + ingot_starmetal = new ItemCustomLore().setUnlocalizedName("ingot_starmetal").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":ingot_starmetal"); ingot_lanthanium = new ItemCustomLore().setUnlocalizedName("ingot_lanthanium").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":ingot_lanthanium"); ingot_actinium = new ItemCustomLore().setUnlocalizedName("ingot_actinium").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":ingot_actinium"); @@ -1462,21 +1466,21 @@ public class ModItems { rune_thurisaz = new ItemCustomLore().setUnlocalizedName("rune_thurisaz").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":rune_thurisaz"); ams_catalyst_blank = new Item().setUnlocalizedName("ams_catalyst_blank").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_blank"); - ams_catalyst_aluminium = new ItemCatalyst(0xCCCCCC, 1000000, 1.15F, 0.85F, 1.0F).setUnlocalizedName("ams_catalyst_aluminium").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_aluminium"); - ams_catalyst_beryllium = new ItemCatalyst(0x97978B, 0, 1.25F, 0.95F, 1.0F).setUnlocalizedName("ams_catalyst_beryllium").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_beryllium"); - ams_catalyst_caesium = new ItemCatalyst(0x6400FF, 2500000, 1.0F, 0.85F, 1.0F).setUnlocalizedName("ams_catalyst_caesium").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_caesium"); - ams_catalyst_cerium = new ItemCatalyst(0x1D3FFF, 1000000, 1.15F, 1.15F, 1.0F).setUnlocalizedName("ams_catalyst_cerium").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_cerium"); - ams_catalyst_cobalt = new ItemCatalyst(0x789BBE, 0, 1.25F, 1.05F, 1.0F).setUnlocalizedName("ams_catalyst_cobalt").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_cobalt"); + ams_catalyst_aluminium = new ItemCatalyst(0xCCCCCC, 1000000, 1.15F, 0.85F, 1.15F).setUnlocalizedName("ams_catalyst_aluminium").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_aluminium"); + ams_catalyst_beryllium = new ItemCatalyst(0x97978B, 0, 1.25F, 0.95F, 1.05F).setUnlocalizedName("ams_catalyst_beryllium").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_beryllium"); + ams_catalyst_caesium = new ItemCatalyst(0x6400FF, 2500000, 1.0F, 0.85F, 1.15F).setUnlocalizedName("ams_catalyst_caesium").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_caesium"); + ams_catalyst_cerium = new ItemCatalyst(0x1D3FFF, 1000000, 1.15F, 1.15F, 0.85F).setUnlocalizedName("ams_catalyst_cerium").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_cerium"); + ams_catalyst_cobalt = new ItemCatalyst(0x789BBE, 0, 1.25F, 1.05F, 0.95F).setUnlocalizedName("ams_catalyst_cobalt").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_cobalt"); ams_catalyst_copper = new ItemCatalyst(0xAADE29, 0, 1.25F, 1.0F, 1.0F).setUnlocalizedName("ams_catalyst_copper").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_copper"); - ams_catalyst_dineutronium = new ItemCatalyst(0x334077, 2500000, 1.0F, 1.15F, 1.0F).setUnlocalizedName("ams_catalyst_dineutronium").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_dineutronium"); + ams_catalyst_dineutronium = new ItemCatalyst(0x334077, 2500000, 1.0F, 1.15F, 0.85F).setUnlocalizedName("ams_catalyst_dineutronium").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_dineutronium"); ams_catalyst_euphemium = new ItemCatalyst(0xFF9CD2, 2500000, 1.0F, 1.0F, 1.0F).setUnlocalizedName("ams_catalyst_euphemium").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_euphemium"); - ams_catalyst_iron = new ItemCatalyst(0xFF7E22, 1000000, 1.15F, 0.95F, 1.0F).setUnlocalizedName("ams_catalyst_iron").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_iron"); - ams_catalyst_lithium = new ItemCatalyst(0xFF2727, 0, 1.25F, 0.85F, 1.0F).setUnlocalizedName("ams_catalyst_lithium").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_lithium"); - ams_catalyst_niobium = new ItemCatalyst(0x3BF1B6, 1000000, 1.15F, 1.05F, 1.0F).setUnlocalizedName("ams_catalyst_niobium").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_niobium"); - ams_catalyst_schrabidium = new ItemCatalyst(0x32FFFF, 2500000, 1.0F, 1.05F, 1.0F).setUnlocalizedName("ams_catalyst_schrabidium").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_schrabidium"); + ams_catalyst_iron = new ItemCatalyst(0xFF7E22, 1000000, 1.15F, 0.95F, 1.05F).setUnlocalizedName("ams_catalyst_iron").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_iron"); + ams_catalyst_lithium = new ItemCatalyst(0xFF2727, 0, 1.25F, 0.85F, 1.15F).setUnlocalizedName("ams_catalyst_lithium").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_lithium"); + ams_catalyst_niobium = new ItemCatalyst(0x3BF1B6, 1000000, 1.15F, 1.05F, 0.95F).setUnlocalizedName("ams_catalyst_niobium").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_niobium"); + ams_catalyst_schrabidium = new ItemCatalyst(0x32FFFF, 2500000, 1.0F, 1.05F, 0.95F).setUnlocalizedName("ams_catalyst_schrabidium").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_schrabidium"); ams_catalyst_strontium = new ItemCatalyst(0xDD0D35, 1000000, 1.15F, 1.0F, 1.0F).setUnlocalizedName("ams_catalyst_strontium").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_strontium"); - ams_catalyst_thorium = new ItemCatalyst(0x653B22, 2500000, 1.0F, 0.95F, 1.0F).setUnlocalizedName("ams_catalyst_thorium").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_thorium"); - ams_catalyst_tungsten = new ItemCatalyst(0xF5FF48, 0, 1.25F, 1.15F, 1.0F).setUnlocalizedName("ams_catalyst_tungsten").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_tungsten"); + ams_catalyst_thorium = new ItemCatalyst(0x653B22, 2500000, 1.0F, 0.95F, 1.05F).setUnlocalizedName("ams_catalyst_thorium").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_thorium"); + ams_catalyst_tungsten = new ItemCatalyst(0xF5FF48, 0, 1.25F, 1.15F, 0.85F).setUnlocalizedName("ams_catalyst_tungsten").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_tungsten"); cell_empty = new ItemCell().setUnlocalizedName("cell_empty").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":cell_empty"); cell_uf6 = new Item().setUnlocalizedName("cell_uf6").setCreativeTab(MainRegistry.tabParts).setContainerItem(ModItems.cell_empty).setTextureName(RefStrings.MODID + ":cell_uf6"); @@ -1912,10 +1916,10 @@ public class ModItems { ams_focus_limiter = new ItemCustomLore().setUnlocalizedName("ams_focus_limiter").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":ams_focus_limiter"); ams_focus_booster = new ItemCustomLore().setUnlocalizedName("ams_focus_booster").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":ams_focus_booster"); ams_muzzle = new ItemCustomLore().setUnlocalizedName("ams_muzzle").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":ams_muzzle"); - ams_core_sing = new ItemAMSCore().setUnlocalizedName("ams_core_sing").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":ams_core_sing"); - ams_core_wormhole = new ItemAMSCore().setUnlocalizedName("ams_core_wormhole").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":ams_core_wormhole"); - ams_core_eyeofharmony = new ItemAMSCore().setUnlocalizedName("ams_core_eyeofharmony").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":ams_core_eyeofharmony"); - ams_core_thingy = new ItemAMSCore().setUnlocalizedName("ams_core_thingy").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":ams_core_thingy"); + ams_core_sing = new ItemAMSCore(1000000000L, 200, 10).setUnlocalizedName("ams_core_sing").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":ams_core_sing"); + ams_core_wormhole = new ItemAMSCore(1500000000L, 200, 15).setUnlocalizedName("ams_core_wormhole").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":ams_core_wormhole"); + ams_core_eyeofharmony = new ItemAMSCore(2500000000L, 300, 10).setUnlocalizedName("ams_core_eyeofharmony").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":ams_core_eyeofharmony"); + ams_core_thingy = new ItemAMSCore(5000000000L, 250, 5).setUnlocalizedName("ams_core_thingy").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":ams_core_thingy"); upgrade_template = new ItemCustomLore().setUnlocalizedName("upgrade_template").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":upgrade_template"); upgrade_speed_1 = new ItemCustomLore().setUnlocalizedName("upgrade_speed_1").setMaxStackSize(1).setCreativeTab(MainRegistry.tabMachine).setTextureName(RefStrings.MODID + ":upgrade_speed_1"); @@ -2312,6 +2316,7 @@ public class ModItems { GameRegistry.registerItem(ingot_lanthanium, ingot_lanthanium.getUnlocalizedName()); GameRegistry.registerItem(ingot_actinium, ingot_actinium.getUnlocalizedName()); GameRegistry.registerItem(ingot_desh, ingot_desh.getUnlocalizedName()); + GameRegistry.registerItem(ingot_starmetal, ingot_starmetal.getUnlocalizedName()); GameRegistry.registerItem(ingot_euphemium, ingot_euphemium.getUnlocalizedName()); GameRegistry.registerItem(ingot_dineutronium, ingot_dineutronium.getUnlocalizedName()); @@ -2447,6 +2452,7 @@ public class ModItems { GameRegistry.registerItem(plate_paa, plate_paa.getUnlocalizedName()); GameRegistry.registerItem(plate_polymer, plate_polymer.getUnlocalizedName()); GameRegistry.registerItem(plate_dalekanium, plate_dalekanium.getUnlocalizedName()); + GameRegistry.registerItem(plate_desh, plate_desh.getUnlocalizedName()); GameRegistry.registerItem(plate_euphemium, plate_euphemium.getUnlocalizedName()); GameRegistry.registerItem(plate_dineutronium, plate_dineutronium.getUnlocalizedName()); diff --git a/com/hbm/items/special/ItemAMSCore.java b/com/hbm/items/special/ItemAMSCore.java index ac37eff97..6a4fb569f 100644 --- a/com/hbm/items/special/ItemAMSCore.java +++ b/com/hbm/items/special/ItemAMSCore.java @@ -14,6 +14,16 @@ import net.minecraft.item.ItemStack; public class ItemAMSCore extends Item { + long powerBase; + int heatBase; + int fuelBase; + + public ItemAMSCore(long powerBase, int heatBase, int fuelBase) { + this.powerBase = powerBase; + this.heatBase = heatBase; + this.fuelBase = fuelBase; + } + @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { @@ -89,4 +99,22 @@ public class ItemAMSCore extends Item { return false; } + + public static long getPowerBase(ItemStack stack) { + if(stack == null || !(stack.getItem() instanceof ItemAMSCore)) + return 0; + return ((ItemAMSCore)stack.getItem()).powerBase; + } + + public static int getHeatBase(ItemStack stack) { + if(stack == null || !(stack.getItem() instanceof ItemAMSCore)) + return 0; + return ((ItemAMSCore)stack.getItem()).heatBase; + } + + public static int getFuelBase(ItemStack stack) { + if(stack == null || !(stack.getItem() instanceof ItemAMSCore)) + return 0; + return ((ItemAMSCore)stack.getItem()).fuelBase; + } } diff --git a/com/hbm/items/special/ItemCatalyst.java b/com/hbm/items/special/ItemCatalyst.java index 9bf82cefb..a75204787 100644 --- a/com/hbm/items/special/ItemCatalyst.java +++ b/com/hbm/items/special/ItemCatalyst.java @@ -11,7 +11,7 @@ import net.minecraft.item.ItemStack; public class ItemCatalyst extends Item { int color; - int powerAbs; + long powerAbs; float powerMod; float heatMod; float fuelMod; @@ -24,7 +24,7 @@ public class ItemCatalyst extends Item { this.fuelMod = 1.0F; } - public ItemCatalyst(int color, int powerAbs, float powerMod, float heatMod, float fuelMod) { + public ItemCatalyst(int color, long powerAbs, float powerMod, float heatMod, float fuelMod) { this.color = color; this.powerAbs = powerAbs; this.powerMod = powerMod; @@ -44,5 +44,29 @@ public class ItemCatalyst extends Item { list.add("Heat Modifier: " + (heatMod >= 1 ? "+" : "") + (Math.round(heatMod * 1000) * .10 - 100) + "%"); list.add("Fuel Modifier: " + (fuelMod >= 1 ? "+" : "") + (Math.round(fuelMod * 1000) * .10 - 100) + "%"); } + + public static long getPowerAbs(ItemStack stack) { + if(stack == null || !(stack.getItem() instanceof ItemCatalyst)) + return 0; + return ((ItemCatalyst)stack.getItem()).powerAbs; + } + + public static float getPowerMod(ItemStack stack) { + if(stack == null || !(stack.getItem() instanceof ItemCatalyst)) + return 0; + return ((ItemCatalyst)stack.getItem()).powerMod; + } + + public static float getHeatMod(ItemStack stack) { + if(stack == null || !(stack.getItem() instanceof ItemCatalyst)) + return 0; + return ((ItemCatalyst)stack.getItem()).heatMod; + } + + public static float getFuelMod(ItemStack stack) { + if(stack == null || !(stack.getItem() instanceof ItemCatalyst)) + return 0; + return ((ItemCatalyst)stack.getItem()).fuelMod; + } } diff --git a/com/hbm/items/tool/ItemAssemblyTemplate.java b/com/hbm/items/tool/ItemAssemblyTemplate.java index 23ae9202e..bc81df6c2 100644 --- a/com/hbm/items/tool/ItemAssemblyTemplate.java +++ b/com/hbm/items/tool/ItemAssemblyTemplate.java @@ -229,7 +229,9 @@ public class ItemAssemblyTemplate extends Item { FLEIIJA_IGNITER, FLEIJA_CORE, FLEIJA_PROPELLANT, - SCHRABIDIUM_HAMMER; + SCHRABIDIUM_HAMMER, + COMPONENT_LIMITER, + COMPONENT_EMITTER; //private final int value; //private EnumAssemblyTemplate(int value) { @@ -718,6 +720,10 @@ public class ItemAssemblyTemplate extends Item { return 400; case SCHRABIDIUM_HAMMER: return 1000; + case COMPONENT_LIMITER: + return 2500; + case COMPONENT_EMITTER: + return 2500; default: return 100; } diff --git a/com/hbm/lib/ModDamageSource.java b/com/hbm/lib/ModDamageSource.java index 007aad44b..3127e533c 100644 --- a/com/hbm/lib/ModDamageSource.java +++ b/com/hbm/lib/ModDamageSource.java @@ -33,6 +33,8 @@ public class ModDamageSource extends DamageSource { public static DamageSource meteorite = (new DamageSource("meteorite")).setDamageIsAbsolute().setDamageBypassesArmor(); public static DamageSource boxcar = (new DamageSource("boxcar")).setDamageIsAbsolute().setDamageBypassesArmor(); public static DamageSource taint = (new DamageSource("taint")).setDamageIsAbsolute().setDamageBypassesArmor(); + public static DamageSource ams = (new DamageSource("ams")).setDamageIsAbsolute().setDamageBypassesArmor(); + public static DamageSource amsCore = (new DamageSource("amsCore")).setDamageIsAbsolute().setDamageBypassesArmor(); public ModDamageSource(String p_i1566_1_) { super(p_i1566_1_); diff --git a/com/hbm/main/ClientProxy.java b/com/hbm/main/ClientProxy.java index 86179e85b..54ffad5b0 100644 --- a/com/hbm/main/ClientProxy.java +++ b/com/hbm/main/ClientProxy.java @@ -124,6 +124,7 @@ public class ClientProxy extends ServerProxy RenderingRegistry.registerEntityRenderingHandler(EntityNukeCloudSmall.class, new RenderSmallNukeAlt()); RenderingRegistry.registerEntityRenderingHandler(EntityNukeCloudBig.class, new RenderBigNuke()); RenderingRegistry.registerEntityRenderingHandler(EntityCloudFleija.class, new RenderCloudFleija()); + RenderingRegistry.registerEntityRenderingHandler(EntityCloudFleijaRainbow.class, new RenderCloudRainbow()); RenderingRegistry.registerEntityRenderingHandler(EntityNukeCloudNoShroom.class, new RenderNoCloud()); RenderingRegistry.registerEntityRenderingHandler(EntityFalloutRain.class, new RenderFallout()); RenderingRegistry.registerEntityRenderingHandler(EntityBlackHole.class, new RenderBlackHole()); diff --git a/com/hbm/main/CraftingManager.java b/com/hbm/main/CraftingManager.java index 9d1460b31..a2ea1e0ba 100644 --- a/com/hbm/main/CraftingManager.java +++ b/com/hbm/main/CraftingManager.java @@ -1084,6 +1084,7 @@ public class CraftingManager { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_revolver_pip_ammo, 1), new Object[] { "S", "G", "C", 'S', "plateSteel", 'G', Items.gunpowder, 'C', "plateCopper" })); GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.ingot_dineutronium, 1), new Object[] { ModItems.powder_spark_mix, "nuggetSchrabidium" })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.plate_dineutronium, 4), new Object[] { "PIP", "IDI", "PIP", 'P', ModItems.powder_spark_mix, 'I', "ingotDineutronium", 'D', "ingotDesh" })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.plate_desh, 4), new Object[] { "PIP", "IDI", "PIP", 'P', ModItems.powder_polymer, 'I', "ingotDesh", 'D', "ingotDuraSteel" })); GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModBlocks.taint), new Object[] { "nuggetEuphemium", ModItems.nuclear_waste })); GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModBlocks.taint), new Object[] { "nuggetEuphemium", ModItems.trinitite })); GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.meteor_remote), new Object[] { "nuggetSchrabidium", ModItems.fragment_meteorite, ModItems.crate_caller })); diff --git a/com/hbm/main/MainRegistry.java b/com/hbm/main/MainRegistry.java index e894715ee..ee380675e 100644 --- a/com/hbm/main/MainRegistry.java +++ b/com/hbm/main/MainRegistry.java @@ -41,6 +41,7 @@ import com.hbm.creativetabs.NukeTab; import com.hbm.creativetabs.PartsTab; import com.hbm.entity.effect.EntityBlackHole; import com.hbm.entity.effect.EntityCloudFleija; +import com.hbm.entity.effect.EntityCloudFleijaRainbow; import com.hbm.entity.effect.EntityEMPBlast; import com.hbm.entity.effect.EntityFalloutRain; import com.hbm.entity.effect.EntityNukeCloudBig; @@ -74,6 +75,7 @@ import com.hbm.entity.logic.EntityMissileTest; import com.hbm.entity.logic.EntityNukeExplosion; import com.hbm.entity.logic.EntityNukeExplosionAdvanced; import com.hbm.entity.logic.EntityNukeExplosionMK3; +import com.hbm.entity.logic.EntityNukeExplosionMK4; import com.hbm.entity.logic.EntityNukeExplosionPlus; import com.hbm.entity.logic.IChunkLoader; import com.hbm.entity.missile.EntityBombletSelena; @@ -647,6 +649,8 @@ public class MainRegistry EntityRegistry.registerModEntity(EntityBoxcar.class, "entity_boxcar", 86, this, 1000, 1, true); EntityRegistry.registerModEntity(EntityMissileTaint.class, "entity_missile_taint", 87, this, 1000, 1, true); EntityRegistry.registerModEntity(EntityGrenadeGascan.class, "entity_grenade_gascan", 88, this, 1000, 1, true); + EntityRegistry.registerModEntity(EntityNukeExplosionMK4.class, "entity_nuke_mk4", 89, this, 1000, 1, true); + EntityRegistry.registerModEntity(EntityCloudFleijaRainbow.class, "entity_cloud_rainbow", 90, this, 1000, 1, true); EntityRegistry.registerGlobalEntityID(EntityNuclearCreeper.class, "entity_mob_nuclear_creeper", EntityRegistry.findGlobalUniqueEntityId(), 0x204131, 0x75CE00); EntityRegistry.registerGlobalEntityID(EntityHunterChopper.class, "entity_mob_hunter_chopper", EntityRegistry.findGlobalUniqueEntityId(), 0x000020, 0x2D2D72); diff --git a/com/hbm/render/entity/RenderCloudRainbow.java b/com/hbm/render/entity/RenderCloudRainbow.java new file mode 100644 index 000000000..630ea983d --- /dev/null +++ b/com/hbm/render/entity/RenderCloudRainbow.java @@ -0,0 +1,71 @@ +package com.hbm.render.entity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.entity.effect.EntityCloudFleija; +import com.hbm.entity.effect.EntityCloudFleijaRainbow; +import com.hbm.lib.RefStrings; + +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.entity.Entity; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.model.AdvancedModelLoader; +import net.minecraftforge.client.model.IModelCustom; + +public class RenderCloudRainbow extends Render { + + private static final ResourceLocation objTesterModelRL = new ResourceLocation(/*"/assets/" + */RefStrings.MODID, "models/Sphere.obj"); + private IModelCustom blastModel; + public float scale = 0; + public float ring = 0; + + public RenderCloudRainbow() { + blastModel = AdvancedModelLoader.loadModel(objTesterModelRL); + scale = 0; + } + + @Override + public void doRender(Entity p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) { + render((EntityCloudFleijaRainbow)p_76986_1_, p_76986_2_, p_76986_4_, p_76986_6_, p_76986_8_, p_76986_9_); + } + + public void render(EntityCloudFleijaRainbow cloud, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) { + GL11.glPushMatrix(); + GL11.glTranslatef((float)p_76986_2_, (float)p_76986_4_, (float)p_76986_6_); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glDisable(GL11.GL_TEXTURE_2D); + + GL11.glScalef(cloud.age, cloud.age, cloud.age); + + GL11.glColor3ub((byte)cloud.worldObj.rand.nextInt(0x100), (byte)cloud.worldObj.rand.nextInt(0x100), (byte)cloud.worldObj.rand.nextInt(0x100)); + + GL11.glScalef(0.5F, 0.5F, 0.5F); + blastModel.renderAll(); + GL11.glScalef(1/0.5F, 1/0.5F, 1/0.5F); + + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); + + for(float i = 0.6F; i <= 1F; i += 0.1F) { + + GL11.glColor3ub((byte)cloud.worldObj.rand.nextInt(0x100), (byte)cloud.worldObj.rand.nextInt(0x100), (byte)cloud.worldObj.rand.nextInt(0x100)); + + GL11.glScalef(i, i, i); + blastModel.renderAll(); + GL11.glScalef(1/i, 1/i, 1/i); + } + + GL11.glDisable(GL11.GL_BLEND); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glDisable(GL11.GL_CULL_FACE); + + GL11.glPopMatrix(); + } + + @Override + protected ResourceLocation getEntityTexture(Entity p_110775_1_) { + return null; + } +} diff --git a/com/hbm/tileentity/machine/TileEntityAMSBase.java b/com/hbm/tileentity/machine/TileEntityAMSBase.java index 8f93e8bc4..3ea1ed041 100644 --- a/com/hbm/tileentity/machine/TileEntityAMSBase.java +++ b/com/hbm/tileentity/machine/TileEntityAMSBase.java @@ -16,12 +16,14 @@ import com.hbm.items.ModItems; import com.hbm.items.special.ItemAMSCore; import com.hbm.items.special.ItemCatalyst; import com.hbm.lib.Library; +import com.hbm.lib.ModDamageSource; import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.AuxGaugePacket; import com.hbm.packet.PacketDispatcher; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; @@ -237,6 +239,15 @@ public class TileEntityAMSBase extends TileEntity implements ISidedInventory, IS if (!worldObj.isRemote) { if(!locked) { + + age++; + if(age >= 20) + { + age = 0; + } + + if(age == 9 || age == 19) + ffgeuaInit(); tanks[0].setType(0, 1, slots); tanks[1].setType(2, 3, slots); @@ -297,6 +308,13 @@ public class TileEntityAMSBase extends TileEntity implements ISidedInventory, IS this.color = -1; + float powerMod = 1; + float heatMod = 1; + float fuelMod = 1; + long powerBase = 0; + int heatBase = 0; + int fuelBase = 0; + if(slots[8] != null && slots[9] != null && slots[10] != null && slots[11] != null && slots[12] != null && slots[8].getItem() instanceof ItemCatalyst && slots[9].getItem() instanceof ItemCatalyst && slots[10].getItem() instanceof ItemCatalyst && slots[11].getItem() instanceof ItemCatalyst && @@ -312,8 +330,51 @@ public class TileEntityAMSBase extends TileEntity implements ISidedInventory, IS int g = this.calcAvgHex(e, f); this.color = g; + + + for(int i = 8; i < 12; i++) { + powerBase += ItemCatalyst.getPowerAbs(slots[i]); + powerMod *= ItemCatalyst.getPowerMod(slots[i]); + heatMod *= ItemCatalyst.getHeatMod(slots[i]); + fuelMod *= ItemCatalyst.getFuelMod(slots[i]); + } + + powerBase = ItemAMSCore.getPowerBase(slots[12]); + heatBase = ItemAMSCore.getHeatBase(slots[12]); + fuelBase = ItemAMSCore.getFuelBase(slots[12]); + + powerBase *= this.efficiency; + powerBase *= Math.pow(1.25F, booster); + heatBase *= Math.pow(1.25F, booster); + heatBase *= (100 - field); + + if(this.getFuelPower(tanks[2].getTankType()) > 0 && this.getFuelPower(tanks[3].getTankType()) > 0) { + + power += (powerBase * powerMod * gauss(1, (heat - (maxHeat / 2)) / maxHeat)); + heat += (heatBase * heatMod) / (float)(this.field / 100F); + tanks[2].setFill((int)(tanks[2].getFill() - fuelBase * fuelMod)); + tanks[3].setFill((int)(tanks[3].getFill() - fuelBase * fuelMod)); + if(tanks[2].getFill() <= 0) + tanks[2].setFill(0); + if(tanks[3].getFill() <= 0) + tanks[3].setFill(0); + + radiation(); + + if(heat > maxHeat) { + explode(); + heat = maxHeat; + } + + if(field < 2) + explode(); + } } + if(power > maxPower) + power = maxPower; + + if(heat > 0 && tanks[0].getFill() > 0 && tanks[1].getFill() > 0) { heat -= (this.getCoolingStrength(tanks[0].getTankType()) * this.getCoolingStrength(tanks[1].getTankType())); @@ -344,16 +405,45 @@ public class TileEntityAMSBase extends TileEntity implements ISidedInventory, IS } } + private void radiation() { + + double maxSize = 5; + double minSize = 0.5; + double scale = minSize; + scale += ((((double)this.tanks[2].getFill()) / ((double)this.tanks[2].getMaxFill())) + (((double)this.tanks[3].getFill()) / ((double)this.tanks[3].getMaxFill()))) * ((maxSize - minSize) / 2); + + scale *= 0.60; + + List list = worldObj.getEntitiesWithinAABBExcludingEntity(null, AxisAlignedBB.getBoundingBox(xCoord - 10 + 0.5, yCoord - 10 + 0.5 + 6, zCoord - 10 + 0.5, xCoord + 10 + 0.5, yCoord + 10 + 0.5 + 6, zCoord + 10 + 0.5)); + + for(Entity e : list) { + if(!Library.isObstructed(worldObj, xCoord + 0.5, yCoord + 0.5 + 6, zCoord + 0.5, e.posX, e.posY + e.getEyeHeight(), e.posZ)) { + e.attackEntityFrom(ModDamageSource.ams, 1000); + e.setFire(3); + } + } + + List list2 = worldObj.getEntitiesWithinAABBExcludingEntity(null, AxisAlignedBB.getBoundingBox(xCoord - scale + 0.5, yCoord - scale + 0.5 + 6, zCoord - scale + 0.5, xCoord + scale + 0.5, yCoord + scale + 0.5 + 6, zCoord + scale + 0.5)); + + for(Entity e : list2) { + e.attackEntityFrom(ModDamageSource.amsCore, 10000); + } + } + + private void explode() { + + } + private int getCoolingStrength(FluidType type) { switch(type) { case WATER: - return 50; + return 5; case OIL: - return 150; + return 15; case COOLANT: - return this.heat / 50; + return this.heat / 250; case CRYOGEL: - return this.heat > heat/2 ? 200 : 50; + return this.heat > heat/2 ? 25 : 5; default: return 0; } @@ -483,6 +573,7 @@ public class TileEntityAMSBase extends TileEntity implements ISidedInventory, IS ffgeua(this.xCoord + 2, this.yCoord, this.zCoord, getTact()); ffgeua(this.xCoord, this.yCoord, this.zCoord - 2, getTact()); ffgeua(this.xCoord, this.yCoord, this.zCoord + 2, getTact()); + ffgeua(this.xCoord, this.yCoord - 1, this.zCoord, getTact()); } @Override