From 0de7b319bbae58e1f25018d8c2df6f71a25142ce Mon Sep 17 00:00:00 2001 From: Boblet Date: Tue, 6 Feb 2024 16:07:13 +0100 Subject: [PATCH] oil oil oil oil oil --- changelog | 13 +++- .../machine/MachineCatalyticReformer.java | 20 +++++- .../blocks/machine/MachineHydrotreater.java | 20 +++++- .../hbm/entity/item/EntityDeliveryDrone.java | 5 +- .../container/ContainerMachineRefinery.java | 19 +++-- .../ContainerMachineVacuumDistill.java | 2 + .../java/com/hbm/inventory/fluid/Fluids.java | 1 - .../hbm/inventory/gui/GUIMachineRefinery.java | 16 ----- .../inventory/recipes/ChemplantRecipes.java | 36 ++-------- .../inventory/recipes/FractionRecipes.java | 58 +++++---------- .../recipes/HydrotreatingRecipes.java | 18 +++-- .../hbm/inventory/recipes/MixerRecipes.java | 6 +- .../inventory/recipes/RefineryRecipes.java | 66 +++++++++++++++--- src/main/java/com/hbm/items/ItemEnums.java | 5 ++ src/main/java/com/hbm/items/ModItems.java | 6 +- .../java/com/hbm/items/tool/ItemDrone.java | 2 +- src/main/java/com/hbm/main/MainRegistry.java | 1 + .../oil/TileEntityMachineHydrotreater.java | 6 +- .../oil/TileEntityMachineRefinery.java | 44 +++--------- .../oil/TileEntityMachineVacuumDistill.java | 24 ++++--- src/main/resources/assets/hbm/lang/de_DE.lang | 9 ++- src/main/resources/assets/hbm/lang/en_US.lang | 11 ++- .../textures/gui/processing/gui_refinery.png | Bin 3327 -> 3023 bytes .../gui/processing/gui_vacuum_distill.png | Bin 3071 -> 3016 bytes ...iknock.png => fuel_additive.antiknock.png} | Bin .../textures/items/fuel_additive.deicer.png | Bin 0 -> 292 bytes 26 files changed, 213 insertions(+), 175 deletions(-) rename src/main/resources/assets/hbm/textures/items/{antiknock.png => fuel_additive.antiknock.png} (100%) create mode 100644 src/main/resources/assets/hbm/textures/items/fuel_additive.deicer.png diff --git a/changelog b/changelog index 6f219b35c..634d881bf 100644 --- a/changelog +++ b/changelog @@ -3,6 +3,12 @@ * Custom machines now have a neutron acceptor which allows them to use flux from the breeding reactor in recipes * There is now a heat acceptor which can accept heat from things like fireboxes or electric heaters * Also added a config option to create pollution +* Hydrotreater + * Tier 3 oil machine (on the same level as vacuum oil and reforming) + * Can de-sulfurize oil, which allows extraction of sour gas directly from crude oil + * Using desulfurized oil skips the (rather destructive) desulfurization process of the standard refinery, yielding higher-quality oils + * Hydrotreating also allows cracked diesel variants to turn into their normal counterparts + * Can convert coal oil directly into coal gasoline ## Changed * Deco bocks now drop all of the time, but they drop themselves instead of ingots @@ -21,6 +27,8 @@ * Remodeled all tier 0 missiles * Tier 0 missiles now have a much thinner contrail to match their size better * Covneyor ejectors can now eject sulfur out of the side ports of refineries +* Refineries and vacuum refineries now have fluid ID slots for changing the recipe +* Removed the remaining old oil separation recipes from the chemical plant ## Fixed * Fixed dupe caused by shift-clicking ashes out of the bricked furnace @@ -29,4 +37,7 @@ * Fixed fast-moving missiles spawning too few particles, causing holes in the contrail * Fixed coker units creating soot when not processing anything * Foundry molds can no longer be removed from basins when there's still material in them, fixing a bug where doing so would void the material -* Fixed molds not saving when cooling off, allowing to dupe metal when leaving and rejoining \ No newline at end of file +* Fixed molds not saving when cooling off, allowing to dupe metal when leaving and rejoining +* Fixed normal drones loading chunks +* Fixed chunk-loading drones not loading chunks +* Fixed several chemistry templates missing names \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/machine/MachineCatalyticReformer.java b/src/main/java/com/hbm/blocks/machine/MachineCatalyticReformer.java index 9d40aefe7..80c9f2aef 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineCatalyticReformer.java +++ b/src/main/java/com/hbm/blocks/machine/MachineCatalyticReformer.java @@ -1,17 +1,25 @@ package com.hbm.blocks.machine; +import java.util.List; + import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.IPersistentInfoProvider; import com.hbm.handler.MultiblockHandlerXR; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.oil.TileEntityMachineCatalyticReformer; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class MachineCatalyticReformer extends BlockDummyable { +public class MachineCatalyticReformer extends BlockDummyable implements IPersistentInfoProvider { public MachineCatalyticReformer(Material mat) { super(mat); @@ -61,4 +69,14 @@ public class MachineCatalyticReformer extends BlockDummyable { public int getOffset() { return 1; } + + @Override + public void addInformation(ItemStack stack, NBTTagCompound persistentTag, EntityPlayer player, List list, boolean ext) { + + for(int i = 0; i < 4; i++) { + FluidTank tank = new FluidTank(Fluids.NONE, 0); + tank.readFromNBT(persistentTag, "" + i); + list.add(EnumChatFormatting.YELLOW + "" + tank.getFill() + "/" + tank.getMaxFill() + "mB " + tank.getTankType().getLocalizedName()); + } + } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineHydrotreater.java b/src/main/java/com/hbm/blocks/machine/MachineHydrotreater.java index e689fb4df..c1ed1c005 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineHydrotreater.java +++ b/src/main/java/com/hbm/blocks/machine/MachineHydrotreater.java @@ -1,16 +1,24 @@ package com.hbm.blocks.machine; +import java.util.List; + import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.IPersistentInfoProvider; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.oil.TileEntityMachineHydrotreater; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class MachineHydrotreater extends BlockDummyable { +public class MachineHydrotreater extends BlockDummyable implements IPersistentInfoProvider { public MachineHydrotreater(Material mat) { super(mat); @@ -40,4 +48,14 @@ public class MachineHydrotreater extends BlockDummyable { this.makeExtra(world, x - dir.offsetX - 1, y, z - dir.offsetZ + 1); this.makeExtra(world, x - dir.offsetX - 1, y, z - dir.offsetZ - 1); } + + @Override + public void addInformation(ItemStack stack, NBTTagCompound persistentTag, EntityPlayer player, List list, boolean ext) { + + for(int i = 0; i < 4; i++) { + FluidTank tank = new FluidTank(Fluids.NONE, 0); + tank.readFromNBT(persistentTag, "" + i); + list.add(EnumChatFormatting.YELLOW + "" + tank.getFill() + "/" + tank.getMaxFill() + "mB " + tank.getTankType().getLocalizedName()); + } + } } diff --git a/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java b/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java index 531c19d3d..58ee212b4 100644 --- a/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java +++ b/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java @@ -21,8 +21,8 @@ public class EntityDeliveryDrone extends EntityDroneBase implements IInventory, protected ItemStack[] slots = new ItemStack[this.getSizeInventory()]; public FluidStack fluid; + protected boolean chunkLoading = false; private Ticket loaderTicket; - public boolean isChunkLoading = false; public EntityDeliveryDrone(World world) { super(world); @@ -36,6 +36,7 @@ public class EntityDeliveryDrone extends EntityDroneBase implements IInventory, public EntityDeliveryDrone setChunkLoading() { init(ForgeChunkManager.requestTicket(MainRegistry.instance, worldObj, Type.ENTITY)); + this.chunkLoading = true; return this; } @@ -77,6 +78,7 @@ public class EntityDeliveryDrone extends EntityDroneBase implements IInventory, } nbt.setByte("load", this.dataWatcher.getWatchableObjectByte(11)); + nbt.setBoolean("chunkLoading", chunkLoading); } @Override @@ -100,6 +102,7 @@ public class EntityDeliveryDrone extends EntityDroneBase implements IInventory, } this.dataWatcher.updateObject(11, nbt.getByte("load")); + if(nbt.getBoolean("chunkLoading")) this.setChunkLoading(); } @Override diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineRefinery.java b/src/main/java/com/hbm/inventory/container/ContainerMachineRefinery.java index 1a72051a2..000a58cf1 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineRefinery.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineRefinery.java @@ -17,7 +17,7 @@ public class ContainerMachineRefinery extends Container { public ContainerMachineRefinery(InventoryPlayer invPlayer, TileEntityMachineRefinery tedf) { testNuke = tedf; - + //Battery this.addSlotToContainer(new Slot(tedf, 0, 8, 90)); //Canister Input @@ -42,17 +42,16 @@ public class ContainerMachineRefinery extends Container { this.addSlotToContainer(new SlotTakeOnly(tedf, 10, 134, 108)); //Sulfur Output this.addSlotToContainer(new SlotTakeOnly(tedf, 11, 152, 36)); + //Fluid ID + this.addSlotToContainer(new Slot(tedf, 12, 8, 108)); - for(int i = 0; i < 3; i++) - { - for(int j = 0; j < 9; j++) - { + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18 + 56)); } } - - for(int i = 0; i < 9; i++) - { + + for(int i = 0; i < 9; i++) { this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142 + 56)); } } @@ -71,8 +70,8 @@ public class ContainerMachineRefinery extends Container { ItemStack var5 = var4.getStack(); var3 = var5.copy(); - if(par2 <= 11) { - if(!this.mergeItemStack(var5, 12, this.inventorySlots.size(), true)) { + if(par2 <= 12) { + if(!this.mergeItemStack(var5, 13, this.inventorySlots.size(), true)) { return null; } } else if(!this.mergeItemStack(var5, 0, 1, false)) diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineVacuumDistill.java b/src/main/java/com/hbm/inventory/container/ContainerMachineVacuumDistill.java index 217391f34..260bfe17d 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineVacuumDistill.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineVacuumDistill.java @@ -40,6 +40,8 @@ public class ContainerMachineVacuumDistill extends Container { this.addSlotToContainer(new Slot(tedf, 9, 134, 90)); //Petroleum Output this.addSlotToContainer(new SlotTakeOnly(tedf, 10, 134, 108)); + //Fluid ID + this.addSlotToContainer(new Slot(tedf, 11, 26, 108)); for(int i = 0; i < 3; i++) { for(int j = 0; j < 9; j++) { diff --git a/src/main/java/com/hbm/inventory/fluid/Fluids.java b/src/main/java/com/hbm/inventory/fluid/Fluids.java index 49f0ea80a..ba9407683 100644 --- a/src/main/java/com/hbm/inventory/fluid/Fluids.java +++ b/src/main/java/com/hbm/inventory/fluid/Fluids.java @@ -124,7 +124,6 @@ public class Fluids { public static FluidType SOLVENT; //oranic solvent in fact public static FluidType BLOOD; //BLOOD ORB! BLOOD ORB! BLOOD ORB! public static FluidType BLOOD_HOT; - public static FluidType PHEROMONE; public static FluidType PHEROMONE_M; public static FluidType SYNGAS; diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineRefinery.java b/src/main/java/com/hbm/inventory/gui/GUIMachineRefinery.java index c271c162d..04b901816 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineRefinery.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineRefinery.java @@ -5,15 +5,11 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerMachineRefinery; import com.hbm.inventory.fluid.Fluids; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; -import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.machine.oil.TileEntityMachineRefinery; import net.minecraft.client.Minecraft; -import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; public class GUIMachineRefinery extends GuiInfoContainer { @@ -40,18 +36,6 @@ public class GUIMachineRefinery extends GuiInfoContainer { refinery.tanks[4].renderTankInfo(this, mouseX, mouseY, guiLeft + 134, guiTop + 70 - 52, 16, 52); this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 70 - 52, 16, 52, refinery.power, refinery.maxPower); } - - @Override - protected void mouseClicked(int x, int y, int i) { - super.mouseClicked(x, y, i); - - if(guiLeft + 64 <= x && guiLeft + 76 > x && guiTop + 20 < y && guiTop + 46 >= y) { - mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); - NBTTagCompound data = new NBTTagCompound(); - data.setBoolean("toggle", true); //we only need to send one bit, so boolean it is - PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, refinery.xCoord, refinery.yCoord, refinery.zCoord)); - } - } @Override protected void drawGuiContainerForegroundLayer(int i, int j) { diff --git a/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java b/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java index b581d0ee8..7f88fe3de 100644 --- a/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java @@ -38,7 +38,6 @@ public class ChemplantRecipes extends SerializableRecipe { @Override public void registerDefaults() { - registerFuelProcessing(); //6-30, formerly oil cracking, coal liquefaction and solidifciation registerOtherOil(); @@ -314,7 +313,7 @@ public class ChemplantRecipes extends SerializableRecipe { .inputFluids( new FluidStack(Fluids.PETROLEUM, 100), new FluidStack(Fluids.STEAM, 1000)) - .outputItems(new ItemStack(ModItems.antiknock))); + .outputItems(new ItemStack(ModItems.fuel_additive))); recipes.add(new ChemRecipe(4, "FR_REOIL", 30) .inputFluids(new FluidStack(1000, Fluids.SMEAR)) .outputFluids(new FluidStack(800, Fluids.RECLAIMED))); @@ -324,18 +323,18 @@ public class ChemplantRecipes extends SerializableRecipe { new FluidStack(200, Fluids.LUBRICANT)) .outputFluids(new FluidStack(1000, Fluids.PETROIL))); recipes.add(new ChemRecipe(86, "PETROIL_LEADED", 40) - .inputItems(new ComparableStack(ModItems.antiknock)) + .inputItems(new ComparableStack(ModItems.fuel_additive)) .inputFluids(new FluidStack(Fluids.PETROIL, 10_000)) .outputFluids(new FluidStack(Fluids.PETROIL_LEADED, 12_000))); recipes.add(new ChemRecipe(71, "GASOLINE", 40) .inputFluids(new FluidStack(Fluids.NAPHTHA, 1000)) .outputFluids(new FluidStack(Fluids.GASOLINE, 800))); recipes.add(new ChemRecipe(85, "GASOLINE_LEADED", 40) - .inputItems(new ComparableStack(ModItems.antiknock)) + .inputItems(new ComparableStack(ModItems.fuel_additive)) .inputFluids(new FluidStack(Fluids.GASOLINE, 10_000)) .outputFluids(new FluidStack(Fluids.GASOLINE_LEADED, 12_000))); recipes.add(new ChemRecipe(87, "COALGAS_LEADED", 40) - .inputItems(new ComparableStack(ModItems.antiknock)) + .inputItems(new ComparableStack(ModItems.fuel_additive)) .inputFluids(new FluidStack(Fluids.COALGAS, 10_000)) .outputFluids(new FluidStack(Fluids.COALGAS_LEADED, 12_000))); recipes.add(new ChemRecipe(72, "FRACKSOL", 20) @@ -418,33 +417,6 @@ public class ChemplantRecipes extends SerializableRecipe { .outputFluids(new FluidStack(Fluids.SALIENT, 250))); } - - public static void registerFuelProcessing() { - recipes.add(new ChemRecipe(0, "FP_HEAVYOIL", 50) - .inputFluids(new FluidStack(1000, Fluids.HEAVYOIL)) - .outputFluids( - new FluidStack(FractionRecipes.heavy_frac_bitu * 10, Fluids.BITUMEN), - new FluidStack(FractionRecipes.heavy_frac_smear * 10, Fluids.SMEAR) - )); - recipes.add(new ChemRecipe(1, "FP_SMEAR", 50) - .inputFluids(new FluidStack(1000, Fluids.SMEAR)) - .outputFluids( - new FluidStack(FractionRecipes.smear_frac_heat * 10, Fluids.HEATINGOIL), - new FluidStack(FractionRecipes.smear_frac_lube * 10, Fluids.LUBRICANT) - )); - recipes.add(new ChemRecipe(2, "FP_NAPHTHA", 50) - .inputFluids(new FluidStack(1000, Fluids.NAPHTHA)) - .outputFluids( - new FluidStack(FractionRecipes.napht_frac_heat * 10, Fluids.HEATINGOIL), - new FluidStack(FractionRecipes.napht_frac_diesel * 10, Fluids.DIESEL) - )); - recipes.add(new ChemRecipe(3, "FP_LIGHTOIL", 50) - .inputFluids(new FluidStack(1000, Fluids.LIGHTOIL)) - .outputFluids( - new FluidStack(FractionRecipes.light_frac_diesel * 10, Fluids.DIESEL), - new FluidStack(FractionRecipes.light_frac_kero * 10, Fluids.KEROSENE) - )); - } public static void registerOtherOil() { recipes.add(new ChemRecipe(31, "BP_BIOGAS", 60) diff --git a/src/main/java/com/hbm/inventory/recipes/FractionRecipes.java b/src/main/java/com/hbm/inventory/recipes/FractionRecipes.java index e26769068..8b144c3fb 100644 --- a/src/main/java/com/hbm/inventory/recipes/FractionRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/FractionRecipes.java @@ -19,50 +19,28 @@ import net.minecraft.item.ItemStack; public class FractionRecipes extends SerializableRecipe { - public static final int heavy_frac_bitu = 30; - public static final int heavy_frac_smear = 70; - public static final int smear_frac_heat = 60; - public static final int smear_frac_lube = 40; - public static final int napht_frac_heat = 40; - 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 = 30; - public static final int coal_frac_oil = 70; - public static final int creo_frac_coaloil = 10; - public static final int creo_frac_bitu = 90; - public static final int reform_frac_arom = 40; - public static final int reform_frac_xyle = 60; - public static final int hvac_frac_smear = 40; - public static final int hvac_frac_heat = 60; - public static final int lvac_frac_kero = 70; - public static final int lvac_frac_gas = 30; - private static Map> fractions = new HashMap(); @Override public void registerDefaults() { - fractions.put(Fluids.HEAVYOIL, new Pair(new FluidStack(Fluids.BITUMEN, heavy_frac_bitu), new FluidStack(Fluids.SMEAR, heavy_frac_smear))); - fractions.put(Fluids.SMEAR, new Pair(new FluidStack(Fluids.HEATINGOIL, smear_frac_heat), new FluidStack(Fluids.LUBRICANT, smear_frac_lube))); - fractions.put(Fluids.NAPHTHA, new Pair(new FluidStack(Fluids.HEATINGOIL, napht_frac_heat), new FluidStack(Fluids.DIESEL, napht_frac_diesel))); - fractions.put(Fluids.NAPHTHA_CRACK, new Pair(new FluidStack(Fluids.HEATINGOIL, ncrack_frac_heat), new FluidStack(Fluids.DIESEL_CRACK, ncrack_frac_diesel))); - fractions.put(Fluids.LIGHTOIL, new Pair(new FluidStack(Fluids.DIESEL, light_frac_diesel), new FluidStack(Fluids.KEROSENE, light_frac_kero))); - fractions.put(Fluids.LIGHTOIL_CRACK, new Pair(new FluidStack(Fluids.KEROSENE, lcrack_frac_kero), new FluidStack(Fluids.PETROLEUM, lcrack_frac_petro))); - fractions.put(Fluids.COALOIL, new Pair(new FluidStack(Fluids.COALGAS, coal_frac_coalgas), new FluidStack(Fluids.OIL, coal_frac_oil))); - fractions.put(Fluids.COALCREOSOTE, new Pair(new FluidStack(Fluids.COALOIL, creo_frac_coaloil), new FluidStack(Fluids.BITUMEN, creo_frac_bitu))); - fractions.put(Fluids.HEAVYOIL_VACUUM, new Pair(new FluidStack(Fluids.SMEAR, hvac_frac_smear), new FluidStack(Fluids.HEATINGOIL_VACUUM, hvac_frac_heat))); - fractions.put(Fluids.REFORMATE, new Pair(new FluidStack(Fluids.AROMATICS, reform_frac_arom), new FluidStack(Fluids.XYLENE, reform_frac_xyle))); - fractions.put(Fluids.LIGHTOIL_VACUUM, new Pair(new FluidStack(Fluids.KEROSENE, lvac_frac_kero), new FluidStack(Fluids.REFORMGAS, lvac_frac_gas))); - fractions.put(Fluids.EGG, new Pair(new FluidStack(Fluids.CHOLESTEROL, 50), new FluidStack(Fluids.RADIOSOLVENT, 50))); - fractions.put(Fluids.OIL_COKER, new Pair(new FluidStack(Fluids.CRACKOIL, 30), new FluidStack(Fluids.HEATINGOIL, 70))); - fractions.put(Fluids.NAPHTHA_COKER, new Pair(new FluidStack(Fluids.NAPHTHA_CRACK, 75), new FluidStack(Fluids.LIGHTOIL_CRACK, 25))); - fractions.put(Fluids.GAS_COKER, new Pair(new FluidStack(Fluids.AROMATICS, 25), new FluidStack(Fluids.CARBONDIOXIDE, 75))); - fractions.put(Fluids.CHLOROCALCITE_MIX, new Pair(new FluidStack(Fluids.CHLOROCALCITE_CLEANED, 50), new FluidStack(Fluids.COLLOID, 50))); + fractions.put(Fluids.HEAVYOIL, new Pair(new FluidStack(Fluids.BITUMEN, 30), new FluidStack(Fluids.SMEAR, 70))); + fractions.put(Fluids.HEAVYOIL_VACUUM, new Pair(new FluidStack(Fluids.SMEAR, 40), new FluidStack(Fluids.HEATINGOIL_VACUUM, 60))); + fractions.put(Fluids.SMEAR, new Pair(new FluidStack(Fluids.HEATINGOIL, 60), new FluidStack(Fluids.LUBRICANT, 40))); + fractions.put(Fluids.NAPHTHA, new Pair(new FluidStack(Fluids.HEATINGOIL, 40), new FluidStack(Fluids.DIESEL, 60))); + fractions.put(Fluids.NAPHTHA_DS, new Pair(new FluidStack(Fluids.XYLENE, 60), new FluidStack(Fluids.DIESEL_REFORM, 40))); + fractions.put(Fluids.NAPHTHA_CRACK, new Pair(new FluidStack(Fluids.HEATINGOIL, 30), new FluidStack(Fluids.DIESEL_CRACK, 70))); + fractions.put(Fluids.LIGHTOIL, new Pair(new FluidStack(Fluids.DIESEL, 40), new FluidStack(Fluids.KEROSENE, 60))); + fractions.put(Fluids.LIGHTOIL_DS, new Pair(new FluidStack(Fluids.DIESEL_REFORM, 60), new FluidStack(Fluids.KEROSENE_REFORM, 40))); + fractions.put(Fluids.LIGHTOIL_CRACK, new Pair(new FluidStack(Fluids.KEROSENE, 70), new FluidStack(Fluids.PETROLEUM, 30))); + fractions.put(Fluids.COALOIL, new Pair(new FluidStack(Fluids.COALGAS, 30), new FluidStack(Fluids.OIL, 70))); + fractions.put(Fluids.COALCREOSOTE, new Pair(new FluidStack(Fluids.COALOIL, 10), new FluidStack(Fluids.BITUMEN, 90))); + fractions.put(Fluids.REFORMATE, new Pair(new FluidStack(Fluids.AROMATICS, 40), new FluidStack(Fluids.XYLENE, 60))); + fractions.put(Fluids.LIGHTOIL_VACUUM, new Pair(new FluidStack(Fluids.KEROSENE, 70), new FluidStack(Fluids.REFORMGAS, 30))); + fractions.put(Fluids.EGG, new Pair(new FluidStack(Fluids.CHOLESTEROL, 50), new FluidStack(Fluids.RADIOSOLVENT, 50))); + fractions.put(Fluids.OIL_COKER, new Pair(new FluidStack(Fluids.CRACKOIL, 30), new FluidStack(Fluids.HEATINGOIL, 70))); + fractions.put(Fluids.NAPHTHA_COKER, new Pair(new FluidStack(Fluids.NAPHTHA_CRACK, 75), new FluidStack(Fluids.LIGHTOIL_CRACK, 25))); + fractions.put(Fluids.GAS_COKER, new Pair(new FluidStack(Fluids.AROMATICS, 25), new FluidStack(Fluids.CARBONDIOXIDE, 75))); + fractions.put(Fluids.CHLOROCALCITE_MIX, new Pair(new FluidStack(Fluids.CHLOROCALCITE_CLEANED, 50), new FluidStack(Fluids.COLLOID, 50))); } public static Pair getFractions(FluidType oil) { diff --git a/src/main/java/com/hbm/inventory/recipes/HydrotreatingRecipes.java b/src/main/java/com/hbm/inventory/recipes/HydrotreatingRecipes.java index 840840c24..5836457a5 100644 --- a/src/main/java/com/hbm/inventory/recipes/HydrotreatingRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/HydrotreatingRecipes.java @@ -24,32 +24,38 @@ public class HydrotreatingRecipes extends SerializableRecipe { public void registerDefaults() { recipes.put(Fluids.OIL, new Triplet( - new FluidStack(Fluids.HYDROGEN, 5), + new FluidStack(Fluids.HYDROGEN, 5, 1), new FluidStack(Fluids.OIL_DS, 90), new FluidStack(Fluids.SOURGAS, 15) )); recipes.put(Fluids.CRACKOIL, new Triplet( - new FluidStack(Fluids.HYDROGEN, 5), + new FluidStack(Fluids.HYDROGEN, 5, 1), new FluidStack(Fluids.CRACKOIL_DS, 90), new FluidStack(Fluids.SOURGAS, 15) )); recipes.put(Fluids.GAS, new Triplet( - new FluidStack(Fluids.HYDROGEN, 5), + new FluidStack(Fluids.HYDROGEN, 5, 1), new FluidStack(Fluids.PETROLEUM, 80), new FluidStack(Fluids.SOURGAS, 15) )); recipes.put(Fluids.DIESEL_CRACK, new Triplet( - new FluidStack(Fluids.HYDROGEN, 10), + new FluidStack(Fluids.HYDROGEN, 10, 1), new FluidStack(Fluids.DIESEL, 80), - new FluidStack(Fluids.SOURGAS, 15) + new FluidStack(Fluids.SOURGAS, 30) )); recipes.put(Fluids.DIESEL_CRACK_REFORM, new Triplet( - new FluidStack(Fluids.HYDROGEN, 10), + new FluidStack(Fluids.HYDROGEN, 10, 1), new FluidStack(Fluids.DIESEL_REFORM, 80), + new FluidStack(Fluids.SOURGAS, 30) + )); + + recipes.put(Fluids.COALOIL, new Triplet( + new FluidStack(Fluids.HYDROGEN, 10, 1), + new FluidStack(Fluids.COALGAS, 80), new FluidStack(Fluids.SOURGAS, 15) )); } diff --git a/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java b/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java index fe7b40217..35f82fdb7 100644 --- a/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java @@ -73,9 +73,9 @@ public class MixerRecipes extends SerializableRecipe { register(Fluids.SYNGAS, new MixerRecipe(1_000, 50).setStack1(new FluidStack(Fluids.COALOIL, 500)).setStack2(new FluidStack(Fluids.STEAM, 500))); register(Fluids.OXYHYDROGEN, new MixerRecipe(1_000, 50).setStack1(new FluidStack(Fluids.HYDROGEN, 500)).setStack2(new FluidStack(Fluids.OXYGEN, 500))); - register(Fluids.PETROIL_LEADED, new MixerRecipe(12_000, 40).setStack1(new FluidStack(Fluids.PETROIL, 10_000)).setSolid(new ComparableStack(ModItems.antiknock))); - register(Fluids.GASOLINE_LEADED, new MixerRecipe(12_000, 40).setStack1(new FluidStack(Fluids.GASOLINE, 10_000)).setSolid(new ComparableStack(ModItems.antiknock))); - register(Fluids.COALGAS_LEADED, new MixerRecipe(12_000, 40).setStack1(new FluidStack(Fluids.COALGAS, 10_000)).setSolid(new ComparableStack(ModItems.antiknock))); + register(Fluids.PETROIL_LEADED, new MixerRecipe(12_000, 40).setStack1(new FluidStack(Fluids.PETROIL, 10_000)).setSolid(new ComparableStack(ModItems.fuel_additive, 1, 0))); + register(Fluids.GASOLINE_LEADED, new MixerRecipe(12_000, 40).setStack1(new FluidStack(Fluids.GASOLINE, 10_000)).setSolid(new ComparableStack(ModItems.fuel_additive, 1, 0))); + register(Fluids.COALGAS_LEADED, new MixerRecipe(12_000, 40).setStack1(new FluidStack(Fluids.COALGAS, 10_000)).setSolid(new ComparableStack(ModItems.fuel_additive, 1, 0))); register(Fluids.DIESEL_REFORM, new MixerRecipe(1_000, 50).setStack1(new FluidStack(Fluids.DIESEL, 900)).setStack2(new FluidStack(Fluids.REFORMATE, 100))); register(Fluids.DIESEL_CRACK_REFORM, new MixerRecipe(1_000, 50).setStack1(new FluidStack(Fluids.DIESEL_CRACK, 900)).setStack2(new FluidStack(Fluids.REFORMATE, 100))); diff --git a/src/main/java/com/hbm/inventory/recipes/RefineryRecipes.java b/src/main/java/com/hbm/inventory/recipes/RefineryRecipes.java index 427f4a329..edf2d005b 100644 --- a/src/main/java/com/hbm/inventory/recipes/RefineryRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/RefineryRecipes.java @@ -12,6 +12,7 @@ import com.hbm.items.ItemEnums.EnumTarType; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemFluidIcon; import com.hbm.util.ItemStackUtil; +import com.hbm.util.Tuple.Quartet; import com.hbm.util.Tuple.Quintet; import net.minecraft.item.ItemStack; @@ -28,16 +29,26 @@ public class RefineryRecipes { public static final int crack_frac_aroma = 15; public static final int crack_frac_unsat = 15; + public static final int oilds_frac_heavy = 30; + public static final int oilds_frac_naph = 35; + public static final int oilds_frac_light = 20; + public static final int oilds_frac_unsat = 15; + public static final int crackds_frac_naph = 35; + public static final int crackds_frac_light = 35; + public static final int crackds_frac_aroma = 15; + public static final int crackds_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(); + private static Map> vacuum = new HashMap(); - public static Map getRefineryRecipe() { + public static HashMap getRefineryRecipe() { - Map recipes = new HashMap(); + HashMap recipes = new HashMap(); for(Entry> recipe : refinery.entrySet()) { @@ -55,15 +66,21 @@ public class RefineryRecipes { return recipes; } - public static HashMap getVacuumRecipe() { + public static HashMap getVacuumRecipe() { HashMap recipes = new HashMap(); - recipes.put(ItemFluidIcon.make(Fluids.OIL, 1000, 2), - 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) }); + + for(Entry> recipe : vacuum.entrySet()) { + + Quartet fluids = recipe.getValue(); + + recipes.put(ItemFluidIcon.make(recipe.getKey(), 1000, 2), + new ItemStack[] { + ItemFluidIcon.make(fluids.getW().type, fluids.getW().fill * 10), + ItemFluidIcon.make(fluids.getX().type, fluids.getX().fill * 10), + ItemFluidIcon.make(fluids.getY().type, fluids.getY().fill * 10), + ItemFluidIcon.make(fluids.getZ().type, fluids.getZ().fill * 10) }); + } return recipes; } @@ -83,9 +100,40 @@ public class RefineryRecipes { new FluidStack(Fluids.UNSATURATEDS, crack_frac_unsat), DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRACK) )); + refinery.put(Fluids.HOTOIL_DS, new Quintet( + new FluidStack(Fluids.HEAVYOIL, oilds_frac_heavy), + new FluidStack(Fluids.NAPHTHA_DS, oilds_frac_naph), + new FluidStack(Fluids.LIGHTOIL_DS, oilds_frac_light), + new FluidStack(Fluids.UNSATURATEDS, oilds_frac_unsat), + DictFrame.fromOne(ModItems.oil_tar, EnumTarType.PARAFFIN) + )); + refinery.put(Fluids.HOTCRACKOIL_DS, new Quintet( + new FluidStack(Fluids.NAPHTHA_DS, crackds_frac_naph), + new FluidStack(Fluids.LIGHTOIL_DS, crackds_frac_light), + new FluidStack(Fluids.AROMATICS, crackds_frac_aroma), + new FluidStack(Fluids.UNSATURATEDS, crackds_frac_unsat), + DictFrame.fromOne(ModItems.oil_tar, EnumTarType.PARAFFIN) + )); + + vacuum.put(Fluids.OIL, new Quartet( + new FluidStack(Fluids.HEAVYOIL_VACUUM, vac_frac_heavy), + new FluidStack(Fluids.REFORMATE, vac_frac_reform), + new FluidStack(Fluids.LIGHTOIL_VACUUM, vac_frac_light), + new FluidStack(Fluids.SOURGAS, vac_frac_sour) + )); + vacuum.put(Fluids.OIL_DS, new Quartet( + new FluidStack(Fluids.HEAVYOIL_VACUUM, vac_frac_heavy), + new FluidStack(Fluids.REFORMATE, vac_frac_reform), + new FluidStack(Fluids.LIGHTOIL_VACUUM, vac_frac_light), + new FluidStack(Fluids.REFORMGAS, vac_frac_sour) + )); } public static Quintet getRefinery(FluidType oil) { return refinery.get(oil); } + + public static Quartet getVacuum(FluidType oil) { + return vacuum.get(oil); + } } diff --git a/src/main/java/com/hbm/items/ItemEnums.java b/src/main/java/com/hbm/items/ItemEnums.java index afe1a97e0..a86838291 100644 --- a/src/main/java/com/hbm/items/ItemEnums.java +++ b/src/main/java/com/hbm/items/ItemEnums.java @@ -66,6 +66,11 @@ public class ItemEnums { DIGAMMAFOROURRIGHT } + public static enum EnumFuelAdditive { + ANTIKNOCK, + DEICER + } + public static enum EnumPages { PAGE1, PAGE2, PAGE3, PAGE4, PAGE5, PAGE6, PAGE7, PAGE8 } diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index fc18a256c..fa7e4ec70 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -923,7 +923,7 @@ public class ModItems { public static Item inf_water; public static Item inf_water_mk2; - public static Item antiknock; + public static Item fuel_additive; public static Item canister_empty; public static Item canister_full; @@ -3320,7 +3320,7 @@ public class ModItems { thermo_element = new Item().setUnlocalizedName("thermo_element").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":thermo_element"); catalytic_converter = new Item().setUnlocalizedName("catalytic_converter").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":catalytic_converter"); - antiknock = new Item().setUnlocalizedName("antiknock").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":antiknock"); + fuel_additive = new ItemEnumMulti(ItemEnums.EnumFuelAdditive.class, true, true).setUnlocalizedName("antiknock").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":antiknock"); canister_empty = new ItemCustomLore().setUnlocalizedName("canister_empty").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":canister_empty"); canister_full = new ItemCanister().setUnlocalizedName("canister_full").setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.canister_empty).setTextureName(RefStrings.MODID + ":canister_empty"); @@ -6406,7 +6406,7 @@ public class ModItems { GameRegistry.registerItem(inf_water_mk2, inf_water_mk2.getUnlocalizedName()); //Canisters - GameRegistry.registerItem(antiknock, antiknock.getUnlocalizedName()); + GameRegistry.registerItem(fuel_additive, fuel_additive.getUnlocalizedName()); GameRegistry.registerItem(canister_empty, canister_empty.getUnlocalizedName()); GameRegistry.registerItem(canister_full, canister_full.getUnlocalizedName()); GameRegistry.registerItem(canister_napalm, canister_napalm.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/tool/ItemDrone.java b/src/main/java/com/hbm/items/tool/ItemDrone.java index e2c7b5ffe..5df768877 100644 --- a/src/main/java/com/hbm/items/tool/ItemDrone.java +++ b/src/main/java/com/hbm/items/tool/ItemDrone.java @@ -34,7 +34,7 @@ public class ItemDrone extends ItemEnumMulti { if(stack.getItemDamage() < 4) { toSpawn = new EntityDeliveryDrone(world); - if(stack.getItemDamage() % 2 == 0) { + if(stack.getItemDamage() % 2 == 1) { ((EntityDeliveryDrone) toSpawn).setChunkLoading(); } if(stack.getItemDamage() > 1) { diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 080f463d2..cd615d7b1 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -1223,6 +1223,7 @@ public class MainRegistry { remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); remapItems.put("hbm:item.man_explosive8", ModItems.explosive_lenses); remapItems.put("hbm:item.briquette_lignite", ModItems.briquette); + remapItems.put("hbm:item.antiknock", ModItems.fuel_additive); for(MissingMapping mapping : event.get()) { diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineHydrotreater.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineHydrotreater.java index dfafab682..66f296d0d 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineHydrotreater.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineHydrotreater.java @@ -39,7 +39,7 @@ public class TileEntityMachineHydrotreater extends TileEntityMachineBase impleme this.tanks = new FluidTank[4]; this.tanks[0] = new FluidTank(Fluids.OIL, 64_000); - this.tanks[1] = new FluidTank(Fluids.HYDROGEN, 64_000); + this.tanks[1] = new FluidTank(Fluids.HYDROGEN, 64_000).withPressure(1); this.tanks[2] = new FluidTank(Fluids.NONE, 24_000); this.tanks[3] = new FluidTank(Fluids.SOURGAS, 24_000); } @@ -61,7 +61,7 @@ public class TileEntityMachineHydrotreater extends TileEntityMachineBase impleme tanks[0].loadTank(1, 2, slots); tanks[1].loadTank(3, 4, slots); - reform(); + if(worldObj.getTotalWorldTime() % 2 == 0) reform(); tanks[2].unloadTank(5, 6, slots); tanks[3].unloadTank(7, 8, slots); @@ -85,7 +85,7 @@ public class TileEntityMachineHydrotreater extends TileEntityMachineBase impleme return; } - tanks[1].setTankType(out.getX().type); + tanks[1].withPressure(out.getX().pressure).setTankType(out.getX().type); tanks[2].setTankType(out.getY().type); tanks[3].setTankType(out.getZ().type); 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 d1b79b8ea..95ec386e1 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java @@ -9,7 +9,6 @@ import com.hbm.blocks.ModBlocks; import com.hbm.handler.MultiblockHandlerXR; import com.hbm.handler.pollution.PollutionHandler; import com.hbm.handler.pollution.PollutionHandler.PollutionType; -import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.FluidStack; import com.hbm.inventory.OreDictManager; import com.hbm.inventory.RecipesCommon.AStack; @@ -46,12 +45,11 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.Vec3; import net.minecraft.world.Explosion; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineRefinery extends TileEntityMachineBase implements IEnergyUser, IControlReceiver, IOverpressurable, IPersistentNBT, IRepairable, IFluidStandardTransceiver, IGUIProvider { +public class TileEntityMachineRefinery extends TileEntityMachineBase implements IEnergyUser, IOverpressurable, IPersistentNBT, IRepairable, IFluidStandardTransceiver, IGUIProvider { public long power = 0; public int sulfur = 0; @@ -70,7 +68,7 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements private static final int[] slot_access = new int[] {11}; public TileEntityMachineRefinery() { - super(12); + super(13); tanks = new FluidTank[5]; tanks[0] = new FluidTank(Fluids.HOTOIL, 64_000); tanks[1] = new FluidTank(Fluids.HEAVYOIL, 24_000); @@ -157,6 +155,7 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements this.updateConnections(); power = Library.chargeTEFromItems(slots, 0, power, maxPower); + tanks[0].setType(12, slots); tanks[0].loadTank(1, 2, slots); refine(); @@ -268,17 +267,16 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements private void refine() { Quintet refinery = RefineryRecipes.getRefinery(tanks[0].getTankType()); - - if(refinery == null) //usually not possible + if(refinery == null) { + for(int i = 1; i < 5; i++) tanks[i].setTankType(Fluids.NONE); return; + } FluidStack[] stacks = new FluidStack[] {refinery.getV(), refinery.getW(), refinery.getX(), refinery.getY()}; - for(int i = 0; i < stacks.length; i++) - tanks[i + 1].setTankType(stacks[i].type); + for(int i = 0; i < stacks.length; i++) tanks[i + 1].setTankType(stacks[i].type); - if(power < 5 || tanks[0].getFill() < 100) - return; + if(power < 5 || tanks[0].getFill() < 100) return; for(int i = 0; i < stacks.length; i++) { if(tanks[i + 1].getFill() + stacks[i].fill > tanks[i + 1].getMaxFill()) { @@ -289,8 +287,7 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements this.isOn = true; tanks[0].setFill(tanks[0].getFill() - 100); - for(int i = 0; i < stacks.length; i++) - tanks[i + 1].setFill(tanks[i + 1].getFill() + stacks[i].fill); + for(int i = 0; i < stacks.length; i++) tanks[i + 1].setFill(tanks[i + 1].getFill() + stacks[i].fill); this.sulfur++; @@ -315,7 +312,6 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements } if(worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * 5); - this.power -= 5; } @@ -370,28 +366,6 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements return 65536.0D; } - @Override - public boolean hasPermission(EntityPlayer player) { - return Vec3.createVectorHelper(xCoord - player.posX, yCoord - player.posY, zCoord - player.posZ).lengthVector() < 25; - } - - @Override - public void receiveControl(NBTTagCompound data) { - - if(data.hasKey("toggle")) { - - for(DirPos pos : getConPos()) { - this.tryUnsubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ()); - } - - if(tanks[0].getTankType() == Fluids.HOTOIL) { - tanks[0].setTankType(Fluids.HOTCRACKOIL); - } else { - tanks[0].setTankType(Fluids.HOTOIL); - } - } - } - @Override public FluidTank[] getSendingTanks() { return new FluidTank[] { tanks[1], tanks[2], tanks[3], tanks[4] }; 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 326608afc..ea3ec152e 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineVacuumDistill.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineVacuumDistill.java @@ -1,5 +1,6 @@ package com.hbm.tileentity.machine.oil; +import com.hbm.inventory.FluidStack; import com.hbm.inventory.container.ContainerMachineVacuumDistill; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; @@ -12,6 +13,7 @@ import com.hbm.sound.AudioWrapper; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.Tuple.Quartet; import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energy.IEnergyUser; @@ -38,7 +40,7 @@ public class TileEntityMachineVacuumDistill extends TileEntityMachineBase implem public boolean isOn; public TileEntityMachineVacuumDistill() { - super(11); + super(12); this.tanks = new FluidTank[5]; this.tanks[0] = new FluidTank(Fluids.OIL, 64_000).withPressure(2); @@ -62,6 +64,7 @@ public class TileEntityMachineVacuumDistill extends TileEntityMachineBase implem this.updateConnections(); power = Library.chargeTEFromItems(slots, 0, power, maxPower); + tanks[0].setType(11, slots); tanks[0].loadTank(1, 2, slots); refine(); @@ -147,21 +150,24 @@ public class TileEntityMachineVacuumDistill extends TileEntityMachineBase implem } private void refine() { + Quartet refinery = RefineryRecipes.getVacuum(tanks[0].getTankType()); + if(refinery == null) { + for(int i = 1; i < 5; i++) tanks[i].setTankType(Fluids.NONE); + return; + } + + FluidStack[] stacks = new FluidStack[] {refinery.getW(), refinery.getX(), refinery.getY(), refinery.getZ()}; + for(int i = 0; i < stacks.length; i++) tanks[i + 1].setTankType(stacks[i].type); if(power < 10_000) return; if(tanks[0].getFill() < 100) 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; + for(int i = 0; i < stacks.length; i++) if(tanks[i + 1].getFill() + stacks[i].fill > tanks[i + 1].getMaxFill()) return; this.isOn = true; power -= 10_000; tanks[0].setFill(tanks[0].getFill() - 100); - 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); + + for(int i = 0; i < stacks.length; i++) tanks[i + 1].setFill(tanks[i + 1].getFill() + stacks[i].fill); } private void updateConnections() { diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 825ebcafd..0e965f420 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -226,18 +226,21 @@ chem.GASOLINE=Benzinherstellung chem.GASOLINE_LEADED=Bleibenzin mischen chem.HELIUM3=Helium-3-Extraktion aus Mondgestein chem.KEVLAR=Kevlarverbundherstellung +chem.LAMINATE=Laminatherstellung chem.LPG=Petroleumgasverflüssigung chem.LUBRICANT=Schmieröl mischen chem.NITAN=NITAN-Supertreibstoff mischen chem.NITRIC_ACID=Salpetersäureherstellung chem.OIL_SAND=Teersand-Extraktion chem.OSMIRIDIUM_DEATH=Osmiridiumlösung-Herstellung +chem.PC=Polycarbonatherstellung chem.PC_ELECTROLYSIS=Kaliumchloridelektrolyse chem.PEROXIDE=Wasserstoffperoxidherstellung chem.PET=PET-Synthese chem.PETROIL_LEADED=Bleigemisch mischen chem.POLYMER=Polymersynthese chem.PUF6=Plutoniumhexafluoridproduktion +chem.PVC=Polyvinylchloridherstellung chem.RUBBER=Gummiherstellung chem.SAS3=Schrabidiumtrisulfatherstellung chem.SATURN=Saturnitherstellung @@ -258,6 +261,9 @@ chem.SF_PETROIL=Gemischverfestigung chem.SF_PETROLEUM=Petroleumgasverfestigung chem.SF_RECLAIMED=Verfestigung von wiederaufbereitetem Industrieöl chem.SF_SMEAR=Industrieölverfestigung +chem.SHELL_CHLORINE=Chlorgas-Artilleriegeschoss-Herstellung +chem.SHELL_MUSTARD=Senfgas-Artilleriegeschoss-Herstellung +chem.SHELL_PHOSGENE=Phosgen-Artilleriegeschoss-Herstellung chem.SOLID_FUEL=Festbrennstoffherstellung chem.SOLVENT=Organisches Lösungsmittel mischen chem.STEAM=Wasser kochen @@ -1120,7 +1126,6 @@ item.ams_lens.name=Stabilisierer-Linse item.ams_muzzle.name=Strahlenemissions-Mündung item.analyzer.name=Analysierer item.anchor_remote.name=Rückrufgerät -item.antiknock.name=Tetraethyblei-Antiklopfmittel item.apple_euphemium.name=Euphemiumapfel item.apple_lead.name=Bleiapfel item.apple_schrabidium.name=Schrabidiumapfel @@ -1826,6 +1831,8 @@ item.fragment_lanthanium.name=Lanthanfragment item.fragment_meteorite.name=Meteoritenfragment item.fragment_neodymium.name=Neodymfragment item.fragment_niobium.name=Niobium Ffragment +item.fuel_additive.antiknock.name=Tetraethyblei-Antiklopfmittel +item.fuel_additive.deicer.name=Enteisungsmittel item.fuel_tank_large.name=Großer Treibstofftank item.fuel_tank_medium.name=Mittlerer Treibstofftank item.fuel_tank_small.name=Kleiner Treibstofftank diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index a627dc85e..0705b1dbc 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -576,6 +576,7 @@ chem.GASOLINE_LEADED=Leaded Gasoline Mixing chem.HEAVY_ELECTROLYSIS=Heavy Water Cryo-Electrolysis chem.HELIUM3=Helium-3 Extraction from Moon Turf chem.KEVLAR=Kevlar Compound Production +chem.LAMINATE=Laminate Production chem.LPG=Petroleum Gas Liquefaction chem.LUBRICANT=Lubricant Mixing chem.METH=Methamphetamine Synthesis @@ -584,12 +585,14 @@ chem.NITAN=NITAN Super Fuel Mixing chem.NITRIC_ACID=Nitric Acid Production chem.OIL_SAND=Tar Sand Extraction chem.OSMIRIDIUM_DEATH=Osmiridic Solution Production +chem.PC=Polycarbonate Synthesis chem.PC_ELECTROLYSIS=Potassium Chloride Electrolysis chem.PEROXIDE=Hydrogen Peroxide Production chem.PET=PET Synthesis chem.PETROIL_LEADED=Leaded Petroil Mixing chem.POLYMER=Polymer Synthesis chem.PUF6=Plutonium Hexafluoride Production +chem.PVC=Polyvinylchloride Synthesis chem.RUBBER=Rubber Production chem.SAS3=Schrabidium Trisulfide Production chem.SATURN=Saturnite Production @@ -610,6 +613,9 @@ chem.SF_PETROIL=Petroil Solidification chem.SF_PETROLEUM=Petroleum Gas Solidification chem.SF_RECLAIMED=Reclaimed Oil Solidification chem.SF_SMEAR=Industrial Oil Solidification +chem.SHELL_CHLORINE=Chlorine Gas Artillery Shell Production +chem.SHELL_MUSTARD=Mustard Gas Artillery Shell Production +chem.SHELL_PHOSGENE=Phosgene Artillery Shell Production chem.SOLID_FUEL=Solid Rocket Fuel Production chem.SOLVENT=Organic Solvent Mixing chem.STEAM=Water Boiling @@ -1780,7 +1786,6 @@ item.ams_muzzle.desc=...it emits an energy-beam thingy. item.analysis_tool.name=Analysis Tool item.analyzer.name=Analyzer item.anchor_remote.name=Recall Device -item.antiknock.name=Tetraethyllead Antiknock Agent item.apple_euphemium.name=Euphemium Apple item.apple_lead.name=Lead Apple item.apple_schrabidium.name=Schrabidium Apple @@ -2548,6 +2553,8 @@ item.fragment_lanthanium.name=Lanthanium Fragment item.fragment_meteorite.name=Meteorite Fragment item.fragment_neodymium.name=Neodymium Fragment item.fragment_niobium.name=Niobium Fragment +item.fuel_additive.antiknock.name=Tetraethyllead Antiknock Agent +item.fuel_additive.deicer.name=Deicer item.fuel_tank_large.name=Large Fuel Tank item.fuel_tank_medium.name=Medium Fuel Tank item.fuel_tank_small.name=Small Fuel Tank @@ -3667,7 +3674,6 @@ item.power_net_tool.name=Cable Network Analysis Tool item.pipette.name=Pipette item.pipette_boron.name=Boron Pipette item.pipette_laboratory.name=Laboratory Grade Pipette -item.siphon.name=Siphon item.primer_357.name=.357 Magnum Primer (x24) item.primer_44.name=.44 Magnum Primer (x24) item.primer_50.name=Large Caliber Primer (x12) @@ -4075,6 +4081,7 @@ item.singularity_spark.name=Spark Singularity item.singularity_super_heated.name=Superheated Resonating Singularity item.siox.name=SiOX Cancer Medication item.siox.desc=Reverses mesothelioma with the power of Asbestos! +item.siphon.name=Siphon item.siren_track.name=Siren Track item.sliding_blast_door_skin.0.name=Sliding Blast Door Skin: Default item.sliding_blast_door_skin.1.name=Sliding Blast Door Skin: Variant 1 diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_refinery.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_refinery.png index 752d061e5224989187977056f726b718f14c68f9..75f2072e8ad3350f6a6cec7c8e0f1461a4d1b135 100644 GIT binary patch literal 3023 zcmb7GX;@Qd7XGr-1O)|y1IQ8t6sbU?AV`o!L>9wVRt1p&J|IF6fv|;;ASzJVYei)- zEmk%mC=kSjM6seJAWK*bASfC&*RZd$P0&tjXQuN^@1O5G_n!Bh^PcxS=eem)4%Sj@ zH?IW%NZHz0Is*U`Uts{fMtmFzF9{GI$OsEtSG4$vM;}W8VBI-e%YCjf`Jw@{45g+` zP2+~UL{Cf~DRD|cIKw7&eH&3jVk6q(^tEFt?J}}Kj8qL9nBIXa4X4%pb1%3c9A>4X z0yc|?ZbdHyc8+8Z@+@V#0ZShWi=Mw;7X^9HSjACW*}=#vUveDpMrXrGkLYp;>so2e zUK-GsTEZIKa4)yAK;N5hyd~$~Z*1{4d1qZ+otp3CkAiRc*thN-5_AvdQJv`B=4TpT zs;a3q4S)N3kY>MQCYN>#iGH_;d&^FHrFGn-_p!dIL=J8G?n!TZPx7*m0PzFvfl1@yoGuDS|DfA+)RB*b6lb`m#wZeZO+ z+H~~A^@$ATCCbWj?o@scy>@o{A;ch0yH>w8^D(}jUoS_XYj_M-mz7=9>=i{h_teIZ zK}=h+rRDOXsIDEmaFxk6rI|2&0;yfYwa>~aEdvn$eu8qB=|3RugwQzv*aigO-%`-i zF)2kYBw&3`6g<6&%6eoE6F z5)O@eeJ4dHPypc>cyXsPyT|23!2>Zb=MX4JaU4NXuVCSmWW?AS6$)SpE!9EJ?I079 z9-O4kWZ~O;k#^1@pbAB-ZY3_t<7{tM6q6ops7bHk3nd?KR87t6_TRv9FF39Z%egH9 zeurIxX=t&gdl6NK193AThua+|XZ#xMw~`~NCoo9Yy4(YC;(EWM?sSs-l-2kya%g7o zP^iF>fO5)ZWqWuP9RKh|47lnanO(Y{lKq@VpIRWzHyTznsc?3Y!}GUyQEo}+(ZwyG zvlJ4~%EUj#w~IB(@$PR zfsvIRwXLr|cl&d^McGv*byI1>8%e>T;zEW^=^DSRF_)W#^_F4M6;>$~ldKq|*In+K znnB9<1)pp9;wh< z@RvMp5$7(U%b<%T=ypdt+n9YlXoSY(XLWk9`YK%AwyMp-I8VR1 z)ci6`S|)pVeEY+baJz}t4moK^Ag~Gz4ZYZqwlCZ}qLf^<7Xxcs4j5M4@Wh%5@}aRa zAS+o2-a+rg7l-Lgm|f)FW^ymbrQ5tT<-qI?PIK!^hm1?bc(3B>2s0lu^lDhz<&!-o{QuZpr1cxx^ z9N0&hE!;I03)fn6^m&K<1j#|^Yw2TWPp(`J)<72wdZN!592DKVBIGo*=g|pvOE)6t z3`lvgkuf!w>oHEy6}Dq#7SA2^#)*nGZ&R7qX@!FdJ1*cu)bn~U^BovH06K9pz_(|x zqt%S~UV$@Uh`R3pKJLMcmTm!G3&uuY#S} zb&7EaM%mZTMN!p9p5#CKp}9U-Wzy(SNz$$g%WFYbtSpbUBb4^Yl-$F+P<7TPC#9q) zWm;!1jQXZscwT|b7ehihD+=QnZN}gL=(4e?RDnVyIs~y0S%;ploI%n%j4x zX+wC_qV8!t2ZBA-??-M^aKlEl_U85Ow=6R3;$g@J3-$k@OSI{X8z~E^a(sRqnxrZ%=?p~!S zZGvxa?%K+E8I~oAD);-9^mAifEMNAFNzn`tB<##ed9j;zmDj>nB~O0yq;|e(gl4pj zVl?Ku0NiV=moFSPr@VH&{8f#0LI4aMvwO&r4=r7|Y)-jlqmlTSp?@mik= ze2jA7jJ}t#(;oA;$BVVwVPPX#DO$$yBb^}v>4+jnZiuSD>guKE=G=7C{Q-!y#W$(z z=`8_zvB|3wkl*S(X{ZjxPmNEaPD0DZtkzDZY3vwlgzXRAi&=g@w1T4W^3ljguPhny zc8f>FbE^tK6B=-K!a-OX07~lr(}bu-WA#3g_zRB*y&RRj$d4DxVjtDVshA6YRJ=Q& z+dL}C$QZ=mv!mj*VSgj+7fEl-?xmNN9joixY9>K0K@_;Fb?Doxt4(x2SeK8sRF)#& z(S$3nN6E+-sbs3n4mQfCViHS=8rEyV?UPOZUm9QJTje}#sVXdCCcO_+lP2?eURpA~ zxK*M4W552}y8R1twc2SiuHXeG5v1>t*^a&V$A<2{EAgb1!)tdcrhJW?co}Eh3Rl`no-s z08p;!Sg0Mhg(DpT1nneFKz2DeS2T$b|78EYhn~8KE%G^rp(q_GN^}H7DKVh51W;iFLPQ;!6s3cJ z3_J{h2rKu66JE&Uf$m?*8`P_pEh)Gc(ag@QLvO z01$=-XDMP9}OaWwgI*}%6{fxQVJ5YXqiJSzPeZ|0+sPisY55#j+ zv`Y(aV7*uD>^B%nj38TSJmf#kdO+hfWZVNN9dO=_%-mtMLwUx3oM%JKTO0O9sfs zpM2}qRdRFxeA&a|#gp#JL(zi=jUmK^$-}513=vLo`=X^WW^Va3+p;@1w@M`Nfq|OV z9@aax)==j`1bdV$wYuD-y{7d6Yk*bM(jC=gEqqWk#ssYlN1wq(DvX#%?^Ft!EPrvM zdO)w5HN&8F1-1(OWN~adgs6xK5?H7c=bIm6X+lWdpqq;D^ z+fjSl<kL`08C^3X3c$#5V#?ed+%9i5HlN@r^M4U@Gv`*;K_<1 z6}k_iq#T6d;|EM7f<<~u`9_61V$+|TU$>R+G`my;*-aN}pQBk*#W!GL=j}%`bNpbg z*jui+XI_%%-Aa%lx^70lkcl1bcs}v89ys$*(@*OLklPosRSi{}K}k5I?pKYVhnh}( zT4r?SQRseluDB|NZ9EspThI=H*p4sWs!jd}jS{iv^M=QVgeja^r~J;ylo9^aQ(HJ~ zVBBZhu?{d5O-)>ZZ4YjGfIuJVr;pu{0U^Tv^UjNBeK_nkK!iB>600-?>bW!}T0gj}b7ggh-x2>u zre*^N0t?Gm{EYHXmvcn=!VW(l`8Bm>RKRsr7Z*q_>{NTaRi1`JTrRiIyerfsutju( zEdg17pt@XNBJi&Sjw=R&aH;^-n764+r-Y`f4D?4rhXWzAFNdS#&?ILV+Ai8-%R&vp z$nb6Tne8zv@hx+GMQYvhsxMjNi< zr^}*%4Xm-4pMDGl(!ZbGwAUtrV^IYms-Q!1!v21$SpuXozcSI*++?l!8oY zUW0<>qlrp{F1Kr?eK%1uQC)7YId5`v+dZ_c+$0-G^*j_4<*^D>R#q04EOFh^@?5-W ztlf?|At^BNdOPM9A8BB4L=99#F%QBCD(?y)_6`p56F!xk{$w9_0d-ST(_&j8aA=P> zm{5NDl?Zp4M@ziO0wD7o01pKL!P&V7cz4zqWKIlL`>#YhoJy8^&HwodeD|Yjy#YsA zOfRjhFW+2dBPk6I_PL`nT@#{fCjH-9aQoZ|kq^Fw+23biln+z2fyFicTKt7!@DD_d&Z(q)t9}3e{rYfXV&Wj4b(;FZVr6s^B@v4$b1XFOP<+9Ptc6}V za5iO|imIxY8$0GU?P=`AtbEr5*)({w$GjLNZm{0kSC|xPgV420dj7$Dl_?W-L5487 zTcNwktFfiU*e7^*Ue*&UYJ&6a;F2nR5ICnR4pqQQ^XKz2$QdRG{+3$m{1f_E$qmL- z#2P1RUN0I%mJh(vTG|K1?_tqlnKxpY2ASTJ~-a2<|$Tm!nqLU zxqtG!IO2`H&9HZWde{Cro6lF|!Nr;#0mLa~{8y#urTyO7p+83r3dy5<;KvGEEjate zc}1hMS-^Sx*T-t_4)l{NIqVe9a?T=inIU<{Q3L-6=R+B@x@IBnJ9%Mgd@d`~RSdh% z?p?pZT%BIaraK7tMBMP&h`=Nh=f^gx@wt(Oylf=}0j?Yc64uWu(+EWsTW6d*&po1uyi_}+?f2pD=BQmd z`tZLl&QUxr>?I*dP~=-|_^~a45{FbNIU;|AhpX2;cx_@&;dcaiO=0$sA0qX5cY%sr zuO4S;eIWH)@Xh(3lC^mg4lwlaTnvlzseMCInoAE~6PmB>1r49e6QgdfD(DRLO*!iG z273gtgDiMbPjEjJhjK+W$~YpV(G&$i;###2HGD&3>h^J7+C<=AuE)w$%Arqv(8M>& zrVh-7MM6JlYNr94-bmoxkvtU^3I8y+MtX$yuaR1*Lw=4B1gWABdBMstsft+->or~L z^@&{V;~WOSr;oz?G5P z?H{aYr9u4GXTy03HkG~Ux4$ZJu3b%{Y2p1?HwI`9ERE&mh)Yhaph>&Y)o-zb%&^t) zUO^tudLnwpQv{er0w62{Ks^sYD?tBl>OSo=)aAB!6~2dAmaKNS%l1@kEzXnCz6NxZ z2W$#^R(xll^Wz#iKcW`C$#44yg?~U%RJ#UpbAM(nsId*RbtM~1d*`NI!Tj6bYe?`D5m+#mkfm|e3-(XjeLNl4?KbY26rEWZ*U7__5Rw{{-vSK5{I)@GTMjV}$rSVt&B?BZ~~daJ5gY%W9$OP{^Jl88eMvApc?7-BXa{5S%0P z+{D-V^1HVM6z=Q8>c9Qpyear>%OtYZ;`l3}GV0@e5(4J`RupYDJ}u?duh4KpB%*$D zc{w3;rz}PvL=+bn+dAIv$RP69nZps6z?d*+Tlz()MDXn) diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_vacuum_distill.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_vacuum_distill.png index 89a07809d31caa847bcfa2360f3ff0311548141e..2685f3e4e17d631d1a217a2391d6f5906349f431 100644 GIT binary patch literal 3016 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⩔r|JmmYDQnSi z1~{u`TuYTP8{1K;qkdxRfO)GQDo2!gv=)T~ZNq_=|x(EjI}QBT2VBXjSa zH`!2FmT*Qo)k#?RP{zi_#*e|BKXh6&EH9BiBHR-0Ui8&DY!?tp8|x73{ytGN1oyvcWI1(hHJ*n?5rNu$z#i1&-FnQ1kyVs^vxvn zg}Cou{>a=kx})y74@p*vp$nE zfwG6x~7Dp4v|?p#u& zrrhK&BX4@3nX$zMCx2$2bW-ccTpR_YQSF_X*w<%{7%*q%4rr@MdVm2YStw?}`II!O zd-+wE{{+cp0o*2g$&WuTP}<@dt>S&3jLPkKPB4LBtM3u!^7H|5HZ3@FVz&l$?N;c0H~1NEPCA=9;ytD@?BD>roML`#^_n49npAjSZNzbm3i{JoT!7yI=-b^bJvS$+q;$GzV*sJu?MF| zf4O34N-vpn>R6- z$2{J7j2chganO=bbr22?J_OA8faMsx*G2AD!9>D?{DV;4v1v#9m2o&tJ(~{v+2V$z zniAN!9fJrePYwXE{g~nN+Cyuky%)lz4&N9Sa2CKsat=mI>bJ$+-K%=d!s`l`YgLKb zjeQ*SnP|V75tpd-UCSsO%5eB~R<%4G`0VzaYRCZ4i%@HBgg4m+^P+C`ROFRzl{gft=8B z)(sjDUPi}@QMkCxGP=f?yLi!<=CiMg5g;1M9X8=VHN=R6s?V$HXtnhWiQg*g;rRTQ zEbnBpahmmYefMT#gx924Tx2BW|HmeGm3BGo+hVwXT?-nL>;JTUQ*Jmf6;t$6g*FMo N@)v7jp}G5S{{}}MFMI$1 diff --git a/src/main/resources/assets/hbm/textures/items/antiknock.png b/src/main/resources/assets/hbm/textures/items/fuel_additive.antiknock.png similarity index 100% rename from src/main/resources/assets/hbm/textures/items/antiknock.png rename to src/main/resources/assets/hbm/textures/items/fuel_additive.antiknock.png diff --git a/src/main/resources/assets/hbm/textures/items/fuel_additive.deicer.png b/src/main/resources/assets/hbm/textures/items/fuel_additive.deicer.png new file mode 100644 index 0000000000000000000000000000000000000000..17b91b06b8867685b28b150ff61594011c5c07db GIT binary patch literal 292 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf8wh=`sT^C%=MiHJh}02D_$foF6W#QloEOE?35shWSPCj2FGqJ(qQO#{Ntsb zZ}9PyPgx2|DxQyewUy4DF+4Hd`-^jq;7besruS?vf|d@qo3;wDlz%(0zg45@=bx$v z=l1e8Jgz$Wt|rNRc2UgwI&+2$zUo