From ea16e518dc6fabe2ea4a39b37732993e73e5f728 Mon Sep 17 00:00:00 2001 From: Boblet Date: Tue, 16 Aug 2022 11:28:34 +0200 Subject: [PATCH] rewrote the entire fluid trait system ow --- .../com/hbm/blocks/machine/MachineDiesel.java | 2 +- .../blocks/machine/MachineSeleniumEngine.java | 2 +- .../hbm/blocks/machine/MachineTurbofan.java | 2 +- .../com/hbm/inventory/fluid/FluidType.java | 75 ++++++-- .../java/com/hbm/inventory/fluid/Fluids.java | 174 +++++++++--------- .../FT_Combustible.java} | 13 +- .../inventory/fluid/trait/FT_Corrosive.java | 32 ++++ .../inventory/fluid/trait/FT_Flammable.java | 15 ++ .../FT_VentRadiation.java} | 13 +- .../hbm/inventory/fluid/trait/FluidTrait.java | 17 ++ .../fluid/trait/FluidTraitSimple.java | 44 +++++ .../hbm/inventory/fluid/types/Antimatter.java | 12 -- .../inventory/fluid/types/CombustibleGas.java | 11 -- .../inventory/fluid/types/FlammableGas.java | 11 -- .../fluid/types/FlammableOilGas.java | 11 -- .../fluid/types/FluidTypeFlammable.java | 39 ---- .../com/hbm/inventory/fluid/types/Fuel.java | 11 -- .../com/hbm/inventory/fluid/types/Gas.java | 12 -- .../com/hbm/inventory/fluid/types/Oil.java | 11 -- .../inventory/fluid/types/Petrochemical.java | 12 -- .../inventory/fluid/types/RadioactiveGas.java | 11 -- .../fluid/types/RadioactiveLiquid.java | 11 -- .../hbm/inventory/gui/GUIMachineGasFlare.java | 4 +- .../com/hbm/inventory/gui/GUIOilburner.java | 8 +- .../machine/TileEntityHeaterOilburner.java | 6 +- .../machine/TileEntityMachineDiesel.java | 8 +- .../machine/TileEntityMachineIGenerator.java | 4 +- .../TileEntityMachineSeleniumEngine.java | 8 +- .../machine/TileEntityMachineTurbofan.java | 8 +- .../oil/TileEntityMachineGasFlare.java | 19 +- .../machine/storage/TileEntityBarrel.java | 4 +- .../storage/TileEntityMachineFluidTank.java | 4 +- 32 files changed, 306 insertions(+), 308 deletions(-) rename src/main/java/com/hbm/inventory/fluid/{types/FluidTypeCombustible.java => trait/FT_Combustible.java} (73%) create mode 100644 src/main/java/com/hbm/inventory/fluid/trait/FT_Corrosive.java create mode 100644 src/main/java/com/hbm/inventory/fluid/trait/FT_Flammable.java rename src/main/java/com/hbm/inventory/fluid/{types/RadioactiveFluid.java => trait/FT_VentRadiation.java} (50%) create mode 100644 src/main/java/com/hbm/inventory/fluid/trait/FluidTrait.java create mode 100644 src/main/java/com/hbm/inventory/fluid/trait/FluidTraitSimple.java delete mode 100644 src/main/java/com/hbm/inventory/fluid/types/Antimatter.java delete mode 100644 src/main/java/com/hbm/inventory/fluid/types/CombustibleGas.java delete mode 100644 src/main/java/com/hbm/inventory/fluid/types/FlammableGas.java delete mode 100644 src/main/java/com/hbm/inventory/fluid/types/FlammableOilGas.java delete mode 100644 src/main/java/com/hbm/inventory/fluid/types/FluidTypeFlammable.java delete mode 100644 src/main/java/com/hbm/inventory/fluid/types/Fuel.java delete mode 100644 src/main/java/com/hbm/inventory/fluid/types/Gas.java delete mode 100644 src/main/java/com/hbm/inventory/fluid/types/Oil.java delete mode 100644 src/main/java/com/hbm/inventory/fluid/types/Petrochemical.java delete mode 100644 src/main/java/com/hbm/inventory/fluid/types/RadioactiveGas.java delete mode 100644 src/main/java/com/hbm/inventory/fluid/types/RadioactiveLiquid.java diff --git a/src/main/java/com/hbm/blocks/machine/MachineDiesel.java b/src/main/java/com/hbm/blocks/machine/MachineDiesel.java index ecc409fa8..a08b4b6d1 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineDiesel.java +++ b/src/main/java/com/hbm/blocks/machine/MachineDiesel.java @@ -5,7 +5,7 @@ import java.util.Random; import com.hbm.blocks.ITooltipProvider; import com.hbm.blocks.ModBlocks; -import com.hbm.inventory.fluid.types.FluidTypeCombustible.FuelGrade; +import com.hbm.inventory.fluid.trait.FT_Combustible.FuelGrade; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.tileentity.machine.TileEntityMachineDiesel; diff --git a/src/main/java/com/hbm/blocks/machine/MachineSeleniumEngine.java b/src/main/java/com/hbm/blocks/machine/MachineSeleniumEngine.java index 54fab6acb..d7191f58b 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineSeleniumEngine.java +++ b/src/main/java/com/hbm/blocks/machine/MachineSeleniumEngine.java @@ -5,7 +5,7 @@ import java.util.Random; import com.hbm.blocks.ITooltipProvider; import com.hbm.blocks.ModBlocks; -import com.hbm.inventory.fluid.types.FluidTypeCombustible.FuelGrade; +import com.hbm.inventory.fluid.trait.FT_Combustible.FuelGrade; import com.hbm.main.MainRegistry; import com.hbm.tileentity.machine.TileEntityMachineSeleniumEngine; diff --git a/src/main/java/com/hbm/blocks/machine/MachineTurbofan.java b/src/main/java/com/hbm/blocks/machine/MachineTurbofan.java index c7da8fe6c..f84d206df 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineTurbofan.java +++ b/src/main/java/com/hbm/blocks/machine/MachineTurbofan.java @@ -7,7 +7,7 @@ import com.hbm.blocks.ITooltipProvider; import com.hbm.blocks.ModBlocks; import com.hbm.handler.MultiblockHandler; import com.hbm.interfaces.IMultiblock; -import com.hbm.inventory.fluid.types.FluidTypeCombustible.FuelGrade; +import com.hbm.inventory.fluid.trait.FT_Combustible.FuelGrade; import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; import com.hbm.tileentity.machine.TileEntityDummy; diff --git a/src/main/java/com/hbm/inventory/fluid/FluidType.java b/src/main/java/com/hbm/inventory/fluid/FluidType.java index f56402f22..d206d5271 100644 --- a/src/main/java/com/hbm/inventory/fluid/FluidType.java +++ b/src/main/java/com/hbm/inventory/fluid/FluidType.java @@ -2,14 +2,23 @@ package com.hbm.inventory.fluid; import java.util.ArrayList; import java.util.Collections; +import java.util.HashMap; import java.util.HashSet; import java.util.List; +import java.util.Map.Entry; + +import org.lwjgl.input.Keyboard; + import java.util.Set; import com.hbm.inventory.FluidTank; +import com.hbm.inventory.fluid.trait.*; +import com.hbm.inventory.fluid.trait.FluidTraitSimple.*; import com.hbm.lib.RefStrings; import com.hbm.render.util.EnumSymbol; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.ResourceLocation; @@ -37,6 +46,7 @@ public class FluidType { public static final double DEFAULT_HEATCAP = 0.01D; public static final double DEFAULT_COMPRESSION = 1D; + // v v v this entire system is a pain in the ass to work with. i'd much rather define state transitions and heat values manually. /** How hot this fluid is. Simple enough. */ public int temperature = ROOM_TEMPERATURE; /** How much heat energy each mB requires to be heated by 1°C. Total heat energy = heatCap * delta-T. */ @@ -45,7 +55,8 @@ public class FluidType { public double compression = DEFAULT_COMPRESSION; public Set containers = new HashSet(); - public List traits = new ArrayList(); + private HashMap, FluidTrait> traits = new HashMap(); + //public List enumTraits = new ArrayList(); private ResourceLocation texture; @@ -91,9 +102,22 @@ public class FluidType { return this; } - public FluidType addTraits(FluidTrait... traits) { - Collections.addAll(this.traits, traits); + /*public FluidType addTraits(EnumFluidTrait... traits) { + Collections.addAll(this.enumTraits, traits); return this; + }*/ + + public FluidType addTraits(FluidTrait... traits) { + for(FluidTrait trait : traits) this.traits.put(trait.getClass(), trait); + return this; + } + + public boolean hasTrait(Class trait) { + return this.traits.containsKey(trait); + } + + public T getTrait(Class trait) { //generics, yeah! + return (T) this.traits.get(trait); } public int getID() { @@ -125,19 +149,19 @@ public class FluidType { return this.temperature >= 100; } public boolean isCorrosive() { - return this.traits.contains(FluidTrait.CORROSIVE) || this.traits.contains(FluidTrait.CORROSIVE_2); + return this.traits.containsKey(FT_Corrosive.class); } public boolean isAntimatter() { - return this.traits.contains(FluidTrait.AMAT); + return this.traits.containsKey(FT_Amat.class); } public boolean hasNoContainer() { - return this.traits.contains(FluidTrait.NO_CONTAINER); + return this.traits.containsKey(FT_NoContainer.class); } public boolean hasNoID() { - return this.traits.contains(FluidTrait.NO_ID); + return this.traits.containsKey(FT_NoID.class); } public boolean needsLeadContainer() { - return this.traits.contains(FluidTrait.LEAD_CONTAINER); + return this.traits.containsKey(FT_LeadContainer.class); } /** @@ -165,19 +189,39 @@ public class FluidType { public void onFluidRelease(World world, int x, int y, int z, FluidTank tank, int overflowAmount) { } //public void onFluidTransmit(FluidNetwork net) { } + @SideOnly(Side.CLIENT) public void addInfo(List info) { if(temperature != ROOM_TEMPERATURE) { if(temperature < 0) info.add(EnumChatFormatting.BLUE + "" + temperature + "°C"); if(temperature > 0) info.add(EnumChatFormatting.RED + "" + temperature + "°C"); } - if(isAntimatter()) info.add(EnumChatFormatting.DARK_RED + "Antimatter"); + /*if(isAntimatter()) info.add(EnumChatFormatting.DARK_RED + "Antimatter"); - if(traits.contains(FluidTrait.CORROSIVE_2)) info.add(EnumChatFormatting.GOLD + "Strongly Corrosive"); - else if(traits.contains(FluidTrait.CORROSIVE)) info.add(EnumChatFormatting.YELLOW + "Corrosive"); + if(enumTraits.contains(EnumFluidTrait.CORROSIVE_2)) info.add(EnumChatFormatting.GOLD + "Strongly Corrosive"); + else if(enumTraits.contains(EnumFluidTrait.CORROSIVE)) info.add(EnumChatFormatting.YELLOW + "Corrosive"); - if(traits.contains(FluidTrait.NO_CONTAINER)) info.add(EnumChatFormatting.RED + "Cannot be stored in any universal tank"); - if(traits.contains(FluidTrait.LEAD_CONTAINER)) info.add(EnumChatFormatting.YELLOW + "Requires hazardous material tank to hold"); + if(enumTraits.contains(EnumFluidTrait.NO_CONTAINER)) info.add(EnumChatFormatting.RED + "Cannot be stored in any universal tank"); + if(enumTraits.contains(EnumFluidTrait.LEAD_CONTAINER)) info.add(EnumChatFormatting.YELLOW + "Requires hazardous material tank to hold");*/ + + List hidden = new ArrayList(); + + for(Entry, FluidTrait> entry : this.traits.entrySet()) { + entry.getValue().addInfo(info); + entry.getValue().addInfoHidden(hidden); + } + + if(!hidden.isEmpty()) { + + if(Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) { + info.addAll(hidden); + } else { + + info.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC +"Hold <" + + EnumChatFormatting.YELLOW + "" + EnumChatFormatting.ITALIC + "LSHIFT" + + EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC + "> to display more info"); + } + } /*info.add(""); info.add(EnumChatFormatting.RED + "[DEBUG]"); @@ -190,7 +234,8 @@ public class FluidType { /** * Metadata for describing how the fluid acts, like being corrosive, not having fluid IDs or being only stored in certain containers. */ - public static enum FluidTrait { + /*@Deprecated + public static enum EnumFluidTrait { LIQUID, GASEOUS, PETROCHEMICAL, @@ -200,7 +245,7 @@ public class FluidType { NO_CONTAINER, LEAD_CONTAINER, NO_ID; - } + }*/ public static enum ExtContainer { CANISTER diff --git a/src/main/java/com/hbm/inventory/fluid/Fluids.java b/src/main/java/com/hbm/inventory/fluid/Fluids.java index 7592f4a0e..810df8eba 100644 --- a/src/main/java/com/hbm/inventory/fluid/Fluids.java +++ b/src/main/java/com/hbm/inventory/fluid/Fluids.java @@ -5,9 +5,9 @@ import java.util.HashMap; import java.util.List; import com.hbm.inventory.fluid.FluidType.ExtContainer; -import com.hbm.inventory.fluid.FluidType.FluidTrait; -import com.hbm.inventory.fluid.types.*; -import com.hbm.inventory.fluid.types.FluidTypeCombustible.FuelGrade; +import com.hbm.inventory.fluid.trait.*; +import com.hbm.inventory.fluid.trait.FluidTraitSimple.*; +import com.hbm.inventory.fluid.trait.FT_Combustible.FuelGrade; import com.hbm.render.util.EnumSymbol; public class Fluids { @@ -95,6 +95,16 @@ public class Fluids { private static final HashMap idMapping = new HashMap(); private static final HashMap nameMapping = new HashMap(); protected static final List metaOrder = new ArrayList(); + + public static final FT_Liquid LIQUID = new FT_Liquid(); + public static final FT_Gaseous_ART EVAP = new FT_Gaseous_ART(); + public static final FT_Gaseous GASEOUS = new FT_Gaseous(); + public static final FT_Plasma PLASMA = new FT_Plasma(); + public static final FT_Amat ANTI = new FT_Amat(); + public static final FT_LeadContainer LEADCON = new FT_LeadContainer(); + public static final FT_NoContainer NOCON = new FT_NoContainer(); + public static final FT_NoID NOID = new FT_NoID(); + public static final FT_Delicious DELICIOUS = new FT_Delicious(); public static void init() { @@ -111,85 +121,85 @@ public class Fluids { * You may screw with metaOrder as much as you like, as long as you keep all fluids in the list exactly once. */ - NONE = new FluidType( "NONE", 0x888888, 0, 0, 0, EnumSymbol.NONE); - WATER = new FluidType( "WATER", 0x3333FF, 0, 0, 0, EnumSymbol.NONE); - STEAM = new Gas( "STEAM", 0xe5e5e5, 3, 0, 0, EnumSymbol.NONE).setTemp(100).setCompression(0.01D); - HOTSTEAM = new Gas( "HOTSTEAM", 0xE7D6D6, 4, 0, 0, EnumSymbol.NONE).setTemp(300).setCompression(0.1D); - SUPERHOTSTEAM = new Gas( "SUPERHOTSTEAM", 0xE7B7B7, 4, 0, 0, EnumSymbol.NONE).setTemp(450).setCompression(1D); - ULTRAHOTSTEAM = new Gas( "ULTRAHOTSTEAM", 0xE39393, 4, 0, 0, EnumSymbol.NONE).setTemp(600).setCompression(10D); - COOLANT = new FluidType( "COOLANT", 0xd8fcff, 1, 0, 0, EnumSymbol.NONE).setHeatCap(0.25D); - LAVA = new FluidType( "LAVA", 0xFF3300, 4, 0, 0, EnumSymbol.NOWATER).setTemp(1200); - DEUTERIUM = new CombustibleGas( "DEUTERIUM", 0x0000FF, 3, 4, 0, EnumSymbol.NONE).setCombustionEnergy(FuelGrade.HIGH, 10_000).setHeatEnergy(5_000); - TRITIUM = new CombustibleGas( "TRITIUM", 0x000099, 3, 4, 0, EnumSymbol.RADIATION).setCombustionEnergy(FuelGrade.HIGH, 10_000).setHeatEnergy(5_000); - OIL = new Oil( "OIL", 0x020202, 2, 1, 0, EnumSymbol.NONE).addContainers(0x424242, ExtContainer.CANISTER); - HOTOIL = new Oil( "HOTOIL", 0x300900, 2, 3, 0, EnumSymbol.NONE).setTemp(350); - HEAVYOIL = new Oil( "HEAVYOIL", 0x141312, 2, 1, 0, EnumSymbol.NONE).addContainers(0x513F39, ExtContainer.CANISTER); - BITUMEN = new Petrochemical( "BITUMEN", 0x1f2426, 2, 0, 0, EnumSymbol.NONE).addContainers(0x5A5877, ExtContainer.CANISTER); - SMEAR = new Oil( "SMEAR", 0x190f01, 2, 1, 0, EnumSymbol.NONE).setHeatEnergy(50_000).addContainers(0x624F3B, ExtContainer.CANISTER); - HEATINGOIL = new Fuel( "HEATINGOIL", 0x211806, 2, 2, 0, EnumSymbol.NONE).setCombustionEnergy(FuelGrade.LOW, 100_000).setHeatEnergy(150_000).addContainers(0x694235, ExtContainer.CANISTER); - RECLAIMED = new Fuel( "RECLAIMED", 0x332b22, 2, 2, 0, EnumSymbol.NONE).setCombustionEnergy(FuelGrade.LOW, 200_000).setHeatEnergy(100_000).addContainers(0xF65723, ExtContainer.CANISTER); - PETROIL = new Fuel( "PETROIL", 0x44413d, 1, 3, 0, EnumSymbol.NONE).setCombustionEnergy(FuelGrade.MEDIUM, 300_000).setHeatEnergy(125_000).addContainers(0x2369F6, ExtContainer.CANISTER); - LUBRICANT = new Petrochemical( "LUBRICANT", 0x606060, 2, 1, 0, EnumSymbol.NONE).addContainers(0xF1CC05, ExtContainer.CANISTER); - NAPHTHA = new Oil( "NAPHTHA", 0x595744, 2, 1, 0, EnumSymbol.NONE).addContainers(0x5F6D44, ExtContainer.CANISTER); - DIESEL = new Fuel( "DIESEL", 0xf2eed5, 1, 2, 0, EnumSymbol.NONE).setCombustionEnergy(FuelGrade.HIGH, 500_000).setHeatEnergy(200_000).addContainers(0xFF2C2C, ExtContainer.CANISTER); - LIGHTOIL = new Oil( "LIGHTOIL", 0x8c7451, 1, 2, 0, EnumSymbol.NONE).addContainers(0xB46B52, ExtContainer.CANISTER); - KEROSENE = new Fuel( "KEROSENE", 0xffa5d2, 1, 2, 0, EnumSymbol.NONE).setCombustionEnergy(FuelGrade.AERO, 1_250_000).setHeatEnergy(300_000).addContainers(0xFF377D, ExtContainer.CANISTER); - GAS = new FlammableOilGas( "GAS", 0xfffeed, 1, 4, 1, EnumSymbol.NONE).setHeatEnergy(10_000); - PETROLEUM = new FlammableOilGas( "PETROLEUM", 0x7cb7c9, 1, 4, 1, EnumSymbol.NONE).setHeatEnergy(25_000); - LPG = new Fuel( "LPG", 0x4747EA, 1, 3, 1, EnumSymbol.NONE).setCombustionEnergy(FuelGrade.HIGH, 450_000).setHeatEnergy(200_000); - BIOGAS = new FlammableOilGas( "BIOGAS", 0xbfd37c, 1, 4, 1, EnumSymbol.NONE).setHeatEnergy(25_000); - BIOFUEL = new Fuel( "BIOFUEL", 0xeef274, 1, 2, 0, EnumSymbol.NONE).setCombustionEnergy(FuelGrade.HIGH, 400_000).setHeatEnergy(150_000).addContainers(0x9EB623, ExtContainer.CANISTER); - NITAN = new Fuel( "NITAN", 0x8018ad, 2, 4, 1, EnumSymbol.NONE).setCombustionEnergy(FuelGrade.HIGH, 5_000_000).setHeatEnergy(2_000_000).addContainers(0x6B238C, ExtContainer.CANISTER); - UF6 = new RadioactiveGas( "UF6", 0xD1CEBE, 4, 0, 2, EnumSymbol.RADIATION).addTraits(FluidTrait.CORROSIVE); - PUF6 = new RadioactiveGas( "PUF6", 0x4C4C4C, 4, 0, 4, EnumSymbol.RADIATION).addTraits(FluidTrait.CORROSIVE); - SAS3 = new FluidType( "SAS3", 0x4ffffc, 5, 0, 4, EnumSymbol.RADIATION).addTraits(FluidTrait.CORROSIVE); - SCHRABIDIC = new FluidType( "SCHRABIDIC", 0x006B6B, 5, 0, 5, EnumSymbol.ACID).addTraits(FluidTrait.CORROSIVE_2); - AMAT = new Antimatter( "AMAT", 0x010101, 5, 0, 5, EnumSymbol.ANTIMATTER); - ASCHRAB = new Antimatter( "ASCHRAB", 0xb50000, 5, 0, 5, EnumSymbol.ANTIMATTER); - ACID = new FluidType( "ACID", 0xfff7aa, 3, 0, 3, EnumSymbol.OXIDIZER).addTraits(FluidTrait.CORROSIVE); - WATZ = new FluidType( "WATZ", 0x86653E, 4, 0, 3, EnumSymbol.ACID).addTraits(FluidTrait.CORROSIVE_2); - CRYOGEL = new FluidType( "CRYOGEL", 0x32ffff, 2, 0, 0, EnumSymbol.CROYGENIC).setTemp(-170); - HYDROGEN = new FluidTypeCombustible( "HYDROGEN", 0x4286f4, 3, 4, 0, EnumSymbol.CROYGENIC).setCombustionEnergy(FuelGrade.HIGH, 10_000).setHeatEnergy(5_000).addTraits(FluidTrait.LIQUID); - OXYGEN = new FluidType( "OXYGEN", 0x98bdf9, 3, 0, 0, EnumSymbol.CROYGENIC); - XENON = new Gas( "XENON", 0xba45e8, 0, 0, 0, EnumSymbol.ASPHYXIANT); - BALEFIRE = new FluidType( "BALEFIRE", 0x28e02e, 4, 4, 3, EnumSymbol.RADIATION).setTemp(1500).addTraits(FluidTrait.CORROSIVE); - MERCURY = new FluidType( "MERCURY", 0x808080, 2, 0, 0, EnumSymbol.NONE); - PAIN = new FluidType( "PAIN", 0x938541, 2, 0, 1, EnumSymbol.ACID).setTemp(300).addTraits(FluidTrait.CORROSIVE); - WASTEFLUID = new RadioactiveLiquid( "WASTEFLUID", 0x544400, 2, 0, 1, EnumSymbol.RADIATION).setRadiation(0.5F).addTraits(FluidTrait.NO_CONTAINER); - WASTEGAS = new RadioactiveGas( "WASTEGAS", 0xB8B8B8, 2, 0, 1, EnumSymbol.RADIATION).setRadiation(0.5F).addTraits(FluidTrait.NO_CONTAINER); - GASOLINE = new Fuel( "GASOLINE", 0x445772, 1, 2, 0, EnumSymbol.NONE).setCombustionEnergy(FuelGrade.HIGH, 1_000_000).setHeatEnergy(400_000).addContainers(0x2F7747, ExtContainer.CANISTER); - COALGAS = new Fuel( "COALGAS", 0x445772, 1, 2, 0, EnumSymbol.NONE).setCombustionEnergy(FuelGrade.MEDIUM, 150_000).setHeatEnergy(75_000).addContainers(0x2E155F, ExtContainer.CANISTER); - SPENTSTEAM = new Gas( "SPENTSTEAM", 0x445772, 2, 0, 0, EnumSymbol.NONE).addTraits(FluidTrait.NO_CONTAINER).setCompression(1D); - FRACKSOL = new Petrochemical( "FRACKSOL", 0x798A6B, 1, 3, 3, EnumSymbol.ACID).addTraits(FluidTrait.CORROSIVE).addContainers(0x4F887F, ExtContainer.CANISTER); - PLASMA_DT = new FluidType( "PLASMA_DT", 0xF7AFDE, 0, 4, 0, EnumSymbol.RADIATION).setTemp(3250).addTraits(FluidTrait.NO_CONTAINER, FluidTrait.NO_ID); - PLASMA_HD = new FluidType( "PLASMA_HD", 0xF0ADF4, 0, 4, 0, EnumSymbol.RADIATION).setTemp(2500).addTraits(FluidTrait.NO_CONTAINER, FluidTrait.NO_ID); - PLASMA_HT = new FluidType( "PLASMA_HT", 0xD1ABF2, 0, 4, 0, EnumSymbol.RADIATION).setTemp(3000).addTraits(FluidTrait.NO_CONTAINER, FluidTrait.NO_ID); - PLASMA_XM = new FluidType( "PLASMA_XM", 0xC6A5FF, 0, 4, 1, EnumSymbol.RADIATION).setTemp(4250).addTraits(FluidTrait.NO_CONTAINER, FluidTrait.NO_ID); - PLASMA_BF = new FluidType( "PLASMA_BF", 0xA7F1A3, 4, 5, 4, EnumSymbol.ANTIMATTER).setTemp(8500).addTraits(FluidTrait.NO_CONTAINER, FluidTrait.NO_ID); - CARBONDIOXIDE = new Gas( "CARBONDIOXIDE", 0x404040, 3, 0, 0, EnumSymbol.ASPHYXIANT); - PLASMA_DH3 = new FluidType( "PLASMA_DH3", 0xFF83AA, 0, 4, 0, EnumSymbol.RADIATION).setTemp(3480).addTraits(FluidTrait.NO_CONTAINER, FluidTrait.NO_ID); - HELIUM3 = new Gas( "HELIUM3", 0xFCF0C4, 3, 4, 0, EnumSymbol.ASPHYXIANT); - DEATH = new FluidType( "DEATH", 0x717A88, 2, 0, 1, EnumSymbol.ACID).setTemp(300).addTraits(FluidTrait.CORROSIVE_2, FluidTrait.LEAD_CONTAINER); - ETHANOL = new Fuel( "ETHANOL", 0xe0ffff, 2, 3, 0, EnumSymbol.NONE).setCombustionEnergy(FuelGrade.HIGH, 200_000).setHeatEnergy(75_000).addContainers(0xEAFFF3, ExtContainer.CANISTER); - HEAVYWATER = new FluidType( "HEAVYWATER", 0x00a0b0, 1, 0, 0, EnumSymbol.NONE); - CRACKOIL = new Oil( "CRACKOIL", 0x020202, 2, 1, 0, EnumSymbol.NONE); - COALOIL = new Oil( "COALOIL", 0x020202, 2, 1, 0, EnumSymbol.NONE); - HOTCRACKOIL = new Oil( "HOTCRACKOIL", 0x300900, 2, 3, 0, EnumSymbol.NONE).setTemp(350); - NAPHTHA_CRACK = new Oil( "NAPHTHA_CRACK", 0x595744, 2, 1, 0, EnumSymbol.NONE); - LIGHTOIL_CRACK = new Oil( "LIGHTOIL_CRACK", 0x8c7451, 1, 2, 0, EnumSymbol.NONE); - DIESEL_CRACK = new Fuel( "DIESEL_CRACK", 0xf2eed5, 1, 2, 0, EnumSymbol.NONE).setCombustionEnergy(FuelGrade.HIGH, 450_000).setHeatEnergy(200_000); - AROMATICS = new Oil( "AROMATICS", 0x68A09A, 1, 4, 1, EnumSymbol.NONE); - UNSATURATEDS = new Oil( "UNSATURATEDS", 0x628FAE, 1, 4, 1, EnumSymbol.NONE); - SALIENT = new FluidType( "SALIENT", 0x457F2D, 0, 0, 0, EnumSymbol.NONE); - XPJUICE = new FluidType( "XPJUICE", 0xBBFF09, 0, 0, 0, EnumSymbol.NONE); - ENDERJUICE = new FluidType( "ENDERJUICE", 0x127766, 0, 0, 0, EnumSymbol.NONE); - PETROIL_LEADED = new Fuel( "PETROIL_LEADED", 0x44413d, 1, 3, 0, EnumSymbol.NONE).setCombustionEnergy(FuelGrade.MEDIUM, 450_000).setHeatEnergy(((FluidTypeFlammable)PETROIL).getHeatEnergy()).addContainers(0x2331F6, ExtContainer.CANISTER); - GASOLINE_LEADED = new Fuel( "GASOLINE_LEADED", 0x445772, 1, 2, 0, EnumSymbol.NONE).setCombustionEnergy(FuelGrade.HIGH, 1_500_000).setHeatEnergy(((FluidTypeFlammable)GASOLINE).getHeatEnergy()).addContainers(0x2F775A, ExtContainer.CANISTER); - COALGAS_LEADED = new Fuel( "COALGAS_LEADED", 0x445772, 1, 2, 0, EnumSymbol.NONE).setCombustionEnergy(FuelGrade.MEDIUM, 250_000).setHeatEnergy(((FluidTypeFlammable)COALGAS).getHeatEnergy()).addContainers(0x1E155F, ExtContainer.CANISTER); - SULFURIC_ACID = new FluidType( "SULFURIC_ACID", 0xB0AA64, 3, 0, 2, EnumSymbol.ACID).addTraits(FluidTrait.CORROSIVE); - COOLANT_HOT = new FluidType( "COOLANT_HOT", 0x99525E, 1, 0, 0, EnumSymbol.NONE).setTemp(600).setHeatCap(COOLANT.heatCap); - MUG = new FluidType( "MUG", 0x4B2D28, 0, 0, 0, EnumSymbol.NONE).setHeatCap(1D); - MUG_HOT = new FluidType(78, "MUG_HOT", 0x6B2A20, 0, 0, 0, EnumSymbol.NONE).setHeatCap(MUG.heatCap).setTemp(500); + NONE = new FluidType("NONE", 0x888888, 0, 0, 0, EnumSymbol.NONE); + WATER = new FluidType("WATER", 0x3333FF, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID); + STEAM = new FluidType("STEAM", 0xe5e5e5, 3, 0, 0, EnumSymbol.NONE).setTemp(100).setCompression(0.01D).addTraits(GASEOUS); + HOTSTEAM = new FluidType("HOTSTEAM", 0xE7D6D6, 4, 0, 0, EnumSymbol.NONE).setTemp(300).setCompression(0.1D).addTraits(GASEOUS); + SUPERHOTSTEAM = new FluidType("SUPERHOTSTEAM", 0xE7B7B7, 4, 0, 0, EnumSymbol.NONE).setTemp(450).setCompression(1D).addTraits(GASEOUS); + ULTRAHOTSTEAM = new FluidType("ULTRAHOTSTEAM", 0xE39393, 4, 0, 0, EnumSymbol.NONE).setTemp(600).setCompression(10D).addTraits(GASEOUS); + COOLANT = new FluidType("COOLANT", 0xd8fcff, 1, 0, 0, EnumSymbol.NONE).setHeatCap(0.25D).addTraits(LIQUID); + LAVA = new FluidType("LAVA", 0xFF3300, 4, 0, 0, EnumSymbol.NOWATER).setTemp(1200).addTraits(LIQUID); + DEUTERIUM = new FluidType("DEUTERIUM", 0x0000FF, 3, 4, 0, EnumSymbol.NONE).addTraits(new FT_Flammable(5_000), new FT_Combustible(FuelGrade.HIGH, 10_000), GASEOUS); + TRITIUM = new FluidType("TRITIUM", 0x000099, 3, 4, 0, EnumSymbol.RADIATION).addTraits(new FT_Flammable(5_000), new FT_Combustible(FuelGrade.HIGH, 10_000), GASEOUS, new FT_VentRadiation(0.001F)); + OIL = new FluidType("OIL", 0x020202, 2, 1, 0, EnumSymbol.NONE).addContainers(0x424242, ExtContainer.CANISTER).addTraits(new FT_Flammable(10_000), LIQUID); + HOTOIL = new FluidType("HOTOIL", 0x300900, 2, 3, 0, EnumSymbol.NONE).setTemp(350).addTraits(new FT_Flammable(10_000), LIQUID); + HEAVYOIL = new FluidType("HEAVYOIL", 0x141312, 2, 1, 0, EnumSymbol.NONE).addContainers(0x513F39, ExtContainer.CANISTER).addTraits(new FT_Flammable(50_000), new FT_Combustible(FuelGrade.LOW, 25_000), LIQUID); + BITUMEN = new FluidType("BITUMEN", 0x1f2426, 2, 0, 0, EnumSymbol.NONE).addContainers(0x5A5877, ExtContainer.CANISTER).addTraits(LIQUID); + SMEAR = new FluidType("SMEAR", 0x190f01, 2, 1, 0, EnumSymbol.NONE).addContainers(0x624F3B, ExtContainer.CANISTER).addTraits(new FT_Flammable(50_000), LIQUID); + HEATINGOIL = new FluidType("HEATINGOIL", 0x211806, 2, 2, 0, EnumSymbol.NONE).addContainers(0x694235, ExtContainer.CANISTER).addTraits(new FT_Flammable(150_000), new FT_Combustible(FuelGrade.LOW, 100_000), LIQUID); + RECLAIMED = new FluidType("RECLAIMED", 0x332b22, 2, 2, 0, EnumSymbol.NONE).addContainers(0xF65723, ExtContainer.CANISTER).addTraits(new FT_Flammable(100_000), new FT_Combustible(FuelGrade.LOW, 200_000), LIQUID); + PETROIL = new FluidType("PETROIL", 0x44413d, 1, 3, 0, EnumSymbol.NONE).addContainers(0x2369F6, ExtContainer.CANISTER).addTraits(new FT_Flammable(125_000), new FT_Combustible(FuelGrade.MEDIUM, 300_000), LIQUID); + LUBRICANT = new FluidType("LUBRICANT", 0x606060, 2, 1, 0, EnumSymbol.NONE).addContainers(0xF1CC05, ExtContainer.CANISTER).addTraits(LIQUID); + NAPHTHA = new FluidType("NAPHTHA", 0x595744, 2, 1, 0, EnumSymbol.NONE).addContainers(0x5F6D44, ExtContainer.CANISTER).addTraits(new FT_Flammable(125_000), new FT_Combustible(FuelGrade.MEDIUM, 200_000), LIQUID); + DIESEL = new FluidType("DIESEL", 0xf2eed5, 1, 2, 0, EnumSymbol.NONE).addContainers(0xFF2C2C, ExtContainer.CANISTER).addTraits(new FT_Flammable(200_000), new FT_Combustible(FuelGrade.HIGH, 500_000), LIQUID); + LIGHTOIL = new FluidType("LIGHTOIL", 0x8c7451, 1, 2, 0, EnumSymbol.NONE).addContainers(0xB46B52, ExtContainer.CANISTER).addTraits(new FT_Flammable(200_000), new FT_Combustible(FuelGrade.MEDIUM, 500_000), LIQUID); + KEROSENE = new FluidType("KEROSENE", 0xffa5d2, 1, 2, 0, EnumSymbol.NONE).addContainers(0xFF377D, ExtContainer.CANISTER).addTraits(new FT_Flammable(300_000), new FT_Combustible(FuelGrade.AERO, 1_250_000)); + GAS = new FluidType("GAS", 0xfffeed, 1, 4, 1, EnumSymbol.NONE).addTraits(new FT_Flammable(10_000), GASEOUS); + PETROLEUM = new FluidType("PETROLEUM", 0x7cb7c9, 1, 4, 1, EnumSymbol.NONE).addTraits(new FT_Flammable(25_000), GASEOUS); + LPG = new FluidType("LPG", 0x4747EA, 1, 3, 1, EnumSymbol.NONE).addTraits(new FT_Flammable(200_000), new FT_Combustible(FuelGrade.HIGH, 400_000), LIQUID); + BIOGAS = new FluidType("BIOGAS", 0xbfd37c, 1, 4, 1, EnumSymbol.NONE).addTraits(new FT_Flammable(25_000), GASEOUS); + BIOFUEL = new FluidType("BIOFUEL", 0xeef274, 1, 2, 0, EnumSymbol.NONE).addContainers(0x9EB623, ExtContainer.CANISTER).addTraits(new FT_Flammable(150_000), new FT_Combustible(FuelGrade.HIGH, 400_000), LIQUID); + NITAN = new FluidType("NITAN", 0x8018ad, 2, 4, 1, EnumSymbol.NONE).addContainers(0x6B238C, ExtContainer.CANISTER).addTraits(new FT_Flammable(2_000_000), new FT_Combustible(FuelGrade.HIGH, 5_000_000), LIQUID); + UF6 = new FluidType("UF6", 0xD1CEBE, 4, 0, 2, EnumSymbol.RADIATION).addTraits(new FT_Corrosive(15), GASEOUS); + PUF6 = new FluidType("PUF6", 0x4C4C4C, 4, 0, 4, EnumSymbol.RADIATION).addTraits(new FT_Corrosive(15), GASEOUS); + SAS3 = new FluidType("SAS3", 0x4ffffc, 5, 0, 4, EnumSymbol.RADIATION).addTraits(new FT_Corrosive(30), LIQUID); + SCHRABIDIC = new FluidType("SCHRABIDIC", 0x006B6B, 5, 0, 5, EnumSymbol.ACID).addTraits(new FT_Corrosive(75), LIQUID); + AMAT = new FluidType("AMAT", 0x010101, 5, 0, 5, EnumSymbol.ANTIMATTER).addTraits(ANTI, GASEOUS); + ASCHRAB = new FluidType("ASCHRAB", 0xb50000, 5, 0, 5, EnumSymbol.ANTIMATTER).addTraits(ANTI, GASEOUS); + ACID = new FluidType("ACID", 0xfff7aa, 3, 0, 3, EnumSymbol.OXIDIZER).addTraits(new FT_Corrosive(40), LIQUID); + WATZ = new FluidType("WATZ", 0x86653E, 4, 0, 3, EnumSymbol.ACID).addTraits(new FT_Corrosive(60), LIQUID); + CRYOGEL = new FluidType("CRYOGEL", 0x32ffff, 2, 0, 0, EnumSymbol.CROYGENIC).setTemp(-170).addTraits(LIQUID); + HYDROGEN = new FluidType("HYDROGEN", 0x4286f4, 3, 4, 0, EnumSymbol.CROYGENIC).addTraits(new FT_Flammable(5_000), new FT_Combustible(FuelGrade.HIGH, 10_000), LIQUID, EVAP); + OXYGEN = new FluidType("OXYGEN", 0x98bdf9, 3, 0, 0, EnumSymbol.CROYGENIC).addTraits(LIQUID, EVAP); + XENON = new FluidType("XENON", 0xba45e8, 0, 0, 0, EnumSymbol.ASPHYXIANT).addTraits(GASEOUS); + BALEFIRE = new FluidType("BALEFIRE", 0x28e02e, 4, 4, 3, EnumSymbol.RADIATION).setTemp(1500).addTraits(new FT_Corrosive(50), new FT_Flammable(1_000_000), new FT_Combustible(FuelGrade.HIGH, 2_500_000), LIQUID); + MERCURY = new FluidType("MERCURY", 0x808080, 2, 0, 0, EnumSymbol.NONE).addTraits(LIQUID); + PAIN = new FluidType("PAIN", 0x938541, 2, 0, 1, EnumSymbol.ACID).setTemp(300).addTraits(new FT_Corrosive(30)); + WASTEFLUID = new FluidType("WASTEFLUID", 0x544400, 2, 0, 1, EnumSymbol.RADIATION).addTraits(new FT_VentRadiation(0.5F), NOCON); + WASTEGAS = new FluidType("WASTEGAS", 0xB8B8B8, 2, 0, 1, EnumSymbol.RADIATION).addTraits(new FT_VentRadiation(0.5F), NOCON); + GASOLINE = new FluidType("GASOLINE", 0x445772, 1, 2, 0, EnumSymbol.NONE).addContainers(0x2F7747, ExtContainer.CANISTER).addTraits(new FT_Flammable(400_000), new FT_Combustible(FuelGrade.HIGH, 1_000_000), LIQUID); + COALGAS = new FluidType("COALGAS", 0x445772, 1, 2, 0, EnumSymbol.NONE).addContainers(0x2E155F, ExtContainer.CANISTER).addTraits(new FT_Flammable(75_000), new FT_Combustible(FuelGrade.MEDIUM, 150_000), LIQUID); + SPENTSTEAM = new FluidType("SPENTSTEAM", 0x445772, 2, 0, 0, EnumSymbol.NONE).setCompression(1D).addTraits(NOCON); + FRACKSOL = new FluidType("FRACKSOL", 0x798A6B, 1, 3, 3, EnumSymbol.ACID).addContainers(0x4F887F, ExtContainer.CANISTER).addTraits(new FT_Corrosive(15)); + PLASMA_DT = new FluidType("PLASMA_DT", 0xF7AFDE, 0, 4, 0, EnumSymbol.RADIATION).setTemp(3250).addTraits(NOCON, NOID, PLASMA); + PLASMA_HD = new FluidType("PLASMA_HD", 0xF0ADF4, 0, 4, 0, EnumSymbol.RADIATION).setTemp(2500).addTraits(NOCON, NOID, PLASMA); + PLASMA_HT = new FluidType("PLASMA_HT", 0xD1ABF2, 0, 4, 0, EnumSymbol.RADIATION).setTemp(3000).addTraits(NOCON, NOID, PLASMA); + PLASMA_XM = new FluidType("PLASMA_XM", 0xC6A5FF, 0, 4, 1, EnumSymbol.RADIATION).setTemp(4250).addTraits(NOCON, NOID, PLASMA); + PLASMA_BF = new FluidType("PLASMA_BF", 0xA7F1A3, 4, 5, 4, EnumSymbol.ANTIMATTER).setTemp(8500).addTraits(NOCON, NOID, PLASMA); + CARBONDIOXIDE = new FluidType("CARBONDIOXIDE", 0x404040, 3, 0, 0, EnumSymbol.ASPHYXIANT).addTraits(GASEOUS); + PLASMA_DH3 = new FluidType("PLASMA_DH3", 0xFF83AA, 0, 4, 0, EnumSymbol.RADIATION).setTemp(3480).addTraits(NOCON, NOID, PLASMA); + HELIUM3 = new FluidType("HELIUM3", 0xFCF0C4, 3, 4, 0, EnumSymbol.ASPHYXIANT).addTraits(GASEOUS); + DEATH = new FluidType("DEATH", 0x717A88, 2, 0, 1, EnumSymbol.ACID).setTemp(300).addTraits(new FT_Corrosive(80), LEADCON, LIQUID); + ETHANOL = new FluidType("ETHANOL", 0xe0ffff, 2, 3, 0, EnumSymbol.NONE).addContainers(0xEAFFF3, ExtContainer.CANISTER).addTraits(new FT_Flammable(75_000), new FT_Combustible(FuelGrade.HIGH, 200_000), LIQUID); + HEAVYWATER = new FluidType("HEAVYWATER", 0x00a0b0, 1, 0, 0, EnumSymbol.NONE).addTraits(LIQUID); + CRACKOIL = new FluidType("CRACKOIL", 0x020202, 2, 1, 0, EnumSymbol.NONE).addContainers(0x424242, ExtContainer.CANISTER).addTraits(new FT_Flammable(10_000), LIQUID); + COALOIL = new FluidType("COALOIL", 0x020202, 2, 1, 0, EnumSymbol.NONE).addContainers(0x424242, ExtContainer.CANISTER).addTraits(new FT_Flammable(10_000), LIQUID); + HOTCRACKOIL = new FluidType("HOTCRACKOIL", 0x300900, 2, 3, 0, EnumSymbol.NONE).setTemp(350).addContainers(0x424242, ExtContainer.CANISTER).addTraits(new FT_Flammable(10_000), LIQUID); + NAPHTHA_CRACK = new FluidType("NAPHTHA_CRACK", 0x595744, 2, 1, 0, EnumSymbol.NONE).addContainers(0x5F6D44, ExtContainer.CANISTER).addTraits(new FT_Flammable(125_000), new FT_Combustible(FuelGrade.MEDIUM, 200_000), LIQUID); + LIGHTOIL_CRACK = new FluidType("LIGHTOIL_CRACK", 0x8c7451, 1, 2, 0, EnumSymbol.NONE).addContainers(0xB46B52, ExtContainer.CANISTER).addTraits(new FT_Flammable(200_000), new FT_Combustible(FuelGrade.MEDIUM, 500_000), LIQUID); + DIESEL_CRACK = new FluidType("DIESEL_CRACK", 0xf2eed5, 1, 2, 0, EnumSymbol.NONE).addContainers(0xFF2C2C, ExtContainer.CANISTER).addTraits(new FT_Flammable(200_000), new FT_Combustible(FuelGrade.HIGH, 450_000), LIQUID); + AROMATICS = new FluidType("AROMATICS", 0x68A09A, 1, 4, 1, EnumSymbol.NONE).addTraits(new FT_Flammable(25_000), LIQUID); + UNSATURATEDS = new FluidType("UNSATURATEDS", 0x628FAE, 1, 4, 1, EnumSymbol.NONE).addTraits(new FT_Flammable(1_000_000), GASEOUS); //acetylene burns as hot as satan's asshole + SALIENT = new FluidType("SALIENT", 0x457F2D, 0, 0, 0, EnumSymbol.NONE).addTraits(DELICIOUS, LIQUID); + XPJUICE = new FluidType("XPJUICE", 0xBBFF09, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID); + ENDERJUICE = new FluidType("ENDERJUICE", 0x127766, 0, 0, 0, EnumSymbol.NONE).addTraits(DELICIOUS, LIQUID); + PETROIL_LEADED = new FluidType("PETROIL_LEADED", 0x44413d, 1, 3, 0, EnumSymbol.NONE).addContainers(0x2331F6, ExtContainer.CANISTER).addTraits(new FT_Flammable(125_000), new FT_Combustible(FuelGrade.MEDIUM, 450_000), LIQUID); + GASOLINE_LEADED = new FluidType("GASOLINE_LEADED", 0x445772, 1, 2, 0, EnumSymbol.NONE).addContainers(0x2F775A, ExtContainer.CANISTER).addTraits(new FT_Flammable(400_000), new FT_Combustible(FuelGrade.HIGH, 1_500_000), LIQUID); + COALGAS_LEADED = new FluidType("COALGAS_LEADED", 0x445772, 1, 2, 0, EnumSymbol.NONE).addContainers(0x1E155F, ExtContainer.CANISTER).addTraits(new FT_Flammable(75_000), new FT_Combustible(FuelGrade.MEDIUM, 250_000), LIQUID); + SULFURIC_ACID = new FluidType("SULFURIC_ACID", 0xB0AA64, 3, 0, 2, EnumSymbol.ACID).addTraits(new FT_Corrosive(50), LIQUID); + COOLANT_HOT = new FluidType("COOLANT_HOT", 0x99525E, 1, 0, 0, EnumSymbol.NONE).setTemp(600).setHeatCap(COOLANT.heatCap).addTraits(LIQUID); + MUG = new FluidType("MUG", 0x4B2D28, 0, 0, 0, EnumSymbol.NONE).setHeatCap(1D).addTraits(DELICIOUS, LIQUID); + MUG_HOT = new FluidType(78, "MUG_HOT", 0x6B2A20, 0, 0, 0, EnumSymbol.NONE).setHeatCap(MUG.heatCap).setTemp(500).addTraits(DELICIOUS, LIQUID); // ^ ^ ^ ^ ^ ^ ^ ^ diff --git a/src/main/java/com/hbm/inventory/fluid/types/FluidTypeCombustible.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Combustible.java similarity index 73% rename from src/main/java/com/hbm/inventory/fluid/types/FluidTypeCombustible.java rename to src/main/java/com/hbm/inventory/fluid/trait/FT_Combustible.java index 449d4b673..2c6480099 100644 --- a/src/main/java/com/hbm/inventory/fluid/types/FluidTypeCombustible.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Combustible.java @@ -1,26 +1,19 @@ -package com.hbm.inventory.fluid.types; +package com.hbm.inventory.fluid.trait; import java.util.List; -import com.hbm.render.util.EnumSymbol; import com.hbm.util.BobMathUtil; import net.minecraft.util.EnumChatFormatting; -/** Because updating all the combustion engines and adding values by hand fucking sucks */ -public class FluidTypeCombustible extends FluidTypeFlammable { +public class FT_Combustible extends FluidTrait { protected FuelGrade fuelGrade; protected long combustionEnergy; - public FluidTypeCombustible(String compat, int color, int p, int f, int r, EnumSymbol symbol) { - super(compat, color, p, f, r, symbol); - } - - public FluidTypeCombustible setCombustionEnergy(FuelGrade grade, long energy) { + public FT_Combustible(FuelGrade grade, long energy) { this.fuelGrade = grade; this.combustionEnergy = energy; - return this; } @Override diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Corrosive.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Corrosive.java new file mode 100644 index 000000000..4e0354033 --- /dev/null +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Corrosive.java @@ -0,0 +1,32 @@ +package com.hbm.inventory.fluid.trait; + +import java.util.List; + +import net.minecraft.util.EnumChatFormatting; + +public class FT_Corrosive extends FluidTrait { + + /* 0-100 */ + private int rating; + + public FT_Corrosive(int rating) { + this.rating = rating; + } + + public int getRating() { + return rating; + } + + public boolean isHighlyCorrosive() { + return rating > 50; + } + + @Override + public void addInfo(List info) { + + if(isHighlyCorrosive()) + info.add(EnumChatFormatting.GOLD + "[Strongly Corrosive]"); + else + info.add(EnumChatFormatting.YELLOW + "[Corrosive]"); + } +} diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Flammable.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Flammable.java new file mode 100644 index 000000000..9899fccf7 --- /dev/null +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Flammable.java @@ -0,0 +1,15 @@ +package com.hbm.inventory.fluid.trait; + +public class FT_Flammable extends FluidTrait { + + /** How much heat energy (usually translates into HE 1:1) 1000mB hold */ + private long energy; + + public FT_Flammable(long energy) { + this.energy = energy; + } + + public long getHeatEnergy() { + return this.energy; + } +} diff --git a/src/main/java/com/hbm/inventory/fluid/types/RadioactiveFluid.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_VentRadiation.java similarity index 50% rename from src/main/java/com/hbm/inventory/fluid/types/RadioactiveFluid.java rename to src/main/java/com/hbm/inventory/fluid/trait/FT_VentRadiation.java index e8610c54e..9f0fbe476 100644 --- a/src/main/java/com/hbm/inventory/fluid/types/RadioactiveFluid.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_VentRadiation.java @@ -1,23 +1,16 @@ -package com.hbm.inventory.fluid.types; +package com.hbm.inventory.fluid.trait; import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.inventory.FluidTank; -import com.hbm.inventory.fluid.FluidType; -import com.hbm.render.util.EnumSymbol; import net.minecraft.world.World; -public class RadioactiveFluid extends FluidType { +public class FT_VentRadiation extends FluidTrait { float radPerMB = 0; - - public RadioactiveFluid(String name, int color, int p, int f, int r, EnumSymbol symbol) { - super(name, color, p, f, r, symbol); - } - public RadioactiveFluid setRadiation(float rad) { + public FT_VentRadiation(float rad) { this.radPerMB = rad; - return this; } @Override diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FluidTrait.java b/src/main/java/com/hbm/inventory/fluid/trait/FluidTrait.java new file mode 100644 index 000000000..4b407b48e --- /dev/null +++ b/src/main/java/com/hbm/inventory/fluid/trait/FluidTrait.java @@ -0,0 +1,17 @@ +package com.hbm.inventory.fluid.trait; + +import java.util.List; + +import com.hbm.inventory.FluidTank; + +import net.minecraft.world.World; + +public abstract class FluidTrait { + + /** Important information that should always be displayed */ + public void addInfo(List info) { } + /* General names of simple traits which are displayed when holding shift */ + public void addInfoHidden(List info) { } + + public void onFluidRelease(World world, int x, int y, int z, FluidTank tank, int overflowAmount) { } +} diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FluidTraitSimple.java b/src/main/java/com/hbm/inventory/fluid/trait/FluidTraitSimple.java new file mode 100644 index 000000000..8cceb5db3 --- /dev/null +++ b/src/main/java/com/hbm/inventory/fluid/trait/FluidTraitSimple.java @@ -0,0 +1,44 @@ +package com.hbm.inventory.fluid.trait; + +import java.util.List; + +import net.minecraft.util.EnumChatFormatting; + +public class FluidTraitSimple { + + public static class FT_Gaseous extends FluidTrait { + @Override public void addInfoHidden(List info) { + info.add(EnumChatFormatting.BLUE + "[Gaseous]"); + } + } + + public static class FT_Gaseous_ART extends FluidTrait { } //at room temperature, for cryogenic hydrogen for example + + public static class FT_Liquid extends FluidTrait { + @Override public void addInfoHidden(List info) { + info.add(EnumChatFormatting.BLUE + "[Liquid]"); + } + } + + public static class FT_Plasma extends FluidTrait { + @Override public void addInfoHidden(List info) { + info.add(EnumChatFormatting.LIGHT_PURPLE + "[Plasma]"); + } + } + + public static class FT_Amat extends FluidTrait { + @Override public void addInfoHidden(List info) { + info.add(EnumChatFormatting.DARK_RED + "[Antimatter]"); + } + } + + public static class FT_LeadContainer extends FluidTrait { + @Override public void addInfo(List info) { + info.add(EnumChatFormatting.DARK_RED + "[Requires hazardous material tank to hold]"); + } + } + + public static class FT_NoID extends FluidTrait { } + public static class FT_NoContainer extends FluidTrait { } + public static class FT_Delicious extends FluidTrait { } +} diff --git a/src/main/java/com/hbm/inventory/fluid/types/Antimatter.java b/src/main/java/com/hbm/inventory/fluid/types/Antimatter.java deleted file mode 100644 index a077efc53..000000000 --- a/src/main/java/com/hbm/inventory/fluid/types/Antimatter.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.hbm.inventory.fluid.types; - -import com.hbm.inventory.fluid.FluidType; -import com.hbm.render.util.EnumSymbol; - -public class Antimatter extends FluidType { - - public Antimatter(String name, int color, int p, int f, int r, EnumSymbol symbol) { - super(name, color, p, f, r, symbol); - this.addTraits(FluidTrait.AMAT); - } -} diff --git a/src/main/java/com/hbm/inventory/fluid/types/CombustibleGas.java b/src/main/java/com/hbm/inventory/fluid/types/CombustibleGas.java deleted file mode 100644 index b260f0fe1..000000000 --- a/src/main/java/com/hbm/inventory/fluid/types/CombustibleGas.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.hbm.inventory.fluid.types; - -import com.hbm.render.util.EnumSymbol; - -public class CombustibleGas extends FluidTypeCombustible { - - public CombustibleGas(String compat, int color, int p, int f, int r, EnumSymbol symbol) { - super(compat, color, p, f, r, symbol); - this.addTraits(FluidTrait.GASEOUS); - } -} diff --git a/src/main/java/com/hbm/inventory/fluid/types/FlammableGas.java b/src/main/java/com/hbm/inventory/fluid/types/FlammableGas.java deleted file mode 100644 index 0216a9029..000000000 --- a/src/main/java/com/hbm/inventory/fluid/types/FlammableGas.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.hbm.inventory.fluid.types; - -import com.hbm.render.util.EnumSymbol; - -public class FlammableGas extends FluidTypeFlammable { - - public FlammableGas(String compat, int color, int p, int f, int r, EnumSymbol symbol) { - super(compat, color, p, f, r, symbol); - this.addTraits(FluidTrait.GASEOUS); - } -} diff --git a/src/main/java/com/hbm/inventory/fluid/types/FlammableOilGas.java b/src/main/java/com/hbm/inventory/fluid/types/FlammableOilGas.java deleted file mode 100644 index d7909ffda..000000000 --- a/src/main/java/com/hbm/inventory/fluid/types/FlammableOilGas.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.hbm.inventory.fluid.types; - -import com.hbm.render.util.EnumSymbol; - -public class FlammableOilGas extends FlammableGas { - - public FlammableOilGas(String compat, int color, int p, int f, int r, EnumSymbol symbol) { - super(compat, color, p, f, r, symbol); - this.addTraits(FluidTrait.PETROCHEMICAL); - } -} diff --git a/src/main/java/com/hbm/inventory/fluid/types/FluidTypeFlammable.java b/src/main/java/com/hbm/inventory/fluid/types/FluidTypeFlammable.java deleted file mode 100644 index 37bf5e8e0..000000000 --- a/src/main/java/com/hbm/inventory/fluid/types/FluidTypeFlammable.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.hbm.inventory.fluid.types; - -import java.util.List; - -import com.hbm.inventory.fluid.FluidType; -import com.hbm.render.util.EnumSymbol; -import com.hbm.util.BobMathUtil; - -import net.minecraft.util.EnumChatFormatting; - -/** If it burns, it needs to be an instance of this class. */ -public class FluidTypeFlammable extends FluidType { - - /** How much heat energy (usually translates into HE 1:1) 1000mB hold */ - protected long energy; - - public FluidTypeFlammable(String compat, int color, int p, int f, int r, EnumSymbol symbol) { - super(compat, color, p, f, r, symbol); - } - - public FluidTypeFlammable setHeatEnergy(long energy) { - this.energy = energy; - return this; - } - - public long getHeatEnergy() { - return this.energy; - } - - @Override - public void addInfo(List info) { - super.addInfo(info); - - info.add(EnumChatFormatting.YELLOW + "[Flammable]"); - - if(energy > 0) - info.add(EnumChatFormatting.YELLOW + "Provides " + EnumChatFormatting.RED + "" + BobMathUtil.getShortNumber(energy) + "HE " + EnumChatFormatting.YELLOW + "per bucket"); - } -} diff --git a/src/main/java/com/hbm/inventory/fluid/types/Fuel.java b/src/main/java/com/hbm/inventory/fluid/types/Fuel.java deleted file mode 100644 index d37c3fa20..000000000 --- a/src/main/java/com/hbm/inventory/fluid/types/Fuel.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.hbm.inventory.fluid.types; - -import com.hbm.render.util.EnumSymbol; - -public class Fuel extends FluidTypeCombustible { - - public Fuel(String compat, int color, int p, int f, int r, EnumSymbol symbol) { - super(compat, color, p, f, r, symbol); - this.addTraits(FluidTrait.LIQUID, FluidTrait.PETROCHEMICAL); - } -} diff --git a/src/main/java/com/hbm/inventory/fluid/types/Gas.java b/src/main/java/com/hbm/inventory/fluid/types/Gas.java deleted file mode 100644 index 103492c6a..000000000 --- a/src/main/java/com/hbm/inventory/fluid/types/Gas.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.hbm.inventory.fluid.types; - -import com.hbm.inventory.fluid.FluidType; -import com.hbm.render.util.EnumSymbol; - -public class Gas extends FluidType { - - public Gas(String name, int color, int p, int f, int r, EnumSymbol symbol) { - super(name, color, p, f, r, symbol); - this.addTraits(FluidTrait.GASEOUS); - } -} diff --git a/src/main/java/com/hbm/inventory/fluid/types/Oil.java b/src/main/java/com/hbm/inventory/fluid/types/Oil.java deleted file mode 100644 index 915895d89..000000000 --- a/src/main/java/com/hbm/inventory/fluid/types/Oil.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.hbm.inventory.fluid.types; - -import com.hbm.render.util.EnumSymbol; - -public class Oil extends FluidTypeFlammable { - - public Oil(String compat, int color, int p, int f, int r, EnumSymbol symbol) { - super(compat, color, p, f, r, symbol); - this.addTraits(FluidTrait.LIQUID, FluidTrait.PETROCHEMICAL); - } -} diff --git a/src/main/java/com/hbm/inventory/fluid/types/Petrochemical.java b/src/main/java/com/hbm/inventory/fluid/types/Petrochemical.java deleted file mode 100644 index ec6258ae8..000000000 --- a/src/main/java/com/hbm/inventory/fluid/types/Petrochemical.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.hbm.inventory.fluid.types; - -import com.hbm.inventory.fluid.FluidType; -import com.hbm.render.util.EnumSymbol; - -public class Petrochemical extends FluidType { - - public Petrochemical(String name, int color, int p, int f, int r, EnumSymbol symbol) { - super(name, color, p, f, r, symbol); - this.addTraits(FluidTrait.LIQUID, FluidTrait.PETROCHEMICAL); - } -} diff --git a/src/main/java/com/hbm/inventory/fluid/types/RadioactiveGas.java b/src/main/java/com/hbm/inventory/fluid/types/RadioactiveGas.java deleted file mode 100644 index e3b29124b..000000000 --- a/src/main/java/com/hbm/inventory/fluid/types/RadioactiveGas.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.hbm.inventory.fluid.types; - -import com.hbm.render.util.EnumSymbol; - -public class RadioactiveGas extends RadioactiveFluid { - - public RadioactiveGas(String name, int color, int p, int f, int r, EnumSymbol symbol) { - super(name, color, p, f, r, symbol); - this.addTraits(FluidTrait.GASEOUS); - } -} diff --git a/src/main/java/com/hbm/inventory/fluid/types/RadioactiveLiquid.java b/src/main/java/com/hbm/inventory/fluid/types/RadioactiveLiquid.java deleted file mode 100644 index f867ab9f0..000000000 --- a/src/main/java/com/hbm/inventory/fluid/types/RadioactiveLiquid.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.hbm.inventory.fluid.types; - -import com.hbm.render.util.EnumSymbol; - -public class RadioactiveLiquid extends RadioactiveFluid { - - public RadioactiveLiquid(String name, int color, int p, int f, int r, EnumSymbol symbol) { - super(name, color, p, f, r, symbol); - this.addTraits(FluidTrait.LIQUID); - } -} diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineGasFlare.java b/src/main/java/com/hbm/inventory/gui/GUIMachineGasFlare.java index 06a29102d..abcc30b6e 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineGasFlare.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineGasFlare.java @@ -3,7 +3,7 @@ package com.hbm.inventory.gui; import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerMachineGasFlare; -import com.hbm.inventory.fluid.types.FluidTypeFlammable; +import com.hbm.inventory.fluid.trait.FT_Flammable; import com.hbm.lib.RefStrings; import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; @@ -79,7 +79,7 @@ public class GUIMachineGasFlare extends GuiInfoContainer { if(flare.isOn) drawTexturedModalRect(guiLeft + 79, guiTop + 15, 176, 0, 35, 10); if(flare.doesBurn) drawTexturedModalRect(guiLeft + 79, guiTop + 49, 176, 10, 35, 14); - if(flare.isOn && flare.doesBurn && flare.tank.getFill() > 0 && flare.tank.getTankType() instanceof FluidTypeFlammable) + if(flare.isOn && flare.doesBurn && flare.tank.getFill() > 0 && flare.tank.getTankType().hasTrait(FT_Flammable.class)) drawTexturedModalRect(guiLeft + 88, guiTop + 29, 176, 24, 18, 18); flare.tank.renderTank(guiLeft + 35, guiTop + 69, this.zLevel, 16, 52); diff --git a/src/main/java/com/hbm/inventory/gui/GUIOilburner.java b/src/main/java/com/hbm/inventory/gui/GUIOilburner.java index 1316841cf..222174de0 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIOilburner.java +++ b/src/main/java/com/hbm/inventory/gui/GUIOilburner.java @@ -3,7 +3,7 @@ package com.hbm.inventory.gui; import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerOilburner; -import com.hbm.inventory.fluid.types.FluidTypeFlammable; +import com.hbm.inventory.fluid.trait.FT_Flammable; import com.hbm.lib.RefStrings; import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; @@ -35,8 +35,8 @@ public class GUIOilburner extends GuiInfoContainer { this.drawCustomInfoStat(x, y, guiLeft + 116, guiTop + 17, 16, 52, x, y, new String[] { String.format("%,d", Math.min(diFurnace.heatEnergy, diFurnace.maxHeatEnergy)) + " / " + String.format("%,d", diFurnace.maxHeatEnergy) + "TU" }); - if(diFurnace.tank.getTankType() instanceof FluidTypeFlammable) { - this.drawCustomInfoStat(x, y, guiLeft + 79, guiTop + 34, 18, 18, x, y, new String[] { "10mB/t", (int)(((FluidTypeFlammable)diFurnace.tank.getTankType()).getHeatEnergy() / 1000) * 10 + "TU/t" }); + if(diFurnace.tank.getTankType().hasTrait(FT_Flammable.class)) { + this.drawCustomInfoStat(x, y, guiLeft + 79, guiTop + 34, 18, 18, x, y, new String[] { "10mB/t", (int)(diFurnace.tank.getTankType().getTrait(FT_Flammable.class).getHeatEnergy() / 1000) * 10 + "TU/t" }); } diFurnace.tank.renderTankInfo(this, x, y, guiLeft + 44, guiTop + 17, 16, 52); @@ -75,7 +75,7 @@ public class GUIOilburner extends GuiInfoContainer { if(diFurnace.isOn) { drawTexturedModalRect(guiLeft + 70, guiTop + 54, 210, 0, 35, 14); - if(diFurnace.tank.getFill() > 0 && diFurnace.tank.getTankType() instanceof FluidTypeFlammable) { + if(diFurnace.tank.getFill() > 0 && diFurnace.tank.getTankType().hasTrait(FT_Flammable.class)) { drawTexturedModalRect(guiLeft + 79, guiTop + 34, 176, 0, 18, 18); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOilburner.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOilburner.java index fe444ae8c..3ef49d8d8 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOilburner.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOilburner.java @@ -6,7 +6,7 @@ import com.hbm.inventory.FluidTank; import com.hbm.inventory.container.ContainerOilburner; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; -import com.hbm.inventory.fluid.types.FluidTypeFlammable; +import com.hbm.inventory.fluid.trait.FT_Flammable; import com.hbm.inventory.gui.GUIOilburner; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; @@ -52,8 +52,8 @@ public class TileEntityHeaterOilburner extends TileEntityMachineBase implements if(this.isOn && this.heatEnergy < maxHeatEnergy) { - if(tank.getTankType() instanceof FluidTypeFlammable) { - FluidTypeFlammable type = (FluidTypeFlammable) tank.getTankType(); + if(tank.getTankType().hasTrait(FT_Flammable.class)) { + FT_Flammable type = tank.getTankType().getTrait(FT_Flammable.class); int burnRate = 10; int toBurn = Math.min(burnRate, tank.getFill()); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java index ea8611233..3acdd525d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java @@ -8,8 +8,8 @@ import com.hbm.inventory.FluidContainerRegistry; import com.hbm.inventory.FluidTank; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; -import com.hbm.inventory.fluid.types.FluidTypeCombustible; -import com.hbm.inventory.fluid.types.FluidTypeCombustible.FuelGrade; +import com.hbm.inventory.fluid.trait.FT_Combustible; +import com.hbm.inventory.fluid.trait.FT_Combustible.FuelGrade; import com.hbm.items.ModItems; import com.hbm.lib.Library; import com.hbm.tileentity.TileEntityMachineBase; @@ -152,8 +152,8 @@ public class TileEntityMachineDiesel extends TileEntityMachineBase implements IE public static long getHEFromFuel(FluidType type) { - if(type instanceof FluidTypeCombustible) { - FluidTypeCombustible fuel = (FluidTypeCombustible) type; + if(type.hasTrait(FT_Combustible.class)) { + FT_Combustible fuel = type.getTrait(FT_Combustible.class); FuelGrade grade = fuel.getGrade(); double efficiency = fuelEfficiency.containsKey(grade) ? fuelEfficiency.get(grade) : 0; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java index 9baafe22e..e5e5aa1f0 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java @@ -5,7 +5,7 @@ import com.hbm.interfaces.IFluidAcceptor; import com.hbm.inventory.FluidTank; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; -import com.hbm.inventory.fluid.types.FluidTypeFlammable; +import com.hbm.inventory.fluid.trait.FT_Flammable; import com.hbm.items.ModItems; import com.hbm.lib.Library; import com.hbm.tileentity.TileEntityMachineBase; @@ -211,7 +211,7 @@ public class TileEntityMachineIGenerator extends TileEntityMachineBase implement public int getPowerFromFuel() { FluidType type = tanks[1].getTankType(); - return type instanceof FluidTypeFlammable ? (int)(((FluidTypeFlammable) type).getHeatEnergy() / 1000L) : 0; + return type.hasTrait(FT_Flammable.class) ? (int)(type.getTrait(FT_Flammable.class).getHeatEnergy() / 1000L) : 0; } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSeleniumEngine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSeleniumEngine.java index bac764a9f..069183b62 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSeleniumEngine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSeleniumEngine.java @@ -8,8 +8,8 @@ import com.hbm.inventory.FluidContainerRegistry; import com.hbm.inventory.FluidTank; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; -import com.hbm.inventory.fluid.types.FluidTypeCombustible; -import com.hbm.inventory.fluid.types.FluidTypeCombustible.FuelGrade; +import com.hbm.inventory.fluid.trait.FT_Combustible; +import com.hbm.inventory.fluid.trait.FT_Combustible.FuelGrade; import com.hbm.items.ModItems; import com.hbm.lib.Library; import com.hbm.packet.AuxElectricityPacket; @@ -272,8 +272,8 @@ public class TileEntityMachineSeleniumEngine extends TileEntityLoadedBase implem public static long getHEFromFuel(FluidType type) { - if(type instanceof FluidTypeCombustible) { - FluidTypeCombustible fuel = (FluidTypeCombustible) type; + if(type.hasTrait(FT_Combustible.class)) { + FT_Combustible fuel = type.getTrait(FT_Combustible.class); FuelGrade grade = fuel.getGrade(); double efficiency = fuelEfficiency.containsKey(grade) ? fuelEfficiency.get(grade) : 0; return (long) (fuel.getCombustionEnergy() / 1000L * efficiency); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java index 673c6cf69..ee9581f1b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java @@ -8,8 +8,8 @@ import com.hbm.inventory.FluidTank; import com.hbm.inventory.UpgradeManager; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; -import com.hbm.inventory.fluid.types.FluidTypeCombustible; -import com.hbm.inventory.fluid.types.FluidTypeCombustible.FuelGrade; +import com.hbm.inventory.fluid.trait.FT_Combustible; +import com.hbm.inventory.fluid.trait.FT_Combustible.FuelGrade; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.ModDamageSource; @@ -115,8 +115,8 @@ public class TileEntityMachineTurbofan extends TileEntityMachineBase implements long burn = 0; int amount = 1 + this.afterburner; - if(tank.getTankType() instanceof FluidTypeCombustible && ((FluidTypeCombustible) tank.getTankType()).getGrade() == FuelGrade.AERO) { - burn = ((FluidTypeCombustible) tank.getTankType()).getCombustionEnergy() / 1_000; + if(tank.getTankType().hasTrait(FT_Combustible.class) && tank.getTankType().getTrait(FT_Combustible.class).getGrade() == FuelGrade.AERO) { + burn = tank.getTankType().getTrait(FT_Combustible.class).getCombustionEnergy() / 1_000; } int toBurn = Math.min(amount, this.tank.getFill()); diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java index 3a73f999f..e8622e6ac 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java @@ -9,8 +9,9 @@ import com.hbm.inventory.FluidTank; import com.hbm.inventory.UpgradeManager; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; -import com.hbm.inventory.fluid.FluidType.FluidTrait; -import com.hbm.inventory.fluid.types.FluidTypeFlammable; +import com.hbm.inventory.fluid.trait.FT_Flammable; +import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Gaseous; +import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Gaseous_ART; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; @@ -111,9 +112,9 @@ public class TileEntityMachineGasFlare extends TileEntityMachineBase implements maxVent += maxVent * burn; maxBurn += maxBurn * burn; - if(!doesBurn || !(tank.getTankType() instanceof FluidTypeFlammable)) { + if(!doesBurn || !(tank.getTankType().hasTrait(FT_Flammable.class))) { - if(tank.getTankType().traits.contains(FluidTrait.GASEOUS)) { + if(tank.getTankType().hasTrait(FT_Gaseous.class) || tank.getTankType().hasTrait(FT_Gaseous_ART.class)) { int eject = Math.min(maxVent, tank.getFill()); tank.setFill(tank.getFill() - eject); tank.getTankType().onFluidRelease(this, tank, eject); @@ -123,15 +124,15 @@ public class TileEntityMachineGasFlare extends TileEntityMachineBase implements } } else { - if(tank.getTankType() instanceof FluidTypeFlammable) { + if(tank.getTankType().hasTrait(FT_Flammable.class)) { int eject = Math.min(maxBurn, tank.getFill()); tank.setFill(tank.getFill() - eject); int penalty = 2; - if(!tank.getTankType().traits.contains(FluidTrait.GASEOUS)) + if(!tank.getTankType().hasTrait(FT_Gaseous.class) && !tank.getTankType().hasTrait(FT_Gaseous_ART.class)) penalty = 10; - long powerProd = ((FluidTypeFlammable) tank.getTankType()).getHeatEnergy() * eject / 1_000; // divided by 1000 per mB + long powerProd = tank.getTankType().getTrait(FT_Flammable.class).getHeatEnergy() * eject / 1_000; // divided by 1000 per mB powerProd /= penalty; powerProd += powerProd * yield / 3; @@ -166,7 +167,7 @@ public class TileEntityMachineGasFlare extends TileEntityMachineBase implements if(isOn && tank.getFill() > 0) { - if((!doesBurn || !(tank.getTankType() instanceof FluidTypeFlammable)) && tank.getTankType().traits.contains(FluidTrait.GASEOUS)) { + if((!doesBurn || !(tank.getTankType().hasTrait(FT_Flammable.class))) && (tank.getTankType().hasTrait(FT_Gaseous.class) || tank.getTankType().hasTrait(FT_Gaseous_ART.class))) { NBTTagCompound data = new NBTTagCompound(); data.setString("type", "tower"); @@ -184,7 +185,7 @@ public class TileEntityMachineGasFlare extends TileEntityMachineBase implements } - if(doesBurn && tank.getTankType() instanceof FluidTypeFlammable && MainRegistry.proxy.me().getDistanceSq(xCoord, yCoord + 10, zCoord) <= 1024) { + if(doesBurn && tank.getTankType().hasTrait(FT_Flammable.class) && MainRegistry.proxy.me().getDistanceSq(xCoord, yCoord + 10, zCoord) <= 1024) { NBTTagCompound data = new NBTTagCompound(); data.setString("type", "vanillaExt"); diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java index e954e41d8..311df298f 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java @@ -8,7 +8,7 @@ import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidSource; import com.hbm.inventory.FluidTank; import com.hbm.inventory.fluid.FluidType; -import com.hbm.inventory.fluid.FluidType.FluidTrait; +import com.hbm.inventory.fluid.trait.FT_Corrosive; import com.hbm.inventory.fluid.Fluids; import com.hbm.lib.Library; import com.hbm.main.ModEventHandler; @@ -98,7 +98,7 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc //for when you fill corrosive liquid into an iron tank if((b == ModBlocks.barrel_iron && tank.getTankType().isCorrosive()) || - (b == ModBlocks.barrel_steel && tank.getTankType().traits.contains(FluidTrait.CORROSIVE_2))) { + (b == ModBlocks.barrel_steel && tank.getTankType().hasTrait(FT_Corrosive.class) && tank.getTankType().getTrait(FT_Corrosive.class).getRating() > 50)) { ItemStack[] copy = this.slots.clone(); this.slots = new ItemStack[6]; worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.barrel_corroded); diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java index a59f7cbab..d7a4e2acb 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java @@ -8,7 +8,7 @@ import com.hbm.interfaces.IFluidContainer; import com.hbm.interfaces.IFluidSource; import com.hbm.inventory.FluidTank; import com.hbm.inventory.fluid.FluidType; -import com.hbm.inventory.fluid.FluidType.FluidTrait; +import com.hbm.inventory.fluid.trait.FT_Corrosive; import com.hbm.inventory.fluid.Fluids; import com.hbm.lib.Library; import com.hbm.tileentity.TileEntityMachineBase; @@ -73,7 +73,7 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements worldObj.newExplosion(null, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, 5, true, true); } - if(tank.getTankType().traits.contains(FluidTrait.CORROSIVE_2)) { + if(tank.getTankType().hasTrait(FT_Corrosive.class) && tank.getTankType().getTrait(FT_Corrosive.class).isHighlyCorrosive()) { worldObj.func_147480_a(xCoord, yCoord, zCoord, false); } }