diff options
Diffstat (limited to 'src/Java/miscutil/xmod/gregtech/common/blocks/fluid/GregtechFluidHandler.java')
-rw-r--r-- | src/Java/miscutil/xmod/gregtech/common/blocks/fluid/GregtechFluidHandler.java | 101 |
1 files changed, 79 insertions, 22 deletions
diff --git a/src/Java/miscutil/xmod/gregtech/common/blocks/fluid/GregtechFluidHandler.java b/src/Java/miscutil/xmod/gregtech/common/blocks/fluid/GregtechFluidHandler.java index d50312e17f..d71461197f 100644 --- a/src/Java/miscutil/xmod/gregtech/common/blocks/fluid/GregtechFluidHandler.java +++ b/src/Java/miscutil/xmod/gregtech/common/blocks/fluid/GregtechFluidHandler.java @@ -5,19 +5,32 @@ import gregtech.api.enums.ItemList; import gregtech.api.enums.OrePrefixes; import gregtech.api.util.GT_OreDictUnificator; import ic2.api.item.IC2Items; +import ic2.core.Ic2Items; +import ic2.core.init.InternalName; +import ic2.core.item.resources.ItemCell; + +import java.util.HashMap; +import java.util.IdentityHashMap; +import java.util.Map; + import miscutil.core.lib.LoadedMods; import miscutil.core.util.Utils; import miscutil.core.util.fluid.FluidUtils; import miscutil.core.util.item.UtilsItems; import miscutil.xmod.gregtech.api.enums.GregtechOrePrefixes.GT_Materials; import miscutil.xmod.gregtech.common.Meta_GT_Proxy; +import net.minecraft.block.Block; +import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; +import net.minecraftforge.common.util.EnumHelper; import net.minecraftforge.fluids.FluidContainerRegistry; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.oredict.OreDictionary; public class GregtechFluidHandler { + protected static int cellID = 0; + public static void run(){ start(); } @@ -50,37 +63,37 @@ public class GregtechFluidHandler { Utils.LOG_INFO("Adding in GT Fluids for Molten Salt, Cooled Salt and Various other Nuclide related content."); Meta_GT_Proxy.addFluid("hydrofluoricAcid", "Hydrofluoric Acid", GT_Materials.HydrofluoricAcid, 1, 120, GT_OreDictUnificator.get(OrePrefixes.cell, GT_Materials.HydrofluoricAcid, 1L), ItemList.Cell_Empty.get(1L, new Object[0]), 1000); generateIC2FluidCell("HydrofluoricAcid"); - + Meta_GT_Proxy.addFluid("sulfurDioxide", "Sulfur Dioxide", GT_Materials.SulfurDioxide, 4, -100, GT_OreDictUnificator.get(OrePrefixes.cell, GT_Materials.SulfurDioxide, 1L), ItemList.Cell_Empty.get(1L, new Object[0]), 1000); generateIC2FluidCell("SulfurDioxide"); - + Meta_GT_Proxy.addFluid("sulfurousAcid", "Sulfurous Acid", GT_Materials.SulfurousAcid, 4, 75, GT_OreDictUnificator.get(OrePrefixes.cell, GT_Materials.SulfurousAcid, 1L), ItemList.Cell_Empty.get(1L, new Object[0]), 1000); generateIC2FluidCell("SulfurousAcid"); - + Meta_GT_Proxy.addFluid("sulfuricApatite", "Sulfuric Apatite", GT_Materials.SulfuricApatite, 4, 500, GT_OreDictUnificator.get(OrePrefixes.cell, GT_Materials.SulfuricApatite, 1L), ItemList.Cell_Empty.get(1L, new Object[0]), 1000); generateIC2FluidCell("SulfuricApatite"); - + Meta_GT_Proxy.addFluid("uraniumHexafluoride", "Uranium Hexafluoride", GT_Materials.UraniumHexaFluoride, 4, 200, GT_OreDictUnificator.get(OrePrefixes.cell, GT_Materials.UraniumHexaFluoride, 1L), ItemList.Cell_Empty.get(1L, new Object[0]), 1000); generateIC2FluidCell("UraniumHexaFluoride"); - + Meta_GT_Proxy.addFluid("uraniumTetrafluoride", "Uranium Tetrafluoride", GT_Materials.UraniumTetraFluoride, 4, 950, GT_OreDictUnificator.get(OrePrefixes.cell, GT_Materials.UraniumTetraFluoride, 1L), ItemList.Cell_Empty.get(1L, new Object[0]), 1000); generateIC2FluidCell("UraniumTetraFluoride"); - + Meta_GT_Proxy.addFluid("thoriumTetrafluoride", "Thorium Tetrafluoride", GT_Materials.ThoriumTetraFluoride, 4, 1250, GT_OreDictUnificator.get(OrePrefixes.cell, GT_Materials.ThoriumTetraFluoride, 1L), ItemList.Cell_Empty.get(1L, new Object[0]), 1000); generateIC2FluidCell("ThoriumTetraFluoride"); - - + + if (!LoadedMods.IHL || UtilsItems.getItemStackOfAmountFromOreDict("cellHydrogenChloride", 1) == null){ - + if (FluidUtils.getFluidStack("hydrogenchloride", 1) == null){ - if (LoadedMods.IHL){ - Utils.LOG_INFO("IHL Loaded but hydrogen chloride could not be found for some reason. Adding our own."); + if (LoadedMods.IHL){ + Utils.LOG_INFO("IHL Loaded but hydrogen chloride could not be found for some reason. Adding our own."); } - else { - Utils.LOG_INFO("No Suitable versions of Hydrogen Chloride available, adding our own."); - } - Meta_GT_Proxy.addFluid("hydrogenChloride", "Hydrogen Chloride", GT_Materials.HydrogenChloride, 4, 75, GT_OreDictUnificator.get(OrePrefixes.cell, GT_Materials.HydrogenChloride, 1L), ItemList.Cell_Empty.get(1L, new Object[0]), 1000); - generateIC2FluidCell("HydrogenChloride"); + else { + Utils.LOG_INFO("No Suitable versions of Hydrogen Chloride available, adding our own."); + } + Meta_GT_Proxy.addFluid("hydrogenChloride", "Hydrogen Chloride", GT_Materials.HydrogenChloride, 4, 75, GT_OreDictUnificator.get(OrePrefixes.cell, GT_Materials.HydrogenChloride, 1L), ItemList.Cell_Empty.get(1L, new Object[0]), 1000); + generateIC2FluidCell("HydrogenChloride"); } } @@ -101,9 +114,9 @@ public class GregtechFluidHandler { * so if you dissolve aparite in sulphuric acid * you'll get a mixture of SO2, H2O, HF and HCl */ - - - + + + FluidStack[] apatiteOutput = { FluidUtils.getFluidStack("sulfurousacid", 3800), FluidUtils.getFluidStack("hydrofluoricacid", 400) @@ -114,7 +127,7 @@ public class GregtechFluidHandler { UtilsItems.getItemStackOfAmountFromOreDict("cellHydrogenChloride", 1), 45*20, 256); - + FluidStack[] sulfurousacidOutput = { FluidUtils.getFluidStack("sulfurdioxide", 500), FluidUtils.getFluidStack("water", 500) @@ -125,7 +138,7 @@ public class GregtechFluidHandler { null, 10*20, 60); - + FluidStack[] sulfurdioxideOutput = { FluidUtils.getFluidStack("oxygen", 133*2) }; @@ -164,9 +177,53 @@ public class GregtechFluidHandler { FluidContainerRegistry.registerFluidContainer(new FluidContainerRegistry.FluidContainerData(FluidUtils.getFluidStack(fluidNameWithCaps.toLowerCase(), 1000), filledCell, emptyCell.copy())); } else { - Utils.LOG_INFO("Failed to create a cell for "+fluidNameWithCaps); + + Utils.LOG_INFO("Failed to create a cell for "+fluidNameWithCaps+". Trying seconday method."); + Utils.createInternalNameAndFluidCell(fluidNameWithCaps); + //setUpNewFluidCell(cellID++, fluidNameWithCaps); + + } + } + } + + public static <T extends Enum<? >> T addEnum(Class<T> enumType, String enumName, Class<?>[] paramTypes, Object[] paramValues) { + return null; + } + + private static Map<Integer, InternalName> names = new HashMap<Integer, InternalName>(); + private static Map<Block, ItemStack> cells = new IdentityHashMap<Block, ItemStack>(); + + public static boolean setUpNewFluidCell(int meta, String name){ + try { + InternalName fluidName = EnumHelper.addEnum(InternalName.class, name, new Class[0], new Object[0]); + //EnumHelper.addEnum(InternalName.class, "InternalName", name); + if (fluidName.valueOf(name) != null){ + addRegisterCell(meta, fluidName); + return true; } + Utils.LOG_INFO("Secondary Cell Method failed."); + return false; + } catch (Throwable r) { + Utils.LOG_INFO("Secondary Cell Method failed.."); + Utils.LOG_INFO("Reason: "+r.getMessage()); + Utils.LOG_INFO("Reason: "+r); + r.printStackTrace(); + return false; } } + private static ItemStack addCell(int meta, InternalName name){ + ItemCell itemCell = new ItemCell(InternalName.valueOf(name.name())); + names.put(Integer.valueOf(meta), InternalName.valueOf(name.name())); + ItemStack ret = new ItemStack(itemCell, 1, meta); + cells.put(Blocks.air, ret); + return ret; + } + + private static ItemStack addRegisterCell(int meta, InternalName name){ + ItemStack ret = addCell(meta, name); + FluidContainerRegistry.registerFluidContainer(FluidUtils.getFluidStack("air", 0), ret.copy(), Ic2Items.cell.copy()); + return ret; + } + } |