diff --git a/src/main/java/com/hbm/crafting/SmeltingRecipes.java b/src/main/java/com/hbm/crafting/SmeltingRecipes.java index 5dd7e9dbc..69444a29c 100644 --- a/src/main/java/com/hbm/crafting/SmeltingRecipes.java +++ b/src/main/java/com/hbm/crafting/SmeltingRecipes.java @@ -98,8 +98,9 @@ public class SmeltingRecipes { GameRegistry.addSmelting(ModItems.powder_coal, DictFrame.fromOne(ModItems.coke, EnumCokeType.COAL), 1.0F); GameRegistry.addSmelting(ModItems.briquette_lignite, DictFrame.fromOne(ModItems.coke, EnumCokeType.LIGNITE), 1.0F); - GameRegistry.addSmelting(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRUDE), new ItemStack(ModItems.powder_coal), 1.0F); - GameRegistry.addSmelting(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRACK), new ItemStack(ModItems.powder_coal), 1.0F); + + GameRegistry.addSmelting(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRACK), DictFrame.fromOne(ModItems.coke, EnumCokeType.PETROLEUM), 1.0F); + GameRegistry.addSmelting(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.COAL), DictFrame.fromOne(ModItems.coke, EnumCokeType.COAL), 1.0F); GameRegistry.addSmelting(ModItems.combine_scrap, new ItemStack(ModItems.ingot_combine_steel), 1.0F); GameRegistry.addSmelting(ModItems.tank_waste, new ItemStack(ModItems.tank_waste), 0.0F); diff --git a/src/main/java/com/hbm/inventory/FluidTank.java b/src/main/java/com/hbm/inventory/FluidTank.java index aec4fec34..cdc928b1b 100644 --- a/src/main/java/com/hbm/inventory/FluidTank.java +++ b/src/main/java/com/hbm/inventory/FluidTank.java @@ -186,14 +186,14 @@ public class FluidTank { return; } - if(slots[in].getItem() == ModItems.inf_water && this.type.getName().equals(Fluids.WATER.name())) { + if(slots[in].getItem() == ModItems.inf_water && type == Fluids.WATER) { this.fluid -= 50; if(this.fluid < 0) this.fluid = 0; return; } - if(slots[in].getItem() == ModItems.inf_water_mk2 && this.type.getName().equals(Fluids.WATER.name())) { + if(slots[in].getItem() == ModItems.inf_water_mk2 && type == Fluids.WATER) { this.fluid -= 500; if(this.fluid < 0) this.fluid = 0; @@ -221,27 +221,32 @@ public class FluidTank { } } } + + public void setType(int in, ItemStack[] slots) { + setType(in, in, slots); + } //Changes tank type public void setType(int in, int out, ItemStack[] slots) { - if(in == out && slots[in] != null && slots[in].getItem() instanceof ItemFluidIdentifier) { - FluidType newType = ItemFluidIdentifier.getType(slots[in]); + if(slots[in] != null && slots[in].getItem() instanceof ItemFluidIdentifier) { - if(type != newType) { - type = newType; - fluid = 0; - } - return; - } - - if(slots[in] != null && slots[out] == null && slots[in].getItem() instanceof ItemFluidIdentifier) { - FluidType newType = ItemFluidIdentifier.getType(slots[in]); - if(!type.getName().equals(newType.getName())) { - type = newType; - slots[out] = slots[in].copy(); - slots[in] = null; - fluid = 0; + if(in == out) { + FluidType newType = ItemFluidIdentifier.getType(slots[in]); + + if(type != newType) { + type = newType; + fluid = 0; + } + + } else if(slots[out] == null) { + FluidType newType = ItemFluidIdentifier.getType(slots[in]); + if(type != newType) { + type = newType; + slots[out] = slots[in].copy(); + slots[in] = null; + fluid = 0; + } } } } diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index dfeac13db..4978a9a92 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -61,6 +61,7 @@ public class OreDictManager { public static final String KEY_OIL_TAR = "oiltar"; public static final String KEY_CRACK_TAR = "cracktar"; + public static final String KEY_COAL_TAR = "coaltar"; /* * PREFIXES @@ -288,7 +289,7 @@ public class OreDictManager { GRAPHITE .ingot(ingot_graphite) .block(block_graphite); DURA .ingot(ingot_dura_steel) .dust(powder_dura_steel) .block(block_dura_steel); POLYMER .ingot(ingot_polymer) .dust(powder_polymer); - BAKELITE .ingot(ingot_bakelite); + BAKELITE .ingot(ingot_bakelite) .dust(powder_bakelite); MAGTUNG .ingot(ingot_magnetized_tungsten) .dust(powder_magnetized_tungsten) .block(block_magnetized_tungsten); CMB .ingot(ingot_combine_steel) .dust(powder_combine_steel) .plate(plate_combine_steel) .block(block_combine_steel); DESH .nugget(nugget_desh) .ingot(ingot_desh) .dust(powder_desh) .block(block_desh); @@ -365,15 +366,16 @@ public class OreDictManager { /* * COLLECTIONS */ - ANY_PLASTIC .ingot(ingot_polymer, ingot_bakelite).dust(powder_polymer); + ANY_PLASTIC .ingot(ingot_polymer, ingot_bakelite).dust(powder_polymer, powder_bakelite); ANY_GUNPOWDER .dust(Items.gunpowder, ballistite, cordite); ANY_SMOKELESS .dust(ballistite, cordite); - ANY_COKE .gem(fromAll(coke, EnumCokeType.class)); ANY_CONCRETE .any(concrete, concrete_smooth, concrete_colored, concrete_asbestos, ducrete, ducrete_smooth); + ANY_COKE .gem(fromAll(coke, EnumCokeType.class)); ANY_TAR .any(fromAll(oil_tar, EnumTarType.class)); OreDictionary.registerOre(KEY_OIL_TAR, fromOne(oil_tar, EnumTarType.CRUDE)); OreDictionary.registerOre(KEY_CRACK_TAR, fromOne(oil_tar, EnumTarType.CRACK)); + OreDictionary.registerOre(KEY_COAL_TAR, fromOne(oil_tar, EnumTarType.COAL)); OreDictionary.registerOre(getReflector(), neutron_reflector); OreDictionary.registerOre("oreRareEarth", ore_rare); diff --git a/src/main/java/com/hbm/inventory/fluid/Fluids.java b/src/main/java/com/hbm/inventory/fluid/Fluids.java index f14baaabb..41e740028 100644 --- a/src/main/java/com/hbm/inventory/fluid/Fluids.java +++ b/src/main/java/com/hbm/inventory/fluid/Fluids.java @@ -20,7 +20,10 @@ public class Fluids { public static FluidType DEUTERIUM; public static FluidType TRITIUM; public static FluidType OIL; + public static FluidType CRACKOIL; + public static FluidType COALOIL; public static FluidType HOTOIL; + public static FluidType HOTCRACKOIL; public static FluidType HEAVYOIL; public static FluidType BITUMEN; public static FluidType SMEAR; @@ -29,12 +32,17 @@ public class Fluids { public static FluidType PETROIL; public static FluidType LUBRICANT; public static FluidType NAPHTHA; + public static FluidType NAPHTHA_CRACK; public static FluidType DIESEL; + public static FluidType DIESEL_CRACK; public static FluidType LIGHTOIL; + public static FluidType LIGHTOIL_CRACK; public static FluidType KEROSENE; public static FluidType GAS; public static FluidType PETROLEUM; public static FluidType LPG; + public static FluidType AROMATICS; //anything from benzene to phenol and toluene + public static FluidType UNSATURATEDS; //collection of various basic unsaturated compounds like ethylene, acetylene and whatnot public static FluidType BIOGAS; public static FluidType BIOFUEL; public static FluidType NITAN; @@ -52,10 +60,11 @@ public class Fluids { public static FluidType XENON; public static FluidType BALEFIRE; public static FluidType MERCURY; - public static FluidType PAIN; + public static FluidType PAIN; //tantalite solution public static FluidType WASTEFLUID; public static FluidType WASTEGAS; - public static FluidType GASOLINE; + public static FluidType GASOLINE; //gasoline, leaded + public static FluidType COALGAS; //coal-based gasoline public static FluidType SPENTSTEAM; public static FluidType FRACKSOL; public static FluidType PLASMA_DT; @@ -66,7 +75,7 @@ public class Fluids { public static FluidType PLASMA_BF; public static FluidType CARBONDIOXIDE; public static FluidType HELIUM3; - public static FluidType DEATH; + public static FluidType DEATH; //osmiridium solution public static FluidType ETHANOL; public static FluidType HEAVYWATER; @@ -110,6 +119,7 @@ public class Fluids { LUBRICANT = new FluidType("LUBRICANT",0x606060, 10, 1, 1, 2, 1, 0, EnumSymbol.NONE, "hbmfluid.lubricant"); NAPHTHA = new FluidType("NAPHTHA",0x595744, 5, 2, 1, 2, 1, 0, EnumSymbol.NONE, "hbmfluid.naphtha"); DIESEL = new FluidType("DIESEL",0xf2eed5, 11, 1, 1, 1, 2, 0, EnumSymbol.NONE, "hbmfluid.diesel"); + DIESEL_CRACK = new FluidType("DIESEL_CRACK",0xf2eed5, 11, 1, 1, 1, 2, 0, EnumSymbol.NONE, "hbmfluid.diesel_crack"); LIGHTOIL = new FluidType("LIGHTOIL",0x8c7451, 6, 2, 1, 1, 2, 0, EnumSymbol.NONE, "hbmfluid.lightoil"); KEROSENE = new FluidType("KEROSENE",0xffa5d2, 12, 1, 1, 1, 2, 0, EnumSymbol.NONE, "hbmfluid.kerosene"); GAS = new FluidType("GAS",0xfffeed, 13, 1, 1, 1, 4, 1, EnumSymbol.NONE, "hbmfluid.gas"); @@ -136,6 +146,7 @@ public class Fluids { WASTEFLUID = new FluidType("WASTEFLUID",0x544400, 0, 2, 2, 2, 0, 1, EnumSymbol.RADIATION, "hbmfluid.wastefluid", FluidTrait.NO_CONTAINER); WASTEGAS = new FluidType("WASTEGAS",0xB8B8B8, 1, 2, 2, 2, 0, 1, EnumSymbol.RADIATION, "hbmfluid.wastegas", FluidTrait.NO_CONTAINER); GASOLINE = new FluidType("GASOLINE",0x445772, 2, 2, 2, 1, 2, 0, EnumSymbol.NONE, "hbmfluid.gasoline"); + COALGAS = new FluidType("COALGAS",0x445772, 2, 2, 2, 1, 2, 0, EnumSymbol.NONE, "hbmfluid.coalgas"); SPENTSTEAM = new FluidType("SPENTSTEAM",0x445772, 3, 2, 2, 2, 0, 0, EnumSymbol.NONE, "hbmfluid.spentsteam", FluidTrait.NO_CONTAINER); FRACKSOL = new FluidType("FRACKSOL",0x798A6B, 4, 2, 2, 1, 3, 3, EnumSymbol.ACID, "hbmfluid.fracksol", FluidTrait.CORROSIVE); PLASMA_DT = new FluidType("PLASMA_DT",0xF7AFDE, 8, 1, 2, 0, 4, 0, EnumSymbol.RADIATION, "hbmfluid.plasma_dt", 3250, FluidTrait.NO_CONTAINER, FluidTrait.NO_ID); @@ -150,6 +161,13 @@ public class Fluids { DEATH = new FluidType("DEATH",0x717A88, 8, 2, 2, 2, 0, 1, EnumSymbol.ACID, "hbmfluid.death", 300, FluidTrait.CORROSIVE_2, FluidTrait.LEAD_CONTAINER); ETHANOL = new FluidType("ETHANOL",0xe0ffff, 9, 2, 2, 2, 3, 0, EnumSymbol.NONE, "hbmfluid.ethanol"); HEAVYWATER = new FluidType("HEAVYWATER",0x00a0b0, 10, 2, 2, 1, 0, 0, EnumSymbol.NONE, "hbmfluid.heavywater"); + CRACKOIL = new FluidType("CRACKOIL",0x020202, 6, 1, 1, 2, 1, 0, EnumSymbol.NONE, "hbmfluid.crackoil"); + COALOIL = new FluidType("COALOIL",0x020202, 6, 1, 1, 2, 1, 0, EnumSymbol.NONE, "hbmfluid.coaloil"); + HOTCRACKOIL = new FluidType("HOTCRACKOIL",0x300900, 8, 2, 1, 2, 3, 0, EnumSymbol.NONE, "hbmfluid.hotcrackoil", 350); + NAPHTHA_CRACK = new FluidType("NAPHTHA_CRACK",0x595744, 5, 2, 1, 2, 1, 0, EnumSymbol.NONE, "hbmfluid.naphtha_crack"); + LIGHTOIL_CRACK = new FluidType("LIGHTOIL_CRACK",0x8c7451, 6, 2, 1, 1, 2, 0, EnumSymbol.NONE, "hbmfluid.lightoil_crack"); + AROMATICS = new FluidType("AROMATICS",0xfffeed, 13, 1, 1, 1, 4, 1, EnumSymbol.NONE, "hbmfluid.aromatics"); + UNSATURATEDS = new FluidType("UNSATURATEDS",0xfffeed, 13, 1, 1, 1, 4, 1, EnumSymbol.NONE, "hbmfluid.unsaturateds"); // ^ ^ ^ ^ ^ ^ ^ ^ //ADD NEW FLUIDS HERE //AND DON'T FORGET THE META DOWN HERE @@ -181,25 +199,35 @@ public class Fluids { metaOrder.add(MERCURY); //oils, fuels metaOrder.add(OIL); + metaOrder.add(CRACKOIL); + metaOrder.add(COALOIL); metaOrder.add(HOTOIL); + metaOrder.add(HOTCRACKOIL); + //metaOrder.add(HOTCOALOIL); metaOrder.add(HEAVYOIL); metaOrder.add(NAPHTHA); + metaOrder.add(NAPHTHA_CRACK); metaOrder.add(LIGHTOIL); + metaOrder.add(LIGHTOIL_CRACK); metaOrder.add(BITUMEN); metaOrder.add(SMEAR); metaOrder.add(HEATINGOIL); metaOrder.add(RECLAIMED); metaOrder.add(PETROIL); metaOrder.add(LUBRICANT); - metaOrder.add(DIESEL); - metaOrder.add(KEROSENE); metaOrder.add(GAS); metaOrder.add(PETROLEUM); metaOrder.add(LPG); - metaOrder.add(ETHANOL); + metaOrder.add(AROMATICS); + metaOrder.add(UNSATURATEDS); + metaOrder.add(DIESEL); + metaOrder.add(DIESEL_CRACK); + metaOrder.add(KEROSENE); + metaOrder.add(GASOLINE); + metaOrder.add(COALGAS); metaOrder.add(BIOGAS); metaOrder.add(BIOFUEL); - metaOrder.add(GASOLINE); + metaOrder.add(ETHANOL); metaOrder.add(NITAN); metaOrder.add(BALEFIRE); //processing fluids diff --git a/src/main/java/com/hbm/inventory/gui/GuiInfoContainer.java b/src/main/java/com/hbm/inventory/gui/GuiInfoContainer.java index 37b1de604..c5792a307 100644 --- a/src/main/java/com/hbm/inventory/gui/GuiInfoContainer.java +++ b/src/main/java/com/hbm/inventory/gui/GuiInfoContainer.java @@ -381,10 +381,10 @@ public abstract class GuiInfoContainer extends GuiContainer { GL11.glDisable(GL11.GL_TEXTURE_2D); tess.startDrawingQuads(); tess.setColorOpaque_I(color); - tess.addVertex(renX, renY + height, z); - tess.addVertex(renX + width, renY + height, z); - tess.addVertex(renX + width, renY + 0, z); - tess.addVertex(renX, renY, z); + tess.addVertex(renX, renY + height, z); + tess.addVertex(renX + width, renY + height, z); + tess.addVertex(renX + width, renY + 0, z); + tess.addVertex(renX, renY, z); tess.draw(); GL11.glEnable(GL11.GL_TEXTURE_2D); } diff --git a/src/main/java/com/hbm/inventory/recipes/LiquefactionRecipes.java b/src/main/java/com/hbm/inventory/recipes/LiquefactionRecipes.java index 1c8a8ea30..673f5baa6 100644 --- a/src/main/java/com/hbm/inventory/recipes/LiquefactionRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/LiquefactionRecipes.java @@ -21,15 +21,12 @@ public class LiquefactionRecipes { public static void register() { - //TODO: make sure to either remove chemplant liquefication recipes or to adjust the values to match these - - //temporary, replace with liquefacted coal (or coal oil? parallel to crude and crack oils perhaps) - //if coal oil isn't parallel, we could do coal -> coal oil -> coal tar -> crude oil (or crack oil) - //if coal oil is parallel, we might fractionate it into crude or crack oil and coal gasoline - recipes.put(COAL.gem(), new FluidStack(100, Fluids.OIL)); - recipes.put(COAL.dust(), new FluidStack(100, Fluids.OIL)); - //make sure to include bitumen to tar in the solidificator with matching values - recipes.put(ANY_TAR.any(), new FluidStack(100, Fluids.BITUMEN)); + //oil processing + recipes.put(COAL.gem(), new FluidStack(100, Fluids.COALOIL)); + recipes.put(COAL.dust(), new FluidStack(100, Fluids.COALOIL)); + recipes.put(KEY_OIL_TAR, new FluidStack(75, Fluids.BITUMEN)); + recipes.put(KEY_CRACK_TAR, new FluidStack(100, Fluids.BITUMEN)); + recipes.put(KEY_COAL_TAR, new FluidStack(50, Fluids.BITUMEN)); //general utility recipes because why not recipes.put(new ComparableStack(Blocks.netherrack), new FluidStack(250, Fluids.LAVA)); recipes.put(new ComparableStack(Blocks.cobblestone), new FluidStack(250, Fluids.LAVA)); diff --git a/src/main/java/com/hbm/inventory/recipes/MachineRecipes.java b/src/main/java/com/hbm/inventory/recipes/MachineRecipes.java index 3742a1a5a..ea686b182 100644 --- a/src/main/java/com/hbm/inventory/recipes/MachineRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/MachineRecipes.java @@ -162,6 +162,7 @@ public class MachineRecipes { if(type == Fluids.STEAM) return new Object[] { Fluids.HOTSTEAM, 5, 50, 30000 }; if(type == Fluids.HOTSTEAM) return new Object[] { Fluids.SUPERHOTSTEAM, 5, 50, 45000 }; if(type == Fluids.OIL) return new Object[] { Fluids.HOTOIL, 5, 5, 35000 }; + if(type == Fluids.CRACKOIL) return new Object[] { Fluids.HOTCRACKOIL, 5, 5, 35000 }; return null; } @@ -1469,51 +1470,51 @@ public class MachineRecipes { input[0] = new FluidStack(800, Fluids.ACID); input[1] = new FluidStack(200, Fluids.MERCURY); break; - case SF_OIL: - input[0] = new FluidStack(350, Fluids.OIL); - break; - case SF_HEAVYOIL: - input[0] = new FluidStack(250, Fluids.HEAVYOIL); - break; - case SF_SMEAR: - input[0] = new FluidStack(200, Fluids.SMEAR); - break; - case SF_HEATINGOIL: - input[0] = new FluidStack(100, Fluids.HEATINGOIL); - break; - case SF_RECLAIMED: - input[0] = new FluidStack(200, Fluids.RECLAIMED); - break; - case SF_PETROIL: - input[0] = new FluidStack(250, Fluids.PETROIL); - break; - case SF_LUBRICANT: - input[0] = new FluidStack(250, Fluids.LUBRICANT); - break; - case SF_NAPHTHA: - input[0] = new FluidStack(300, Fluids.NAPHTHA); - break; - case SF_DIESEL: - input[0] = new FluidStack(400, Fluids.DIESEL); - break; - case SF_LIGHTOIL: - input[0] = new FluidStack(450, Fluids.LIGHTOIL); - break; - case SF_KEROSENE: - input[0] = new FluidStack(550, Fluids.KEROSENE); - break; - case SF_GAS: - input[0] = new FluidStack(750, Fluids.GAS); - break; - case SF_PETROLEUM: - input[0] = new FluidStack(600, Fluids.PETROLEUM); - break; - case SF_BIOGAS: - input[0] = new FluidStack(3500, Fluids.BIOGAS); - break; - case SF_BIOFUEL: - input[0] = new FluidStack(1500, Fluids.BIOFUEL); - break; + case SF_OIL: + input[0] = new FluidStack(SolidificationRecipes.SF_OIL * 2, Fluids.OIL); + break; + case SF_HEAVYOIL: + input[0] = new FluidStack(SolidificationRecipes.SF_HEAVY * 2, Fluids.HEAVYOIL); + break; + case SF_SMEAR: + input[0] = new FluidStack(SolidificationRecipes.SF_SMEAR * 2, Fluids.SMEAR); + break; + case SF_HEATINGOIL: + input[0] = new FluidStack(SolidificationRecipes.SF_HEATING * 2, Fluids.HEATINGOIL); + break; + case SF_RECLAIMED: + input[0] = new FluidStack(SolidificationRecipes.SF_RECLAIMED * 2, Fluids.RECLAIMED); + break; + case SF_PETROIL: + input[0] = new FluidStack(SolidificationRecipes.SF_PETROIL * 2, Fluids.PETROIL); + break; + case SF_LUBRICANT: + input[0] = new FluidStack(SolidificationRecipes.SF_LUBE * 2, Fluids.LUBRICANT); + break; + case SF_NAPHTHA: + input[0] = new FluidStack(SolidificationRecipes.SF_NAPH * 2, Fluids.NAPHTHA); + break; + case SF_DIESEL: + input[0] = new FluidStack(SolidificationRecipes.SF_DIESEL * 2, Fluids.DIESEL); + break; + case SF_LIGHTOIL: + input[0] = new FluidStack(SolidificationRecipes.SF_LIGHT * 2, Fluids.LIGHTOIL); + break; + case SF_KEROSENE: + input[0] = new FluidStack(SolidificationRecipes.SF_KEROSENE * 2, Fluids.KEROSENE); + break; + case SF_GAS: + input[0] = new FluidStack(SolidificationRecipes.SF_GAS * 2, Fluids.GAS); + break; + case SF_PETROLEUM: + input[0] = new FluidStack(SolidificationRecipes.SF_PETROLEUM * 2, Fluids.PETROLEUM); + break; + case SF_BIOGAS: + input[0] = new FluidStack(SolidificationRecipes.SF_BIOGAS * 2, Fluids.BIOGAS); + break; + case SF_BIOFUEL: + input[0] = new FluidStack(SolidificationRecipes.SF_BIOFUEL * 2, Fluids.BIOFUEL); + break; case POLYMER: input[0] = new FluidStack(600, Fluids.PETROLEUM); break; diff --git a/src/main/java/com/hbm/inventory/recipes/RefineryRecipes.java b/src/main/java/com/hbm/inventory/recipes/RefineryRecipes.java index 551568953..bf1525f82 100644 --- a/src/main/java/com/hbm/inventory/recipes/RefineryRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/RefineryRecipes.java @@ -3,8 +3,10 @@ package com.hbm.inventory.recipes; import java.util.HashMap; import java.util.Map; +import com.hbm.inventory.OreDictManager.DictFrame; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; +import com.hbm.items.ItemEnums.EnumTarType; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemFluidIcon; import com.hbm.util.Tuple.Quartet; @@ -18,6 +20,10 @@ public class RefineryRecipes { public static final int oil_frac_naph = 25; public static final int oil_frac_light = 15; public static final int oil_frac_petro = 10; + public static final int crack_frac_naph = 40; + public static final int crack_frac_light = 30; + public static final int crack_frac_aroma = 15; + public static final int crack_frac_unsat = 15; public static final int heavy_frac_bitu = 30; public static final int heavy_frac_smear = 70; @@ -27,13 +33,23 @@ public class RefineryRecipes { public static final int napht_frac_diesel = 60; public static final int light_frac_diesel = 40; public static final int light_frac_kero = 60; + + public static final int ncrack_frac_heat = 30; + public static final int ncrack_frac_diesel = 70; + public static final int lcrack_frac_kero = 70; + public static final int lcrack_frac_petro = 30; + public static final int coal_frac_coalgas = 70; + public static final int coal_frac_natgas = 30; //cracking in percent + public static final int oil_crack_oil = 80; + public static final int oil_crack_petro = 20; public static final int bitumen_crack_oil = 80; - public static final int bitumen_crack_petro = 20; + public static final int bitumen_crack_aroma = 20; public static final int smear_crack_napht = 60; public static final int smear_crack_petro = 40; - public static final int gas_crack_petro = 50; + public static final int gas_crack_petro = 30; + public static final int gas_crack_unsat = 20; public static final int diesel_crack_kero = 40; public static final int diesel_crack_petro = 30; public static final int kero_crack_petro = 60; @@ -54,30 +70,42 @@ public class RefineryRecipes { ItemFluidIcon.make(Fluids.PETROLEUM, oil_frac_petro * 10), new ItemStack(ModItems.sulfur, 1) }); + recipes.put(ItemFluidIcon.make(Fluids.HOTCRACKOIL, 1000), + new ItemStack[] { + ItemFluidIcon.make(Fluids.NAPHTHA_CRACK, crack_frac_naph * 10), + ItemFluidIcon.make(Fluids.LIGHTOIL_CRACK, crack_frac_light * 10), + ItemFluidIcon.make(Fluids.AROMATICS, crack_frac_aroma * 10), + ItemFluidIcon.make(Fluids.UNSATURATEDS, crack_frac_unsat * 10), + DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRACK) }); + /*recipes.put(ItemFluidIcon.make(Fluids.HOTCRACKOIL, 1000), new ItemStack[] { ItemFluidIcon.make(Fluids.NAPHTHA_CRACK, oil_frac_heavy * 10), //fractionates into crack diesel and heating oil ItemFluidIcon.make(Fluids.LIGHTOIL_CRACK, oil_frac_naph * 10), //fractionates into kerosene and petroleum ItemFluidIcon.make(Fluids.AROMATICS, oil_frac_light * 10), //used for making bakelite and TNT - ItemFluidIcon.make(Fluids.UNSATURATEDS, oil_frac_petro * 10), //used for all sorts of things, can be processed into petroleum + ItemFluidIcon.make(Fluids.UNSATURATEDS, oil_frac_petro * 10), //for bakelite and perhaps acetylene torches DictFrame.fromOne(ModItems.coke, EnumCokeType.PETROLEUM) });*/ return recipes; } public static void registerFractions() { - fractions.put(Fluids.HEAVYOIL, new Quartet(Fluids.BITUMEN, Fluids.SMEAR, heavy_frac_bitu, heavy_frac_smear)); - fractions.put(Fluids.SMEAR, new Quartet(Fluids.HEATINGOIL, Fluids.LUBRICANT, smear_frac_heat, smear_frac_lube)); - fractions.put(Fluids.NAPHTHA, new Quartet(Fluids.HEATINGOIL, Fluids.DIESEL, napht_frac_heat, napht_frac_diesel)); - fractions.put(Fluids.LIGHTOIL, new Quartet(Fluids.DIESEL, Fluids.KEROSENE, light_frac_diesel, light_frac_kero)); + fractions.put(Fluids.HEAVYOIL, new Quartet(Fluids.BITUMEN, Fluids.SMEAR, heavy_frac_bitu, heavy_frac_smear)); + fractions.put(Fluids.SMEAR, new Quartet(Fluids.HEATINGOIL, Fluids.LUBRICANT, smear_frac_heat, smear_frac_lube)); + fractions.put(Fluids.NAPHTHA, new Quartet(Fluids.HEATINGOIL, Fluids.DIESEL, napht_frac_heat, napht_frac_diesel)); + fractions.put(Fluids.NAPHTHA_CRACK, new Quartet(Fluids.HEATINGOIL, Fluids.DIESEL_CRACK, ncrack_frac_heat, ncrack_frac_diesel)); + fractions.put(Fluids.LIGHTOIL, new Quartet(Fluids.DIESEL, Fluids.KEROSENE, light_frac_diesel, light_frac_kero)); + fractions.put(Fluids.LIGHTOIL_CRACK, new Quartet(Fluids.KEROSENE, Fluids.PETROLEUM, lcrack_frac_kero, lcrack_frac_petro)); + fractions.put(Fluids.COALOIL, new Quartet(Fluids.COALGAS, Fluids.GAS, coal_frac_coalgas, coal_frac_natgas)); } public static void registerCracking() { - cracking.put(Fluids.BITUMEN, new Quartet(Fluids.OIL, Fluids.PETROLEUM, bitumen_crack_oil, bitumen_crack_petro)); - cracking.put(Fluids.SMEAR, new Quartet(Fluids.NAPHTHA, Fluids.PETROLEUM, smear_crack_napht, smear_crack_petro)); - cracking.put(Fluids.GAS, new Quartet(Fluids.PETROLEUM, Fluids.NONE, gas_crack_petro, 0)); - cracking.put(Fluids.DIESEL, new Quartet(Fluids.KEROSENE, Fluids.PETROLEUM, diesel_crack_kero, diesel_crack_petro)); - cracking.put(Fluids.KEROSENE, new Quartet(Fluids.PETROLEUM, Fluids.NONE, kero_crack_petro, 0)); + cracking.put(Fluids.OIL, new Quartet(Fluids.CRACKOIL, Fluids.PETROLEUM, oil_crack_oil, oil_crack_petro)); + cracking.put(Fluids.BITUMEN, new Quartet(Fluids.OIL, Fluids.AROMATICS, bitumen_crack_oil, bitumen_crack_aroma)); + cracking.put(Fluids.SMEAR, new Quartet(Fluids.NAPHTHA, Fluids.PETROLEUM, smear_crack_napht, smear_crack_petro)); + cracking.put(Fluids.GAS, new Quartet(Fluids.PETROLEUM, Fluids.UNSATURATEDS, gas_crack_petro, gas_crack_unsat)); + cracking.put(Fluids.DIESEL, new Quartet(Fluids.KEROSENE, Fluids.PETROLEUM, diesel_crack_kero, diesel_crack_petro)); + cracking.put(Fluids.KEROSENE, new Quartet(Fluids.PETROLEUM, Fluids.NONE, kero_crack_petro, 0)); } public static Quartet getFractions(FluidType oil) { diff --git a/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java b/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java index 807398ba9..cabd997ea 100644 --- a/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java @@ -17,17 +17,66 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; public class SolidificationRecipes { + + public static final int SF_OIL = 200; + public static final int SF_CRACK = 200; + public static final int SF_HEAVY = 150; + public static final int SF_BITUMEN = 100; + public static final int SF_SMEAR = 100; + public static final int SF_HEATING = 50; + public static final int SF_RECLAIMED = 100; + public static final int SF_PETROIL = 125; + public static final int SF_LUBE = 125; + public static final int SF_NAPH = 150; + public static final int SF_DIESEL = 200; + public static final int SF_LIGHT = 225; + public static final int SF_KEROSENE = 275; + public static final int SF_GAS = 375; + public static final int SF_PETROLEUM = 300; + public static final int SF_LPG = 150; + public static final int SF_BIOGAS = 1750; + public static final int SF_BIOFUEL = 750; + public static final int SF_COALOIL = 200; + //mostly for alternate chemistry, dump into SF if not desired + public static final int SF_AROMA = 1000; + public static final int SF_UNSAT = 1000; + //in the event that these compounds are STILL too useless, add unsat + gas -> kerosene recipe for all those missile junkies + //aromatics can be idfk wax or soap or sth, perhaps artificial lubricant? + //on that note, add more leaded variants private static HashMap> recipes = new HashMap(); public static void register() { - registerRecipe(WATER, 1000, Blocks.ice); - registerRecipe(LAVA, 1000, Blocks.obsidian); - //temporary recipes with incorrect quantities - registerRecipe(OIL, 1000, DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRUDE)); - registerRecipe(BITUMEN, 1000, DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRUDE)); - registerRecipe(HEATINGOIL, 1000, ModItems.solid_fuel); + registerRecipe(WATER, 1000, Blocks.ice); + registerRecipe(LAVA, 1000, Blocks.obsidian); + + registerRecipe(OIL, SF_OIL, DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRUDE)); + registerRecipe(CRACKOIL, SF_OIL, DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRACK)); + registerRecipe(COALOIL, SF_OIL, DictFrame.fromOne(ModItems.oil_tar, EnumTarType.COAL)); + registerRecipe(HEAVYOIL, SF_HEAVY, DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRUDE)); + registerRecipe(BITUMEN, SF_BITUMEN, DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRUDE)); + + registerRecipe(SMEAR, SF_SMEAR, ModItems.solid_fuel); + registerRecipe(HEATINGOIL, SF_HEATING, ModItems.solid_fuel); + registerRecipe(RECLAIMED, SF_RECLAIMED, ModItems.solid_fuel); + registerRecipe(PETROIL, SF_PETROIL, ModItems.solid_fuel); + registerRecipe(LUBRICANT, SF_LUBE, ModItems.solid_fuel); + registerRecipe(NAPHTHA, SF_NAPH, ModItems.solid_fuel); + registerRecipe(NAPHTHA_CRACK, SF_NAPH, ModItems.solid_fuel); + registerRecipe(DIESEL, SF_DIESEL, ModItems.solid_fuel); + registerRecipe(DIESEL_CRACK, SF_DIESEL, ModItems.solid_fuel); + registerRecipe(LIGHTOIL, SF_LIGHT, ModItems.solid_fuel); + registerRecipe(LIGHTOIL_CRACK, SF_LIGHT, ModItems.solid_fuel); + registerRecipe(KEROSENE, SF_KEROSENE, ModItems.solid_fuel); + registerRecipe(GAS, SF_GAS, ModItems.solid_fuel); + registerRecipe(PETROLEUM, SF_PETROLEUM, ModItems.solid_fuel); + registerRecipe(LPG, SF_LPG, ModItems.solid_fuel); + registerRecipe(BIOGAS, SF_BIOGAS, ModItems.solid_fuel); + registerRecipe(BIOFUEL, SF_BIOFUEL, ModItems.solid_fuel); + registerRecipe(COALOIL, SF_COALOIL, ModItems.solid_fuel); + registerRecipe(AROMATICS, SF_AROMA, ModItems.solid_fuel); + registerRecipe(UNSATURATEDS, SF_UNSAT, ModItems.solid_fuel); } private static void registerRecipe(FluidType type, int quantity, Item output) { registerRecipe(type, quantity, new ItemStack(output)); } diff --git a/src/main/java/com/hbm/items/ItemEnums.java b/src/main/java/com/hbm/items/ItemEnums.java index 128d0e906..760fe724c 100644 --- a/src/main/java/com/hbm/items/ItemEnums.java +++ b/src/main/java/com/hbm/items/ItemEnums.java @@ -16,6 +16,7 @@ public class ItemEnums { public static enum EnumTarType { CRUDE, - CRACK + CRACK, + COAL } } diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index bceaf6a48..e033a0096 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -443,6 +443,7 @@ public class ModItems { public static Item powder_dura_steel; public static Item powder_polymer; + public static Item powder_bakelite; public static Item powder_euphemium; public static Item powder_meteorite; @@ -2885,6 +2886,7 @@ public class ModItems { powder_cerium = new ItemCustomLore().setRarity(EnumRarity.epic).setUnlocalizedName("powder_cerium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_cerium"); powder_dura_steel = new ItemCustomLore().setUnlocalizedName("powder_dura_steel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_dura_steel"); powder_polymer = new ItemCustomLore().setUnlocalizedName("powder_polymer").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_polymer"); + powder_bakelite = new ItemCustomLore().setUnlocalizedName("powder_bakelite").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_bakelite"); powder_euphemium = new ItemCustomLore().setRarity(EnumRarity.epic).setUnlocalizedName("powder_euphemium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_euphemium"); powder_meteorite = new Item().setUnlocalizedName("powder_meteorite").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_meteorite"); powder_lanthanium = new ItemCustomLore().setRarity(EnumRarity.epic).setUnlocalizedName("powder_lanthanium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_lanthanium"); @@ -5744,6 +5746,7 @@ public class ModItems { GameRegistry.registerItem(powder_beryllium, powder_beryllium.getUnlocalizedName()); GameRegistry.registerItem(powder_dura_steel, powder_dura_steel.getUnlocalizedName()); GameRegistry.registerItem(powder_polymer, powder_polymer.getUnlocalizedName()); + GameRegistry.registerItem(powder_bakelite, powder_bakelite.getUnlocalizedName()); GameRegistry.registerItem(powder_schrabidium, powder_schrabidium.getUnlocalizedName()); GameRegistry.registerItem(powder_schrabidate, powder_schrabidate.getUnlocalizedName()); GameRegistry.registerItem(powder_magnetized_tungsten, powder_magnetized_tungsten.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 2c102212b..4637d8733 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -950,6 +950,7 @@ public class MainRegistry { RefineryRecipes.registerFractions(); RefineryRecipes.registerCracking(); LiquefactionRecipes.register(); + SolidificationRecipes.register(); FuelPoolRecipes.register(); TileEntityNukeCustom.registerBombItems(); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSolidifier.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSolidifier.java index 0096b6ac6..1297218ec 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSolidifier.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSolidifier.java @@ -1,11 +1,17 @@ package com.hbm.tileentity.machine; +import java.util.List; + +import com.hbm.interfaces.IFluidAcceptor; +import com.hbm.inventory.FluidStack; import com.hbm.inventory.FluidTank; +import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.recipes.LiquefactionRecipes; import com.hbm.inventory.recipes.SolidificationRecipes; import com.hbm.lib.Library; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.Tuple.Pair; import api.hbm.energy.IEnergyUser; import cpw.mods.fml.relauncher.Side; @@ -15,7 +21,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; -public class TileEntityMachineSolidifier extends TileEntityMachineBase implements IEnergyUser { +public class TileEntityMachineSolidifier extends TileEntityMachineBase implements IEnergyUser, IFluidAcceptor { public long power; public static final long maxPower = 100000; @@ -40,6 +46,7 @@ public class TileEntityMachineSolidifier extends TileEntityMachineBase implement if(!worldObj.isRemote) { this.power = Library.chargeTEFromItems(slots, 1, power, maxPower); + tank.setType(4, slots); tank.updateTank(this); this.trySubscribe(worldObj, xCoord + 2, yCoord + 1, zCoord, Library.POS_X); @@ -47,6 +54,11 @@ public class TileEntityMachineSolidifier extends TileEntityMachineBase implement this.trySubscribe(worldObj, xCoord, yCoord + 1, zCoord + 2, Library.POS_Z); this.trySubscribe(worldObj, xCoord, yCoord + 1, zCoord - 2, Library.NEG_Z); + if(this.canProcess()) + this.process(); + else + this.progress = 0; + NBTTagCompound data = new NBTTagCompound(); data.setLong("power", this.power); data.setInteger("progress", this.progress); @@ -54,6 +66,72 @@ public class TileEntityMachineSolidifier extends TileEntityMachineBase implement } } + @Override + public boolean canExtractItem(int slot, ItemStack stack, int side) { + return slot == 0; + } + + @Override + public int[] getAccessibleSlotsFromSide(int side) { + return new int[] { 0 }; + } + + public boolean canProcess() { + + if(this.power < usage) + return false; + + Pair out = SolidificationRecipes.getOutput(tank.getTankType()); + + if(out == null) + return false; + + int req = out.getKey(); + ItemStack stack = out.getValue(); + + if(req > tank.getFill()) + return false; + + if(slots[0] != null) { + + if(slots[0].getItem() != stack.getItem()) + return false; + + if(slots[0].getItemDamage() != stack.getItemDamage()) + return false; + + if(slots[0].stackSize + stack.stackSize > slots[0].getMaxStackSize()) + return false; + } + + return true; + } + + public void process() { + + this.power -= usage; + + progress++; + + if(progress >= processTime) { + + Pair out = SolidificationRecipes.getOutput(tank.getTankType()); + int req = out.getKey(); + ItemStack stack = out.getValue(); + tank.setFill(tank.getFill() - req); + + if(slots[0] == null) { + slots[0] = stack.copy(); + } else { + slots[0].stackSize += stack.stackSize; + } + + progress = 0; + + this.markDirty(); + } + } + @Override public void networkUnpack(NBTTagCompound nbt) { this.power = nbt.getLong("power"); @@ -86,6 +164,42 @@ public class TileEntityMachineSolidifier extends TileEntityMachineBase implement public long getMaxPower() { return maxPower; } + + @Override + public void setFillstate(int fill, int index) { + // TODO Auto-generated method stub + + } + + @Override + public void setFluidFill(int fill, FluidType type) { + // TODO Auto-generated method stub + + } + + @Override + public void setType(FluidType type, int index) { + // TODO Auto-generated method stub + + } + + @Override + public List getTanks() { + // TODO Auto-generated method stub + return null; + } + + @Override + public int getFluidFill(FluidType type) { + // TODO Auto-generated method stub + return 0; + } + + @Override + public int getMaxFluidFill(FluidType type) { + // TODO Auto-generated method stub + return 0; + } AxisAlignedBB bb = null; diff --git a/src/main/resources/assets/hbm/textures/items/oil_tar.coal.png b/src/main/resources/assets/hbm/textures/items/oil_tar.coal.png new file mode 100644 index 000000000..da21005f9 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/oil_tar.coal.png differ diff --git a/src/main/resources/assets/hbm/textures/items/powder_bakelite.png b/src/main/resources/assets/hbm/textures/items/powder_bakelite.png new file mode 100644 index 000000000..d4fb72377 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/powder_bakelite.png differ