package ihl.worldgen.ores; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import ic2.core.Ic2Items; import ihl.IHLCreativeTab; import ihl.IHLModInfo; import ihl.items_blocks.IHLFluidBlock; import cpw.mods.fml.common.registry.GameRegistry; import net.minecraft.block.Block; import net.minecraft.block.material.MapColor; import net.minecraft.block.material.Material; import net.minecraft.block.material.MaterialLiquid; import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.item.Item; import net.minecraft.item.ItemBucket; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidContainerRegistry; import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; public class IHLFluid extends Fluid { private IHLFluidType type; private static List fluidInstances = new ArrayList(); private static Map localFluidRegistry = new HashMap(); private static Map realDensityMap = new HashMap(); private static Map condensationMap = new HashMap(); private static Map> solutionMap = new HashMap>(); public static final int maxGaseousStateVapoursDensity = 40; public IHLFluid(IHLFluidType type1) { super(type1.fluidRegistryName); type=type1; this.setTemperature(type.temperature); this.setDensity(Math.round(type.density)); realDensityMap.put(type1.fluidRegistryName, type.density); this.setUnlocalizedName(type.fluidRegistryName.replaceFirst("fluid", "")); this.setGaseous(type.isGaseous); Fluid instance = this; if (!FluidRegistry.registerFluid(instance)) { instance = FluidRegistry.getFluid(type.fluidRegistryName); } if(instance.getBlock()==null && !type.noBlock) { instance.setBlock(new IHLFluidBlock(instance, type.blockMaterial, type.textureName, "fluid"+type.fluidName.replaceFirst("fluid", "")).setFlammable(type.flammable).setBlockName("block"+type.fluidName).setCreativeTab(IHLCreativeTab.tab)); } instance.setGaseous(type.isGaseous); if(type.haveBucket) { Item bucket = new ItemBucket(block).setTextureName(IHLModInfo.MODID+":bucket_"+type.fluidName).setUnlocalizedName("bucket_"+type.fluidName).setCreativeTab(IHLCreativeTab.tab); GameRegistry.registerItem(bucket, "bucket_"+type.fluidName); FluidContainerRegistry.registerFluidContainer(instance, new ItemStack(bucket), FluidContainerRegistry.EMPTY_BUCKET); } type.fluid=instance; localFluidRegistry.put(type1.fluidRegistryName, type); fluidInstances.add(this); } public static void init() { IHLFluidType[] var1 = IHLFluidType.values(); for(int i=0;i ii = fluidInstances.iterator(); while(ii.hasNext()) { Fluid instance = ii.next(); IHLFluidType instanceType = localFluidRegistry.get(instance.getName()); instance.setIcons( iconRegistry.registerIcon(IHLModInfo.MODID + ":" + instanceType.textureName + "Still") ,iconRegistry.registerIcon(IHLModInfo.MODID + ":" + instanceType.textureName + "Flowing") ); } } public static ItemStack getCell(String fluidname1) { ItemStack filledCell = FluidContainerRegistry.fillFluidContainer(new FluidStack(FluidRegistry.getFluid(fluidname1), FluidContainerRegistry.BUCKET_VOLUME),Ic2Items.cell.copy()); return filledCell; } public static Block getBlock(String fluidname) { return localFluidRegistry.get(fluidname).fluid.getBlock(); } public static int getMeltingPoint(Fluid fluid) { if(localFluidRegistry.get(fluid.getName())!=null) { IHLFluidType type = localFluidRegistry.get(fluid.getName()); return type.meltingPoint; } else { if(fluid.isGaseous()) { return fluid.getTemperature()>100?fluid.getTemperature()-100:0; } else { return fluid.getTemperature(); } } } public static int getBoilingPoint(Fluid fluid) { if(localFluidRegistry.containsKey(fluid.getName())) { IHLFluidType type = localFluidRegistry.get(fluid.getName()); return type.boilingPoint; } else { if(fluid.getName()=="steam" || fluid.getName()=="ic2steam" || fluid.getName()=="ic2superheatedsteam") { return 373; } else if(fluid.isGaseous()) { return fluid.getTemperature(); } else { return fluid.getTemperature()+100; } } } public enum IHLFluidType { //Methane("Methane","fluidAcetylene",10047, 293, 249, 373, 1150, "methane", Material.water, false, false, false, false), Ammonia("Ammonia", 10051, 273, 273-78, 273-33, 0.772F, "ammonia", new MaterialLiquid(MapColor.airColor), false, false, true), Acetaldehyde("Acetaldehyde",10050, 273, 273-123, 294, 784, "acetaldehyde", Material.water, false, false, false), Formaldehyde("Formaldehyde",10049, 254, 273-118, 254, 815, "formaldehyde", Material.water, false, false, false), TarWater("TarWater",10048, 293, 176, 338, 1032, "tarwater", Material.water, false, false, false), Methanol("Methanol",10047, 293, 176, 338, 792, "methanol", Material.water, true, false, false), LithiumChloride("LithiumChlorideDissolvedInWater",10046, 293, 249, 373, 1530, "solution.lithiumchloride", Material.water, false, false, false), CalciumChloride("CalciumChlorideDissolvedInWater",10045, 293, 249, 373, 1630, "solution.calciumchloride", Material.water, false, false, false), ZeolitePulp("ZeolitePulp","fluidPulpZeolite",10044, 293, 249, 373, 1150, "pulp.sodiumzeolite", Material.water, false, false, false), MoltenTarPitch("MoltenTarPitch","fluidOil",10043, 373, 373, 800, 1250, "molten.tarpitch", Material.lava, false, false, false), CrackingGas("CrackingGas","fluidAcetylene",10042, 293, 135, 273, 2.27f, "crackinggas",new MaterialLiquid(MapColor.blackColor), false, false, false), Trichlorosilane("Trichlorosilane","fluidHydrogenChloride", 10041, 293, 147, 305, 1342, "trichlorosilane", new MaterialLiquid(MapColor.greenColor), true, false, false), SiliconTetrachloride("SiliconTetrachloride","fluidChlorine", 10040, 293, 204, 330, 584, "silicontetrachloride", new MaterialLiquid(MapColor.cyanColor), true, false, false), Chlorine("Chlorine", 10039, 293, 172, 238, 3.21F), BoricAcid("BoricAcid",10038, 373, 249, 373, 1275, "boricacid", Material.water, false, false, false), MicaPulp("PulpMica",10037, 293, 249, 373, 1150, "pulp.mica", Material.water, false, false, false), CellulosePulp("PulpCellulose",10036, 293, 249, 373, 1075, "pulp.cellulose", Material.water, false, false, false), Fuel("Fuel", 10035, 293, 268, 633, 840, "fuel", Material.water, true, false, true), MineralOil("MineralOil", 10034, 293, 238, 704, 845, "mineraloil", Material.water, true, false, true), FuelOil("FuelOil", 10033, 293, 293, 693, 991, "fueloil", Material.water, true, false, true), Oil("Oil","fluidOil", 10032, 293, 284, 773, 850f, "oil", Material.water, true, false, true, false), Mercury("Mercury", 10031, 293, 234, 630, 13546), VapourMercury("VapourMercury",10030, 630, 234, 630, 9.229F, "vapour.mercury", new MaterialLiquid(MapColor.cyanColor), false, false, false), Hydrogen("Hydrogen", 10029, 293, 14, 20, 0.046F, "hydrogen", new MaterialLiquid(MapColor.blueColor), true, false, true), SaltWater("SaltWater","fluidSaltWater", 10028, 293, 253, 373, 1360f,"saltwater", Material.water, true, false, false, false), HydrogenChloride("HydrogenChloride", 10027, 293, 159, 188, 1.477F, "hydrogenchloride", new MaterialLiquid(MapColor.yellowColor), true, false, true), NatriumTungstate("NatriumTungstateDissolvedInWater",10026, 293, 249, 373, 1730, "solution.natriumtungstate", Material.water, true, false, false), Turpentine("Turpentine",10025, 293, 217, 453, 1470, "turpentine", Material.water, true, false, true), Air("Air", 293, 55, 93, 1.292F, Ic2Items.airCell), Nitrogen("Nitrogen", 10024, 92, 56, 92, 1.251F, "nitrogen", new MaterialLiquid(MapColor.airColor), true, false, true), Acetylene("Acetylene", 10023, 293, 17, 190, 1.173F, "acetylene", Material.water, true, false, true), Oxygen("Oxygen", 10022, 93, 55, 93, 1.429F, "oxygen", new MaterialLiquid(MapColor.airColor), true, false, true), NatriumHydroxide("NatriumHydroxideDissolvedInWater",10021, 293, 249, 373, 1525, "solution.natriumhydroxide", Material.water, true, false, false), LiquidGlass("LiquidGlass",10020, 293, 253, 373, 2400), fluidRubberTreeSap("fluidRubberTreeSap",10019, 293, 273, 393, 1200, "fluidrubbertreesap", Material.water, true, true, false), SpruceResin("SpruceResin",10018, 293, 273, 533, 1080, "spruceresin", Material.water, true, true, true), CablingColophony("CablingColophony",10017, 363, 363, 533, 1070, "cablingcolophony", Material.water, true, false, true), Glyceryl("Glyceryl",10016, 293, 291, 583, 1261, "glyceryl", Material.water, true, false, true), SeedOil("SeedOil",10015, 293, 256, 583, 920, "seedoil", Material.water, true, false, true), AquaRegia("AquaRegia",10014, 293, 231, 356, 1060), SodiumPeroxide("SodiumPeroxide",10013, 950, 950, 2223, 1800), OsmiumTetroxide("OsmiumTetroxide",10012, 313, 313, 403, 9), OleicAcid("OleicAcid",10011, 293, 288, 633, 895, "oleicacid", Material.water, true, false, true), Limemilk("Limemilk",10010, 293, 250, 373, 1020), NickelSulfateDissolvedInWater("NickelSulfateDissolvedInWater",10009, 293, 253, 373, 1220, "solution.nickelsulfate", Material.water, true, false, false), BlueVitriolDissolvedInWater("BlueVitriolDissolvedInWater",10008, 293, 253, 373, 1180, "solution.bluevitriol", Material.water, true, false, false), MoltenRubberWithSulfur("MoltenRubberWithSulfur",10007, 600, 600, 1000, 1200, "molten.rubber", Material.lava, false, false, true), MoltenPotassium("MoltenPotassium","fluidMolten",10042, 336, 336, 1047, 856, "molten.potassium", Material.lava, false, false, false, true), MoltenLithium("MoltenLithium","fluidMolten",10042, 454, 454, 1613, 512, "molten.lithium", Material.lava, false, false, false), MoltenPotassiumChloride("MoltenPotassiumChloride","fluidMolten",10006, 776+273, 776+273, 1407+273, 1556, "molten.potassiumchloride", Material.lava, false, false, false, true), MoltenSodiumChloride("MoltenSodiumChloride","fluidMolten",10006, 1273, 1273, 1740, 1556, "molten.sodiumchloride", Material.lava, false, false, false), MoltenGlass("MoltenGlass","fluidMolten",10048, 600, 600, 1950, 2270, "molten.glass", Material.lava, false, false, false, true), MoltenMagnesium("MoltenMagnesium","fluidMolten",10006, 923, 923, 1623, 1584, "molten.magnesium", Material.lava, false, false, false), MoltenSteel("MoltenSteel","fluidMolten",10006, 1800, 1800, 3134, 6980, "molten.steel", Material.lava, false, false, false), MoltenCopper("MoltenCopper","fluidMolten",10048, 1356, 1356, 2840, 8920, "molten.copper", Material.lava, false, false, false), MoltenBronze("MoltenBronze",10005, 940, 940, 2840, 8000, "molten.bronze", Material.lava, false, false, false), MoltenGold("MoltenGold",10005, 1337, 1337, 3129, 17310, "molten.gold", Material.lava, false, false, false), VapourSulfuricAcid("VapourSulfuricAcid",10004, 610, 283, 610, 4.522F, "vapour.sulfuricacid", new MaterialLiquid(MapColor.redColor), false, false, false), SulfuricAnhydride("SulfuricAnhydride",10003, 45, 17, 45, 2, "sulfuricanhydride", new MaterialLiquid(MapColor.redColor), true, false, false), SulfuricAcid("SulfuricAcid",10002, 293, 283, 610, 1836), NitricAcid("NitricAcid",10001, 293, 231, 356, 1100); IHLFluidType(String fluidName1, int celldamage, int temperature1, int meltingPoint1, int boilingPoint1, float density1) { fluidName=fluidName1; fluidRegistryName=fluidName.toLowerCase(); textureName="fluid"+fluidName.replaceFirst("fluid", ""); temperature=temperature1; density=density1; cellName="itemCell"+fluidName; haveBucket=false; isGaseous=density10) { return new FluidStack(fluid.getID(),quantity); } } return null; } public static float getCondensationConversionRate(Fluid gas) { String fluidname = condensationMap.get(gas.getName()); Fluid fluid = FluidRegistry.getFluid(fluidname); if(fluid!=null) { float rate = (float)gas.getDensity()/(float)fluid.getDensity(); if(gas.getDensity()<0) { //IC2 steam density -800, 100 mb steam from 1 mb water rate=(-8000F/gas.getDensity())/fluid.getDensity(); } return rate; } return 0F; } public static boolean canBeDissolvedIn(FluidStack solvent, String impurity) { return solutionMap.get(solvent.getFluid().getName()).contains(impurity); } public static float getRealDensity(Fluid gas) { if(realDensityMap.containsKey(gas.getName())) { return realDensityMap.get(gas.getName()); } else { float density = gas.getDensity(); if(gas.getDensity()<0) { //IC2 steam density -800, 100 mb steam from 1 mb water density=-8000F/gas.getDensity(); } return density; } } }