aboutsummaryrefslogtreecommitdiff
path: root/src/Java/miscutil/xmod/gregtech/common/blocks/fluid/GregtechFluidHandler.java
diff options
context:
space:
mode:
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.java101
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;
+ }
+
}