extinguishable tanks, refinery recipes, NEI handlers

This commit is contained in:
Boblet 2023-03-07 16:24:39 +01:00
parent 469a624966
commit c4e350ff92
14 changed files with 168 additions and 559 deletions

View File

@ -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) {

View File

@ -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) {

View File

@ -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";
}
}

View File

@ -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));

View File

@ -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);

View File

@ -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<ItemStack> getAlloyFuels() {
ArrayList<ItemStack> fuels = new ArrayList<ItemStack>();
@ -270,324 +51,6 @@ public class MachineRecipes {
return fuels;
}
@Spaghetti("why did i do this?")
public Map<Object[], Object> getCyclotronRecipes() {
Map<Object[], Object> recipes = new HashMap<Object[], Object>();
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
*/

View File

@ -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<FluidType, Quintet<FluidStack, FluidStack, FluidStack, FluidStack, ItemStack>> refinery = new HashMap();
public static Map<Object, Object[]> getRefineryRecipe() {
@ -50,6 +55,19 @@ public class RefineryRecipes {
return recipes;
}
public static HashMap<Object, Object[]> getVacuumRecipe() {
HashMap<Object, Object[]> recipes = new HashMap<Object, Object[]>();
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),

View File

@ -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());

View File

@ -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
}
}

View File

@ -63,6 +63,7 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements
public List<IFluidAcceptor> 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<Entity> 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

View File

@ -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;

View File

@ -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<Entity> 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

View File

@ -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

View File

@ -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