diff --git a/src/main/java/com/hbm/entity/projectile/EntityChemical.java b/src/main/java/com/hbm/entity/projectile/EntityChemical.java index bd8e0e3e2..ac5862b19 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityChemical.java +++ b/src/main/java/com/hbm/entity/projectile/EntityChemical.java @@ -15,7 +15,10 @@ import com.hbm.inventory.fluid.trait.FT_Poison; import com.hbm.inventory.fluid.trait.FT_VentRadiation; import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; +import com.hbm.tileentity.IRepairable; +import com.hbm.tileentity.IRepairable.EnumExtinguishType; import com.hbm.util.ArmorUtil; +import com.hbm.util.CompatExternal; import com.hbm.util.ContaminationUtil; import com.hbm.util.EnchantmentUtil; import com.hbm.util.ContaminationUtil.ContaminationType; @@ -30,6 +33,7 @@ import net.minecraft.init.Blocks; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; +import net.minecraft.tileentity.TileEntity; import net.minecraft.util.DamageSource; import net.minecraft.util.EntityDamageSourceIndirect; import net.minecraft.util.MathHelper; @@ -43,7 +47,7 @@ public class EntityChemical extends EntityThrowableNT { /* * TYPE INFO: * - * if ANTIMATTER: ignore all other traits, become a gamme beam with no gravity + * if ANTIMATTER: ignore all other traits, become a gamma beam with no gravity * if HOT: set fire and deal extra fire damage, scaling with the temperature * if COLD: freeze, duration scaling with temperature, assuming COMBUSTIBLE does not apply * if GAS: short range with the spread going up @@ -253,9 +257,15 @@ public class EntityChemical extends EntityThrowableNT { } } + /* whether this type should extinguish entities */ protected boolean isExtinguishing() { return this.getStyle() == ChemicalStyle.LIQUID && this.getType().temperature < 50 && !this.getType().hasTrait(FT_Flammable.class); } + + /* the extinguish type for burning multiblocks, roughly identical to the fire extinguisher */ + protected EnumExtinguishType getExtinguishingType(FluidType type) { + return type == Fluids.CARBONDIOXIDE ? EnumExtinguishType.CO2 : type == Fluids.WATER || type == Fluids.HEAVYWATER || type == Fluids.COOLANT ? EnumExtinguishType.WATER : null; + } protected DamageSource getDamage(String name) { @@ -378,6 +388,14 @@ public class EntityChemical extends EntityThrowableNT { } } + EnumExtinguishType fext = this.getExtinguishingType(type); + if(fext != null) { + TileEntity core = CompatExternal.getCoreFromPos(worldObj, x, y, z); + if(core instanceof IRepairable) { + ((IRepairable) core).tryExtinguish(worldObj, x, y, z, fext); + } + } + Block block = worldObj.getBlock(x, y, z); if(type == Fluids.SEEDSLURRY) { if(block == Blocks.dirt || block == ModBlocks.waste_earth || block == ModBlocks.dirt_dead || block == ModBlocks.dirt_oily) { diff --git a/src/main/java/com/hbm/handler/guncfg/GunEnergyFactory.java b/src/main/java/com/hbm/handler/guncfg/GunEnergyFactory.java index 27bc4ad4e..2fafccbeb 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunEnergyFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunEnergyFactory.java @@ -22,6 +22,9 @@ import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; import com.hbm.potion.HbmPotion; import com.hbm.render.util.RenderScreenOverlay.Crosshair; +import com.hbm.tileentity.IRepairable; +import com.hbm.tileentity.IRepairable.EnumExtinguishType; +import com.hbm.util.CompatExternal; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.block.Block; @@ -30,6 +33,7 @@ import net.minecraft.init.Blocks; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; +import net.minecraft.tileentity.TileEntity; public class GunEnergyFactory { @@ -366,6 +370,8 @@ public class GunEnergyFactory { bullet.style = BulletConfiguration.STYLE_NONE; bullet.plink = BulletConfiguration.PLINK_NONE; + bullet.bHurt = (bulletEntity, target) -> { target.extinguish(); }; + bullet.bImpact = new IBulletImpactBehavior() { @Override @@ -391,6 +397,11 @@ public class GunEnergyFactory { } } + TileEntity core = CompatExternal.getCoreFromPos(bullet.worldObj, ix, iy, iz); + if(core instanceof IRepairable) { + ((IRepairable) core).tryExtinguish(bullet.worldObj, ix, iy, iz, EnumExtinguishType.WATER); + } + if(fizz) bullet.worldObj.playSoundEffect(bullet.posX, bullet.posY, bullet.posZ, "random.fizz", 1.0F, 1.5F + bullet.worldObj.rand.nextFloat() * 0.5F); } @@ -468,6 +479,12 @@ public class GunEnergyFactory { Block b = bullet.worldObj.getBlock(ix, iy, iz); + TileEntity core = CompatExternal.getCoreFromPos(bullet.worldObj, ix, iy, iz); + if(core instanceof IRepairable) { + ((IRepairable) core).tryExtinguish(bullet.worldObj, ix, iy, iz, EnumExtinguishType.FOAM); + return; + } + if(b.isReplaceable(bullet.worldObj, ix, iy, iz) && ModBlocks.foam_layer.canPlaceBlockAt(bullet.worldObj, ix, iy, iz)) { if(b != ModBlocks.foam_layer) { @@ -520,6 +537,8 @@ public class GunEnergyFactory { bullet.ammo = new ComparableStack(ModItems.ammo_fireext.stackFromEnum(AmmoFireExt.SAND)); bullet.spread = 0.1F; + bullet.bHurt = null; // does not extinguish entities + bullet.bImpact = new IBulletImpactBehavior() { @Override @@ -533,6 +552,12 @@ public class GunEnergyFactory { Block b = bullet.worldObj.getBlock(ix, iy, iz); + TileEntity core = CompatExternal.getCoreFromPos(bullet.worldObj, ix, iy, iz); + if(core instanceof IRepairable) { + ((IRepairable) core).tryExtinguish(bullet.worldObj, ix, iy, iz, EnumExtinguishType.SAND); + return; + } + if((b.isReplaceable(bullet.worldObj, ix, iy, iz) || b == ModBlocks.sand_boron_layer) && ModBlocks.sand_boron_layer.canPlaceBlockAt(bullet.worldObj, ix, iy, iz)) { if(b != ModBlocks.sand_boron_layer) { diff --git a/src/main/java/com/hbm/handler/nei/VacuumRecipeHandler.java b/src/main/java/com/hbm/handler/nei/VacuumRecipeHandler.java new file mode 100644 index 000000000..527bcc7b5 --- /dev/null +++ b/src/main/java/com/hbm/handler/nei/VacuumRecipeHandler.java @@ -0,0 +1,16 @@ +package com.hbm.handler.nei; + +import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.recipes.RefineryRecipes; + +public class VacuumRecipeHandler extends NEIUniversalHandler { + + public VacuumRecipeHandler() { + super("Vacuum Refinery", ModBlocks.machine_vacuum_distill, RefineryRecipes.getVacuumRecipe()); + } + + @Override + public String getKey() { + return "ntmVacuum"; + } +} diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index 23ff3bbad..58a863dea 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -427,7 +427,7 @@ public class OreDictManager { ANY_GUNPOWDER .dust(Items.gunpowder, ballistite, cordite); ANY_SMOKELESS .dust(ballistite, cordite); ANY_PLASTICEXPLOSIVE .ingot(ingot_semtex, ingot_c4); - ANY_HIGHEXPLOSIVE .ingot(ball_tnt); + ANY_HIGHEXPLOSIVE .ingot(ball_tnt).ingot(ball_tatb); ANY_CONCRETE .any(concrete, concrete_smooth, concrete_asbestos, ducrete, ducrete_smooth); for(int i = 0; i < 16; i++) { ANY_CONCRETE.any(new ItemStack(ModBlocks.concrete_colored, 1, i)); } ANY_COKE .gem(fromAll(coke, EnumCokeType.class)).block(fromAll(block_coke, EnumCokeType.class)); diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index 7680f5e37..7ce2a4fb2 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -365,7 +365,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModItems.grenade_zomg, 1), new AStack[] {new ComparableStack(ModItems.plate_paa, 3), new OreDictStack(OreDictManager.getReflector(), 1), new ComparableStack(ModItems.coil_magnetized_tungsten, 3), new ComparableStack(ModItems.powder_power, 3), },300); makeRecipe(new ComparableStack(ModItems.grenade_black_hole, 1), new AStack[] {new OreDictStack(ANY_PLASTIC.ingot(), 6), new OreDictStack(OreDictManager.getReflector(), 3), new ComparableStack(ModItems.coil_magnetized_tungsten, 2), new ComparableStack(ModItems.black_hole, 1), },500); makeRecipe(new ComparableStack(ModItems.early_explosive_lenses, 1), new AStack[] {new OreDictStack(AL.plate(), 8), new ComparableStack(ModItems.wire_gold, 16), new ComparableStack(ModBlocks.det_cord, 8), new OreDictStack(CU.plate(), 2), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 20), new OreDictStack(ANY_PLASTIC.ingot(), 4)},400); //8 HE lenses (polymer inserts since no baratol) w/ bridge-wire detonators, aluminum pushers, & duraluminum shell - makeRecipe(new ComparableStack(ModItems.explosive_lenses, 1), new AStack[] {new OreDictStack(AL.plate(), 8), new ComparableStack(ModItems.wire_red_copper, 16), new OreDictStack(ANY_PLASTICEXPLOSIVE.ingot(), 4), new OreDictStack(CU.plate(), 2), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 16), new OreDictStack(RUBBER.ingot(), 2)},500); //8 HE (To use 16 PBX ingots; rubber inserts) lenses w/ improved bridge-wire detonators, thin aluminum pushers, & duraluminum shell + makeRecipe(new ComparableStack(ModItems.explosive_lenses, 1), new AStack[] {new OreDictStack(AL.plate(), 8), new ComparableStack(ModItems.wire_red_copper, 16), new OreDictStack(ANY_PLASTICEXPLOSIVE.ingot(), 4), new OreDictStack(CU.plate(), 2), new ComparableStack(ModItems.ball_tatb, 16), new OreDictStack(RUBBER.ingot(), 2)},500); //8 HE (To use 16 PBX ingots; rubber inserts) lenses w/ improved bridge-wire detonators, thin aluminum pushers, & duraluminum shell makeRecipe(new ComparableStack(ModItems.gadget_wireing, 1), new AStack[] {new OreDictStack(IRON.plate(), 1), new ComparableStack(ModItems.wire_gold, 12), },100); makeRecipe(new ComparableStack(ModItems.gadget_core, 1), new AStack[] {new OreDictStack(PU239.nugget(), 7), new OreDictStack(U238.nugget(), 3), },200); makeRecipe(new ComparableStack(ModItems.boy_shielding, 1), new AStack[] {new OreDictStack(OreDictManager.getReflector(), 12), new OreDictStack(STEEL.plate(), 4), },150); diff --git a/src/main/java/com/hbm/inventory/recipes/MachineRecipes.java b/src/main/java/com/hbm/inventory/recipes/MachineRecipes.java index b93244ff0..847c5b225 100644 --- a/src/main/java/com/hbm/inventory/recipes/MachineRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/MachineRecipes.java @@ -34,225 +34,6 @@ public class MachineRecipes { return null; } - public static ItemStack getCyclotronOutput(ItemStack part, ItemStack item) { - - if(part == null || item == null) - return null; - - //LITHIUM - if (part.getItem() == ModItems.part_lithium) { - if(item.getItem() == ModItems.niter) - return new ItemStack(ModItems.fluorite, 1); - if(item.getItem() == ModItems.powder_coal) - return new ItemStack(ModItems.fluorite, 1); - if(mODE(item, "dustIron")) - return new ItemStack(ModItems.powder_cobalt, 1); - if(mODE(item, "dustGold")) - return new ItemStack(ModItems.powder_lead, 1); - if(mODE(item, "dustNetherQuartz")) - return new ItemStack(ModItems.sulfur, 1); - if(mODE(item, "dustUranium")) - return new ItemStack(ModItems.powder_plutonium, 1); - if(mODE(item, "dustAluminum")) - return new ItemStack(ModItems.powder_quartz, 1); - if(mODE(item, "dustBeryllium")) - return new ItemStack(ModItems.powder_coal, 1); - if(item.getItem() == ModItems.powder_schrabidium) - return new ItemStack(ModItems.powder_reiium, 1); - if(item.getItem() == ModItems.powder_lithium) - return new ItemStack(ModItems.powder_coal, 1); - if(item.getItem() == ModItems.powder_iodine) - return new ItemStack(ModItems.powder_caesium, 1); - if(item.getItem() == ModItems.powder_thorium) - return new ItemStack(ModItems.powder_uranium, 1); - if(item.getItem() == ModItems.powder_caesium) - return new ItemStack(ModItems.powder_lanthanium, 1); - if(item.getItem() == ModItems.powder_reiium) - return new ItemStack(ModItems.powder_weidanium, 1); - if(mODE(item, "dustCobalt")) - return new ItemStack(ModItems.powder_copper, 1); - if(item.getItem() == ModItems.powder_cerium) - return new ItemStack(ModItems.powder_neodymium, 1); - if(item.getItem() == ModItems.powder_actinium) - return new ItemStack(ModItems.powder_thorium, 1); - if(item.getItem() == ModItems.powder_lanthanium) - return new ItemStack(ModItems.powder_cerium, 1); - } - - //BERYLLIUM - if (part.getItem() == ModItems.part_beryllium) { - if(mODE(item, "dustSulfur")) - return new ItemStack(ModItems.powder_titanium, 1); - if(item.getItem() == ModItems.fluorite) - return new ItemStack(ModItems.powder_aluminium, 1); - if(mODE(item, "dustIron")) - return new ItemStack(ModItems.powder_copper, 1); - if(mODE(item, "dustNetherQuartz")) - return new ItemStack(ModItems.powder_titanium, 1); - if(mODE(item, "dustTitanium")) - return new ItemStack(ModItems.powder_iron, 1); - if(mODE(item, "dustCopper")) - return new ItemStack(ModItems.powder_bromine, 1); - if(mODE(item, "dustTungsten")) - return new ItemStack(ModItems.powder_gold, 1); - if(mODE(item, "dustAluminum")) - return new ItemStack(ModItems.sulfur, 1); - if(mODE(item, "dustLead")) - return new ItemStack(ModItems.powder_astatine, 1); - if(mODE(item, "dustBeryllium")) - return new ItemStack(ModItems.niter, 1); - if(mODE(item, "dustLithium")) - return new ItemStack(ModItems.niter, 1); - if(item.getItem() == ModItems.powder_iodine) - return new ItemStack(ModItems.powder_cerium, 1); - if(item.getItem() == ModItems.powder_thorium) - return new ItemStack(ModItems.powder_neptunium, 1); - if(item.getItem() == ModItems.powder_astatine) - return new ItemStack(ModItems.powder_actinium, 1); - if(item.getItem() == ModItems.powder_caesium) - return new ItemStack(ModItems.powder_neodymium, 1); - if(item.getItem() == ModItems.powder_weidanium) - return new ItemStack(ModItems.powder_australium, 1); - if(item.getItem() == ModItems.powder_strontium) - return new ItemStack(ModItems.powder_niobium, 1); - if(item.getItem() == ModItems.powder_bromine) - return new ItemStack(ModItems.powder_strontium, 1); - if(item.getItem() == ModItems.powder_actinium) - return new ItemStack(ModItems.powder_uranium, 1); - if(item.getItem() == ModItems.powder_lanthanium) - return new ItemStack(ModItems.powder_neodymium, 1); - } - - //CARBON - if (part.getItem() == ModItems.part_carbon) { - if(mODE(item, "dustSulfur")) - return new ItemStack(ModItems.powder_iron, 1); - if(item.getItem() == ModItems.niter) - return new ItemStack(ModItems.powder_aluminium, 1); - if(item.getItem() == ModItems.fluorite) - return new ItemStack(ModItems.sulfur, 1); - if(mODE(item, "dustCoal")) - return new ItemStack(ModItems.powder_aluminium, 1); - if(mODE(item, "dustIron")) - return new ItemStack(ModItems.powder_bromine, 1); - if(mODE(item, "dustGold")) - return new ItemStack(ModItems.powder_astatine, 1); - if(mODE(item, "dustNetherQuartz")) - return new ItemStack(ModItems.powder_iron, 1); - if(item.getItem() == ModItems.powder_plutonium) - return new ItemStack(ModItems.powder_tennessine, 1); - if(item.getItem() == ModItems.powder_neptunium) - return new ItemStack(ModItems.powder_tennessine, 1); - if(mODE(item, "dustTitanium")) - return new ItemStack(ModItems.powder_bromine, 1); - if(mODE(item, "dustCopper")) - return new ItemStack(ModItems.powder_strontium, 1); - if(mODE(item, "dustTungsten")) - return new ItemStack(ModItems.powder_lead, 1); - if(mODE(item, "dustAluminum")) - return new ItemStack(ModItems.powder_titanium, 1); - if(mODE(item, "dustLead")) - return new ItemStack(ModItems.powder_thorium, 1); - if(mODE(item, "dustBeryllium")) - return new ItemStack(ModItems.fluorite, 1); - if(mODE(item, "dustLithium")) - return new ItemStack(ModItems.fluorite, 1); - if(item.getItem() == ModItems.powder_iodine) - return new ItemStack(ModItems.powder_tungsten, 1); - if(item.getItem() == ModItems.powder_neodymium) - return new ItemStack(ModItems.powder_tungsten, 1); - if(item.getItem() == ModItems.powder_australium) - return new ItemStack(ModItems.powder_verticium, 1); - if(item.getItem() == ModItems.powder_strontium) - return new ItemStack(ModItems.powder_iodine, 1); - if(mODE(item, "dustCobalt")) - return new ItemStack(ModItems.powder_strontium, 1); - if(item.getItem() == ModItems.powder_bromine) - return new ItemStack(ModItems.powder_niobium, 1); - if(item.getItem() == ModItems.powder_niobium) - return new ItemStack(ModItems.powder_iodine, 1); - if(item.getItem() == ModItems.powder_tennessine) - return new ItemStack(ModItems.powder_schrabidium, 1); - if(item.getItem() == ModItems.powder_cerium) - return new ItemStack(ModItems.powder_tungsten, 1); - } - - //COPPER - if (part.getItem() == ModItems.part_copper) { - if(mODE(item, "dustSulfur")) - return new ItemStack(ModItems.powder_bromine, 1); - if(item.getItem() == ModItems.niter) - return new ItemStack(ModItems.powder_cobalt, 1); - if(item.getItem() == ModItems.fluorite) - return new ItemStack(ModItems.powder_iron, 1); - if(mODE(item, "dustCoal")) - return new ItemStack(ModItems.powder_iron, 1); - if(mODE(item, "dustIron")) - return new ItemStack(ModItems.powder_niobium, 1); - if(mODE(item, "dustGold")) - return new ItemStack(ModItems.powder_lanthanium, 1); - if(mODE(item, "dustNetherQuartz")) - return new ItemStack(ModItems.powder_bromine, 1); - if(mODE(item, "dustUranium")) - return new ItemStack(ModItems.powder_tennessine, 1); - if(mODE(item, "dustTitanium")) - return new ItemStack(ModItems.powder_strontium, 1); - if(mODE(item, "dustCopper")) - return new ItemStack(ModItems.powder_niobium, 1); - if(mODE(item, "dustTungsten")) - return new ItemStack(ModItems.powder_actinium, 1); - if(mODE(item, "dustAluminum")) - return new ItemStack(ModItems.powder_bromine, 1); - if(mODE(item, "dustLead")) - return new ItemStack(ModItems.powder_tennessine, 1); - if(mODE(item, "dustBeryllium")) - return new ItemStack(ModItems.powder_bromine, 1); - if(mODE(item, "dustLithium")) - return new ItemStack(ModItems.powder_bromine, 1); - if(item.getItem() == ModItems.powder_iodine) - return new ItemStack(ModItems.powder_astatine, 1); - if(item.getItem() == ModItems.powder_thorium) - return new ItemStack(ModItems.powder_tennessine, 1); - if(item.getItem() == ModItems.powder_neodymium) - return new ItemStack(ModItems.powder_lead, 1); - if(item.getItem() == ModItems.powder_astatine) - return new ItemStack(ModItems.powder_plutonium, 1); - if(item.getItem() == ModItems.powder_caesium) - return new ItemStack(ModItems.powder_tungsten, 1); - if(item.getItem() == ModItems.powder_verticium) - return new ItemStack(ModItems.powder_unobtainium, 1); - if(mODE(item, "dustCobalt")) - return new ItemStack(ModItems.powder_iodine, 1); - if(item.getItem() == ModItems.powder_bromine) - return new ItemStack(ModItems.powder_caesium, 1); - if(item.getItem() == ModItems.powder_niobium) - return new ItemStack(ModItems.powder_cerium, 1); - if(item.getItem() == ModItems.powder_tennessine) - return new ItemStack(ModItems.powder_reiium, 1); - if(item.getItem() == ModItems.powder_cerium) - return new ItemStack(ModItems.powder_lead, 1); - if(item.getItem() == ModItems.powder_actinium) - return new ItemStack(ModItems.powder_tennessine, 1); - if(item.getItem() == ModItems.powder_lanthanium) - return new ItemStack(ModItems.powder_astatine, 1); - } - - //PLUTONIUM - if (part.getItem() == ModItems.part_plutonium) { - if(mODE(item, "dustUranium")) - return new ItemStack(ModItems.powder_schrabidium, 1); - if(item.getItem() == ModItems.powder_plutonium) - return new ItemStack(ModItems.powder_schrabidium, 1); - if(item.getItem() == ModItems.powder_neptunium) - return new ItemStack(ModItems.powder_schrabidium, 1); - if(item.getItem() == ModItems.powder_unobtainium) - return new ItemStack(ModItems.powder_daffergon, 1); - if(item.getItem() == ModItems.cell_antimatter) - return new ItemStack(ModItems.cell_anti_schrabidium, 1); - } - - return null; - } public ArrayList getAlloyFuels() { ArrayList fuels = new ArrayList(); @@ -270,324 +51,6 @@ public class MachineRecipes { return fuels; } - @Spaghetti("why did i do this?") - public Map getCyclotronRecipes() { - Map recipes = new HashMap(); - Item part = ModItems.part_lithium; - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.niter) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.niter))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_coal) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_coal))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_iron) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_iron))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_gold) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_gold))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_quartz) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_quartz))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_uranium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_uranium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_aluminium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_aluminium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_beryllium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_beryllium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_schrabidium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_schrabidium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_lithium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_lithium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_iodine) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_iodine))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_thorium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_thorium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_caesium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_caesium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_reiium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_reiium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_cobalt) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_cobalt))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_cerium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_cerium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_actinium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_actinium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_lanthanium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_lanthanium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.nothing) }, - new ItemStack(ModItems.cell_antimatter)); - - part = ModItems.part_beryllium; - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.sulfur) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.sulfur))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.fluorite) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.fluorite))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_iron) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_iron))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_quartz) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_quartz))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_titanium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_titanium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_copper) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_copper))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_tungsten) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_tungsten))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_aluminium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_aluminium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_lead) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_lead))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_beryllium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_beryllium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_lithium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_lithium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_iodine) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_iodine))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_thorium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_thorium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_astatine) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_astatine))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_caesium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_caesium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_weidanium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_weidanium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_strontium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_strontium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_bromine) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_bromine))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_actinium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_actinium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_lanthanium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_lanthanium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.nothing) }, - new ItemStack(ModItems.cell_antimatter)); - - part = ModItems.part_carbon; - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.sulfur) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.sulfur))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.niter) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.niter))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.fluorite) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.fluorite))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_coal) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_coal))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_iron) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_iron))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_gold) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_gold))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_quartz) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_quartz))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_plutonium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_plutonium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_neptunium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_neptunium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_titanium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_titanium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_copper) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_copper))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_tungsten) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_tungsten))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_aluminium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_aluminium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_lead) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_lead))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_beryllium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_beryllium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_lithium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_lithium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_iodine) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_iodine))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_neodymium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_neodymium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_australium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_australium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_strontium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_strontium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_cobalt) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_cobalt))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_bromine) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_bromine))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_niobium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_niobium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_tennessine) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_tennessine))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_cerium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_cerium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.nothing) }, - new ItemStack(ModItems.cell_antimatter)); - - part = ModItems.part_copper; - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.sulfur) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.sulfur))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.niter) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.niter))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.fluorite) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.fluorite))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_coal) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_coal))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_iron) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_iron))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_gold) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_gold))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_quartz) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_quartz))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_uranium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_uranium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_titanium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_titanium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_copper) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_copper))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_tungsten) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_tungsten))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_aluminium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_aluminium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_lead) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_lead))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_beryllium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_beryllium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_lithium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_lithium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_iodine) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_iodine))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_thorium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_thorium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_neodymium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_neodymium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_astatine) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_astatine))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_caesium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_caesium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_verticium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_verticium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_cobalt) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_cobalt))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_bromine) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_bromine))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_niobium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_niobium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_tennessine) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_tennessine))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_cerium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_cerium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_actinium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_actinium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_lanthanium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_lanthanium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.nothing) }, - new ItemStack(ModItems.cell_antimatter)); - - part = ModItems.part_plutonium; - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_uranium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_uranium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_plutonium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_plutonium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_neptunium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_neptunium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.powder_unobtainium) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.powder_unobtainium))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.cell_antimatter) }, - getCyclotronOutput(new ItemStack(part), new ItemStack(ModItems.cell_antimatter))); - - recipes.put(new ItemStack[] { new ItemStack(part), new ItemStack(ModItems.nothing) }, - new ItemStack(ModItems.cell_antimatter)); - - return recipes; - } - /* * this is the smoldering crater where once the 2016 shredder recipe code was */ diff --git a/src/main/java/com/hbm/inventory/recipes/RefineryRecipes.java b/src/main/java/com/hbm/inventory/recipes/RefineryRecipes.java index 34b8621a5..314e50d56 100644 --- a/src/main/java/com/hbm/inventory/recipes/RefineryRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/RefineryRecipes.java @@ -28,6 +28,11 @@ public class RefineryRecipes { public static final int crack_frac_aroma = 15; public static final int crack_frac_unsat = 15; + public static final int vac_frac_heavy = 40; + public static final int vac_frac_reform = 25; + public static final int vac_frac_light = 20; + public static final int vac_frac_sour = 15; + private static Map> refinery = new HashMap(); public static Map getRefineryRecipe() { @@ -50,6 +55,19 @@ public class RefineryRecipes { return recipes; } + public static HashMap getVacuumRecipe() { + + HashMap recipes = new HashMap(); + recipes.put(ItemFluidIcon.make(Fluids.OIL, 1000), + new ItemStack[] { + ItemFluidIcon.make(Fluids.HEAVYOIL_VACUUM, vac_frac_heavy * 10), + ItemFluidIcon.make(Fluids.REFORMATE, vac_frac_reform * 10), + ItemFluidIcon.make(Fluids.LIGHTOIL_VACUUM, vac_frac_light * 10), + ItemFluidIcon.make(Fluids.SOURGAS, vac_frac_sour * 10) }); + + return recipes; + } + public static void registerRefinery() { refinery.put(Fluids.HOTOIL, new Quintet( new FluidStack(Fluids.HEAVYOIL, oil_frac_heavy), diff --git a/src/main/java/com/hbm/main/NEIConfig.java b/src/main/java/com/hbm/main/NEIConfig.java index 5473b99bf..987c769ec 100644 --- a/src/main/java/com/hbm/main/NEIConfig.java +++ b/src/main/java/com/hbm/main/NEIConfig.java @@ -36,6 +36,7 @@ public class NEIConfig implements IConfigureNEI { registerHandler(new CyclotronRecipeHandler()); registerHandler(new AssemblerRecipeHandler()); registerHandler(new RefineryRecipeHandler()); + registerHandler(new VacuumRecipeHandler()); registerHandler(new BoilerRecipeHandler()); registerHandler(new ChemplantRecipeHandler()); registerHandler(new FluidRecipeHandler()); diff --git a/src/main/java/com/hbm/tileentity/IRepairable.java b/src/main/java/com/hbm/tileentity/IRepairable.java index 3b60192d7..27f3f2974 100644 --- a/src/main/java/com/hbm/tileentity/IRepairable.java +++ b/src/main/java/com/hbm/tileentity/IRepairable.java @@ -84,4 +84,13 @@ public interface IRepairable { ILookOverlay.printGeneric(event, I18nUtil.resolveKey(dummyable.getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } + + public void tryExtinguish(World world, int x, int y, int z, EnumExtinguishType type); + + public static enum EnumExtinguishType { + WATER, + FOAM, + SAND, + CO2 + } } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java index e5fb627d7..a345a43d4 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java @@ -63,6 +63,7 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements public List list4 = new ArrayList(); public boolean hasExploded = false; + public boolean onFire = false; public Explosion lastExplosion = null; private static final int[] slot_access = new int[] {11}; @@ -99,6 +100,7 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements tanks[4].readFromNBT(nbt, "petroleum"); sulfur = nbt.getInteger("sulfur"); hasExploded = nbt.getBoolean("exploded"); + onFire = nbt.getBoolean("onFire"); } @Override @@ -113,6 +115,7 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements tanks[4].writeToNBT(nbt, "petroleum"); nbt.setInteger("sulfur", sulfur); nbt.setBoolean("exploded", hasExploded); + nbt.setBoolean("onFire", onFire); } @Override @@ -175,17 +178,17 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements } } } - } else { + } else if(onFire){ - boolean isBurning = false; + boolean hasFuel = false; for(int i = 0; i < 5; i++) { if(tanks[i].getFill() > 0) { tanks[i].setFill(Math.max(tanks[i].getFill() - 10, 0)); - isBurning = true; + hasFuel = true; } } - if(isBurning) { + if(hasFuel) { List affected = worldObj.getEntitiesWithinAABB(Entity.class, AxisAlignedBB.getBoundingBox(xCoord - 1.5, yCoord, zCoord - 1.5, xCoord + 2.5, yCoord + 8, zCoord + 2.5)); for(Entity e : affected) e.setFire(5); Random rand = worldObj.rand; @@ -197,6 +200,7 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements data.setLong("power", this.power); for(int i = 0; i < 5; i++) tanks[i].writeToNBT(data, "" + i); data.setBoolean("exploded", hasExploded); + data.setBoolean("onFire", onFire); this.networkPack(data, 150); } } @@ -206,6 +210,7 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements this.power = nbt.getLong("power"); for(int i = 0; i < 5; i++) tanks[i].readFromNBT(nbt, "" + i); this.hasExploded = nbt.getBoolean("exploded"); + this.onFire = nbt.getBoolean("onFire"); } private void refine() { @@ -439,9 +444,30 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements if(this.hasExploded) return; this.hasExploded = true; + this.onFire = true; this.markChanged(); } + @Override + public void tryExtinguish(World world, int x, int y, int z, EnumExtinguishType type) { + if(!this.hasExploded || !this.onFire) return; + + if(type == EnumExtinguishType.FOAM || type == EnumExtinguishType.CO2) { + this.onFire = false; + this.markChanged(); + return; + } + + if(type == EnumExtinguishType.WATER) { + for(FluidTank tank : tanks) { + if(tank.getFill() > 0) { + worldObj.newExplosion(null, xCoord + 0.5, yCoord + 1.5, zCoord + 0.5, 5F, true, true); + return; + } + } + } + } + @Override public boolean isDamaged() { return this.hasExploded; @@ -471,6 +497,7 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements NBTTagCompound data = new NBTTagCompound(); for(int i = 0; i < 5; i++) this.tanks[i].writeToNBT(data, "" + i); data.setBoolean("hasExploded", hasExploded); + data.setBoolean("onFire", onFire); nbt.setTag(NBT_PERSISTENT_KEY, data); } @@ -479,6 +506,7 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements NBTTagCompound data = nbt.getCompoundTag(NBT_PERSISTENT_KEY); for(int i = 0; i < 5; i++) this.tanks[i].readFromNBT(data, "" + i); this.hasExploded = data.getBoolean("hasExploded"); + this.onFire = data.getBoolean("onFire"); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineVacuumDistill.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineVacuumDistill.java index da23b73fe..ba86404a5 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineVacuumDistill.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineVacuumDistill.java @@ -5,6 +5,7 @@ import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUIMachineVacuumDistill; +import com.hbm.inventory.recipes.RefineryRecipes; import com.hbm.lib.Library; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IPersistentNBT; @@ -87,17 +88,17 @@ public class TileEntityMachineVacuumDistill extends TileEntityMachineBase implem if(power < 10_000) return; if(tanks[0].getFill() < 100) return; - if(tanks[1].getFill() + 40 > tanks[1].getMaxFill()) return; - if(tanks[2].getFill() + 25 > tanks[2].getMaxFill()) return; - if(tanks[3].getFill() + 15 > tanks[3].getMaxFill()) return; - if(tanks[4].getFill() + 10 > tanks[4].getMaxFill()) return; + if(tanks[1].getFill() + RefineryRecipes.vac_frac_heavy > tanks[1].getMaxFill()) return; + if(tanks[2].getFill() + RefineryRecipes.vac_frac_reform > tanks[2].getMaxFill()) return; + if(tanks[3].getFill() + RefineryRecipes.vac_frac_light > tanks[3].getMaxFill()) return; + if(tanks[4].getFill() + RefineryRecipes.vac_frac_sour > tanks[4].getMaxFill()) return; power -= 10_000; tanks[0].setFill(tanks[0].getFill() - 100); - tanks[1].setFill(tanks[1].getFill() + 40); - tanks[2].setFill(tanks[2].getFill() + 25); - tanks[3].setFill(tanks[3].getFill() + 15); - tanks[4].setFill(tanks[4].getFill() + 10); + tanks[1].setFill(tanks[1].getFill() + RefineryRecipes.vac_frac_heavy); + tanks[2].setFill(tanks[2].getFill() + RefineryRecipes.vac_frac_reform); + tanks[3].setFill(tanks[3].getFill() + RefineryRecipes.vac_frac_light); + tanks[4].setFill(tanks[4].getFill() + RefineryRecipes.vac_frac_sour); } private void updateConnections() { @@ -127,9 +128,9 @@ public class TileEntityMachineVacuumDistill extends TileEntityMachineBase implem power = nbt.getLong("power"); tanks[0].readFromNBT(nbt, "input"); tanks[1].readFromNBT(nbt, "heavy"); - tanks[2].readFromNBT(nbt, "naphtha"); + tanks[2].readFromNBT(nbt, "reformate"); tanks[3].readFromNBT(nbt, "light"); - tanks[4].readFromNBT(nbt, "petroleum"); + tanks[4].readFromNBT(nbt, "gas"); } @Override @@ -139,9 +140,9 @@ public class TileEntityMachineVacuumDistill extends TileEntityMachineBase implem nbt.setLong("power", power); tanks[0].writeToNBT(nbt, "input"); tanks[1].writeToNBT(nbt, "heavy"); - tanks[2].writeToNBT(nbt, "naphtha"); + tanks[2].writeToNBT(nbt, "reformate"); tanks[3].writeToNBT(nbt, "light"); - tanks[4].writeToNBT(nbt, "petroleum"); + tanks[4].writeToNBT(nbt, "gas"); } AxisAlignedBB bb = null; diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java index b93b3705f..0036b77d2 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java @@ -21,6 +21,7 @@ import com.hbm.inventory.fluid.trait.FT_Flammable; import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Amat; import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Gaseous; import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Gaseous_ART; +import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Liquid; import com.hbm.inventory.gui.GUIMachineFluidTank; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; @@ -56,6 +57,7 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements public static final short modes = 4; public boolean hasExploded = false; protected boolean sendingBrake = false; + public boolean onFire = false; public Explosion lastExplosion = null; @@ -149,6 +151,7 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements /** called when the tank breaks due to hazardous materials or external force, can be used to quickly void part of the tank or spawn a mushroom cloud */ public void explode() { this.hasExploded = true; + this.onFire = tank.getTankType().hasTrait(FT_Flammable.class); this.markChanged(); } @@ -165,13 +168,13 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements if(type.hasTrait(FT_Amat.class)) { new ExplosionVNT(worldObj, xCoord + 0.5, yCoord + 1.5, zCoord + 0.5, 5F).makeAmat().setBlockAllocator(null).setBlockProcessor(null).explode(); - } else if(tank.getTankType().hasTrait(FT_Flammable.class)) { + } else if(type.hasTrait(FT_Flammable.class) && onFire) { List affected = worldObj.getEntitiesWithinAABB(Entity.class, AxisAlignedBB.getBoundingBox(xCoord - 1.5, yCoord, zCoord - 1.5, xCoord + 2.5, yCoord + 5, zCoord + 2.5)); for(Entity e : affected) e.setFire(5); Random rand = worldObj.rand; ParticleUtil.spawnGasFlame(worldObj, xCoord + rand.nextDouble(), yCoord + 0.5 + rand.nextDouble(), zCoord + rand.nextDouble(), rand.nextGaussian() * 0.2, 0.1, rand.nextGaussian() * 0.2); - } else if(tank.getTankType().hasTrait(FT_Gaseous.class) || tank.getTankType().hasTrait(FT_Gaseous_ART.class)) { + } else if(type.hasTrait(FT_Gaseous.class) || type.hasTrait(FT_Gaseous_ART.class)) { if(worldObj.getTotalWorldTime() % 5 == 0) { NBTTagCompound data = new NBTTagCompound(); @@ -190,10 +193,30 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements public void explode(World world, int x, int y, int z) { if(this.hasExploded) return; - + this.onFire = tank.getTankType().hasTrait(FT_Flammable.class); this.hasExploded = true; this.markChanged(); } + + @Override + public void tryExtinguish(World world, int x, int y, int z, EnumExtinguishType type) { + if(!this.hasExploded || !this.onFire) return; + + if(type == EnumExtinguishType.WATER) { + if(tank.getTankType().hasTrait(FT_Liquid.class)) { // extinguishing oil with water is a terrible idea! + worldObj.newExplosion(null, xCoord + 0.5, yCoord + 1.5, zCoord + 0.5, 5F, true, true); + } else { + this.onFire = false; + this.markChanged(); + return; + } + } + + if(type == EnumExtinguishType.FOAM || type == EnumExtinguishType.CO2) { + this.onFire = false; + this.markChanged(); + } + } protected DirPos[] getConPos() { return new DirPos[] { @@ -317,6 +340,7 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements mode = nbt.getShort("mode"); tank.readFromNBT(nbt, "tank"); hasExploded = nbt.getBoolean("exploded"); + onFire = nbt.getBoolean("onFire"); } @Override @@ -326,6 +350,7 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements nbt.setShort("mode", mode); tank.writeToNBT(nbt, "tank"); nbt.setBoolean("exploded", hasExploded); + nbt.setBoolean("onFire", onFire); } @Override @@ -356,6 +381,7 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements this.tank.writeToNBT(data, "tank"); data.setShort("mode", mode); data.setBoolean("hasExploded", hasExploded); + data.setBoolean("onFire", onFire); nbt.setTag(NBT_PERSISTENT_KEY, data); } @@ -365,6 +391,7 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements this.tank.readFromNBT(data, "tank"); this.mode = data.getShort("mode"); this.hasExploded = data.getBoolean("hasExploded"); + this.onFire = data.getBoolean("onFire"); } @Override diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index f633106c1..60bfbb02d 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -1051,6 +1051,7 @@ item.balefire_and_steel.name=Balefire-Zeug item.balefire_scrambled.name=Rühr-Balefire-Ei item.ball_dynamite.name=Dynamit item.ball_fireclay.name=Schamott +item.ball_tatb.name=TATB item.ball_tnt.name=TNT item.ballistic_gauntlet.name=Ballistischer Panzerhandschuh item.ballistite.name=Ballistit @@ -1074,6 +1075,7 @@ item.battery_red_cell_24.name=24-fache Redstone-Energiezelle item.battery_red_cell_6.name=Sechsfache Redstone-Energiezelle item.battery_sc_americium.name=Americium-241-Selbstlader item.battery_sc_gold.name=Gold-198-Selbstlader +item.battery_sc_lead.name=Blei-209-Selbstlader item.battery_sc_plutonium.name=Plutonium-238-Selbstlader item.battery_sc_polonium.name=Polonium-210-Selbstlader item.battery_sc_technetium.name=Technerium-99-Selbstlader diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 3975e38c3..46e9ad2a6 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1619,6 +1619,7 @@ item.balefire_and_steel.name=Balefire and Steel item.balefire_scrambled.name=Scrambled Balefire Egg item.ball_dynamite.name=Dynamite item.ball_fireclay.name=Fireclay +item.ball_tatb.name=TATB item.ball_tnt.name=TNT item.ballistic_gauntlet.name=Ballistic Gauntlet item.ballistite.name=Ballistite