diff options
Diffstat (limited to 'src/main/java/gtPlusPlus/xmod/gregtech/loaders')
36 files changed, 6579 insertions, 6320 deletions
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/GT_Material_Loader.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/GT_Material_Loader.java index 4c8707e5e8..894d45ee39 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/GT_Material_Loader.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/GT_Material_Loader.java @@ -1,290 +1,279 @@ package gtPlusPlus.xmod.gregtech.loaders; -import java.lang.reflect.*; -import java.util.HashMap; -import java.util.Map; - import gregtech.api.enums.Materials; import gregtech.api.enums.OrePrefixes; - import gtPlusPlus.api.objects.Logger; import gtPlusPlus.api.objects.data.AutoMap; import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.util.Utils; import gtPlusPlus.core.util.minecraft.MaterialUtils; import gtPlusPlus.core.util.reflect.ReflectionUtils; +import java.lang.reflect.*; +import java.util.HashMap; +import java.util.Map; public class GT_Material_Loader { - private volatile static GT_Material_Loader instance = new GT_Material_Loader(); - private volatile Object mProxyObject; - private static AutoMap<Materials> mMaterials = new AutoMap<Materials>(); - private static volatile boolean mHasRun = false; - - public synchronized GT_Material_Loader getInstance(){ - return GT_Material_Loader.instance; - } - - public synchronized boolean getRunAbility(){ - return (mHasRun ? false : true); - } - public synchronized void setRunAbility(boolean b){ - mHasRun = Utils.invertBoolean(b); - } - - public GT_Material_Loader() { - if (getRunAbility()){ - //Set Singleton Instance - instance = this; - - //Try Reflectively add ourselves to the GT loader. - Class mInterface = ReflectionUtils.getClass("gregtech.api.interfaces.IMaterialHandler"); - if (CORE.MAIN_GREGTECH_5U_EXPERIMENTAL_FORK && mInterface != null){ - - //Make this class Dynamically implement IMaterialHandler - if (mProxyObject == null){ - mProxyObject = Proxy.newProxyInstance( - mInterface.getClassLoader(), new Class[] { mInterface }, - new MaterialHandler(getInstance())); - } - - if (ReflectionUtils.invoke(Materials.class, "add", new Class[]{ReflectionUtils.getClass("gregtech.api.interfaces.IMaterialHandler")}, new Object[]{mProxyObject})){ - Logger.REFLECTION("Successfully invoked add, on the proxied object implementing IMaterialHandler."); - - - Logger.REFLECTION("Examining Proxy to ensure it implements the correct Interface."); - Class[] i = mProxyObject.getClass().getInterfaces(); - for (int r=0;r<i.length;r++){ - Logger.REFLECTION("Contains "+i[r].getCanonicalName()+"."); - if (i[r] == mInterface){ - Logger.REFLECTION("Found gregtech.api.interfaces.IMaterialHandler. This Proxy is valid."); - } - } - } - else { - Logger.REFLECTION("Failed to invoke add, on the proxied object implementing IMaterialHandler."); - } - } - //Materials.add(this); - - //Stupid shit running twice, I don't think so. - setRunAbility(false); - } - } - - public void onMaterialsInit() { - Logger.DEBUG_MATERIALS("onMaterialsInit()"); - } - - public void onComponentInit() { - Logger.DEBUG_MATERIALS("onComponentInit()"); - if (!mMaterials.isEmpty()){ - Logger.DEBUG_MATERIALS("Found "+mMaterials.size()+" materials to re-enable."); - for (Materials M : mMaterials.values()){ - String name = MaterialUtils.getMaterialName(M); - Logger.DEBUG_MATERIALS("Trying to enable "+name+"."); - boolean success = tryEnableAllComponentsForMaterial(M); - if (success){ - Logger.DEBUG_MATERIALS("Success! Enabled "+name+"."); - } - else { - Logger.DEBUG_MATERIALS("Failure... Did not enable "+name+"."); - } - } - } - } - - public void onComponentIteration(Materials aMaterial) { - Logger.DEBUG_MATERIALS("onComponentIteration()"); - } - - public synchronized boolean enableMaterial(Materials m){ - if (mMaterials.setValue(m)){ - Logger.DEBUG_MATERIALS("Added "+MaterialUtils.getMaterialName(m)+" to internal Map."); - return true; - } - Logger.DEBUG_MATERIALS("Failed to add "+MaterialUtils.getMaterialName(m)+" to internal Map."); - return false; - } - - - - - - - /* - * Static internal handler methods - */ - - private static synchronized boolean tryEnableMaterial(Materials mMaterial){ - if (!CORE.MAIN_GREGTECH_5U_EXPERIMENTAL_FORK){ - return false; - } - - boolean value = ReflectionUtils.setField(mMaterial, "mHasParentMod", true); - if (value){ - Logger.DEBUG_MATERIALS("Set mHasParentMod true for "+mMaterial.mDefaultLocalName); - } - else { - Logger.DEBUG_MATERIALS("Failed to set mHasParentMod true for "+mMaterial.mDefaultLocalName); - } - return value; - } - - private static synchronized boolean tryEnableMaterialPart(OrePrefixes prefix, Materials mMaterial){ - if (!CORE.MAIN_GREGTECH_5U_EXPERIMENTAL_FORK){ - return false; - } - try { - Method enableComponent = ReflectionUtils.getClass("gregtech.api.enums.OrePrefixes").getDeclaredMethod("enableComponent", Materials.class); - enableComponent.invoke(prefix, mMaterial); - Logger.DEBUG_MATERIALS("Enabled "+prefix.name()+" for "+mMaterial.mDefaultLocalName+"."); - return true; - } - catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException error) { - Logger.DEBUG_MATERIALS("Failed to enabled "+prefix.name()+" for "+mMaterial.mDefaultLocalName+". Caught "+error.getCause().toString()+"."); - error.printStackTrace(); - } - Logger.DEBUG_MATERIALS("Did not enable "+prefix.name()+" for "+mMaterial.mDefaultLocalName+". Report this error to Alkalus on Github."); - return false; - } - - private static synchronized boolean tryEnableAllComponentsForMaterial(Materials material){ - if (!CORE.MAIN_GREGTECH_5U_EXPERIMENTAL_FORK){ - return false; - } - try { - tryEnableMaterial(material); - int mValid = 0; - for(OrePrefixes ore:OrePrefixes.values()){ - if (tryEnableMaterialPart(ore, material)){ - mValid++; - } - } - if (mValid > 0){ - Logger.DEBUG_MATERIALS("Success - Re-enabled all components for "+MaterialUtils.getMaterialName(material)); - } - else { - Logger.DEBUG_MATERIALS("Failure - Did not enable any components for "+MaterialUtils.getMaterialName(material)); - } - return mValid > 0; - } - catch (SecurityException | IllegalArgumentException e) { - Logger.DEBUG_MATERIALS("Total Failure - Unable to re-enable "+MaterialUtils.getMaterialName(material)+". Most likely an IllegalArgumentException, but small chance it's a SecurityException."); - return false; - } - } - - - - - - - - - - /** - * Special Dynamic Interface Class - */ - - public class MaterialHandler implements InvocationHandler { - - private final Map<String, Method> methods = new HashMap<String, Method>(); - private Object target; - - public MaterialHandler(Object target) { - Logger.REFLECTION("Created a Proxy Interface which implements IMaterialHandler."); - this.target = target; - for(Method method: target.getClass().getDeclaredMethods()) { - Logger.REFLECTION("Adding "+method.getName()+" to internal method map."); - this.methods.put(method.getName(), method); - } - } - - @Override - public Object invoke(Object proxy, Method method, Object[] args) - throws Throwable { - long start = System.nanoTime(); - Object result = methods.get(method.getName()).invoke(target, args); - long elapsed = System.nanoTime() - start; - Logger.INFO("[Debug] Executed "+method.getName()+" in "+elapsed+" ns"); - return result; - } - } - - - /* - public static class ProxyListener implements java.lang.reflect.InvocationHandler { - - public static Object IMaterialHandlerProxy; - - ProxyListener(){ - - Logger.REFLECTION("Failed setting IMaterialHandler Proxy instance."); - } - - //Loading the class at runtime - public static void main(String[] args) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException, ClassNotFoundException { - Class<?> someInterface = ReflectionUtils.getClass("gregtech.api.interfaces.IMaterialHandler"); - Object instance = Proxy.newProxyInstance(someInterface.getClassLoader(), new Class<?>[]{someInterface}, new InvocationHandler() { - - @Override - public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { - //Handle the invocations - if(method.getName().equals("onMaterialsInit")){ - Logger.REFLECTION("Invoked onMaterialsInit() via IMaterialHandler proxy"); - return 1; - } - else if(method.getName().equals("onComponentInit")){ - Logger.REFLECTION("Invoked onComponentInit() via IMaterialHandler proxy"); - return 2; - } - else if(method.getName().equals("onComponentIteration")){ - Logger.REFLECTION("Invoked onComponentIteration() via IMaterialHandler proxy"); - return 3; - } - else { - return -1; - } - } - }); - System.out.println(instance.getClass().getDeclaredMethod("someMethod", (Class<?>[])null).invoke(instance, new Object[]{})); - } - - private static class MaterialHandler implements InvocationHandler { - private final Object original; - - public MaterialHandler(Object original) { - this.original = original; - } - - @Override - public Object invoke(Object proxy, Method method, Object[] args) - throws IllegalAccessException, IllegalArgumentException, - InvocationTargetException { - System.out.println("BEFORE"); - method.invoke(original, args); - System.out.println("AFTER"); - return null; - } - } - - public static void init(){ - - Class<?> someInterface = ReflectionUtils.getClass("gregtech.api.interfaces.IMaterialHandler"); - GT_Material_Loader original = GT_Material_Loader.instance; - MaterialHandler handler = new MaterialHandler(original); - - Object f = Proxy.newProxyInstance(someInterface.getClassLoader(), - new Class[] { someInterface }, - handler); - - f.originalMethod("Hallo"); - } - - - - } - - */ + private static volatile GT_Material_Loader instance = new GT_Material_Loader(); + private volatile Object mProxyObject; + private static AutoMap<Materials> mMaterials = new AutoMap<Materials>(); + private static volatile boolean mHasRun = false; + + public synchronized GT_Material_Loader getInstance() { + return GT_Material_Loader.instance; + } + + public synchronized boolean getRunAbility() { + return (mHasRun ? false : true); + } + + public synchronized void setRunAbility(boolean b) { + mHasRun = Utils.invertBoolean(b); + } + + public GT_Material_Loader() { + if (getRunAbility()) { + // Set Singleton Instance + instance = this; + + // Try Reflectively add ourselves to the GT loader. + Class mInterface = ReflectionUtils.getClass("gregtech.api.interfaces.IMaterialHandler"); + if (CORE.MAIN_GREGTECH_5U_EXPERIMENTAL_FORK && mInterface != null) { + + // Make this class Dynamically implement IMaterialHandler + if (mProxyObject == null) { + mProxyObject = Proxy.newProxyInstance( + mInterface.getClassLoader(), new Class[] {mInterface}, new MaterialHandler(getInstance())); + } + + if (ReflectionUtils.invoke( + Materials.class, + "add", + new Class[] {ReflectionUtils.getClass("gregtech.api.interfaces.IMaterialHandler")}, + new Object[] {mProxyObject})) { + Logger.REFLECTION("Successfully invoked add, on the proxied object implementing IMaterialHandler."); + + Logger.REFLECTION("Examining Proxy to ensure it implements the correct Interface."); + Class[] i = mProxyObject.getClass().getInterfaces(); + for (int r = 0; r < i.length; r++) { + Logger.REFLECTION("Contains " + i[r].getCanonicalName() + "."); + if (i[r] == mInterface) { + Logger.REFLECTION("Found gregtech.api.interfaces.IMaterialHandler. This Proxy is valid."); + } + } + } else { + Logger.REFLECTION("Failed to invoke add, on the proxied object implementing IMaterialHandler."); + } + } + // Materials.add(this); + + // Stupid shit running twice, I don't think so. + setRunAbility(false); + } + } + + public void onMaterialsInit() { + Logger.DEBUG_MATERIALS("onMaterialsInit()"); + } + + public void onComponentInit() { + Logger.DEBUG_MATERIALS("onComponentInit()"); + if (!mMaterials.isEmpty()) { + Logger.DEBUG_MATERIALS("Found " + mMaterials.size() + " materials to re-enable."); + for (Materials M : mMaterials.values()) { + String name = MaterialUtils.getMaterialName(M); + Logger.DEBUG_MATERIALS("Trying to enable " + name + "."); + boolean success = tryEnableAllComponentsForMaterial(M); + if (success) { + Logger.DEBUG_MATERIALS("Success! Enabled " + name + "."); + } else { + Logger.DEBUG_MATERIALS("Failure... Did not enable " + name + "."); + } + } + } + } + + public void onComponentIteration(Materials aMaterial) { + Logger.DEBUG_MATERIALS("onComponentIteration()"); + } + + public synchronized boolean enableMaterial(Materials m) { + if (mMaterials.setValue(m)) { + Logger.DEBUG_MATERIALS("Added " + MaterialUtils.getMaterialName(m) + " to internal Map."); + return true; + } + Logger.DEBUG_MATERIALS("Failed to add " + MaterialUtils.getMaterialName(m) + " to internal Map."); + return false; + } + + /* + * Static internal handler methods + */ + + private static synchronized boolean tryEnableMaterial(Materials mMaterial) { + if (!CORE.MAIN_GREGTECH_5U_EXPERIMENTAL_FORK) { + return false; + } + + boolean value = ReflectionUtils.setField(mMaterial, "mHasParentMod", true); + if (value) { + Logger.DEBUG_MATERIALS("Set mHasParentMod true for " + mMaterial.mDefaultLocalName); + } else { + Logger.DEBUG_MATERIALS("Failed to set mHasParentMod true for " + mMaterial.mDefaultLocalName); + } + return value; + } + + private static synchronized boolean tryEnableMaterialPart(OrePrefixes prefix, Materials mMaterial) { + if (!CORE.MAIN_GREGTECH_5U_EXPERIMENTAL_FORK) { + return false; + } + try { + Method enableComponent = ReflectionUtils.getClass("gregtech.api.enums.OrePrefixes") + .getDeclaredMethod("enableComponent", Materials.class); + enableComponent.invoke(prefix, mMaterial); + Logger.DEBUG_MATERIALS("Enabled " + prefix.name() + " for " + mMaterial.mDefaultLocalName + "."); + return true; + } catch (IllegalAccessException + | IllegalArgumentException + | InvocationTargetException + | NoSuchMethodException + | SecurityException error) { + Logger.DEBUG_MATERIALS("Failed to enabled " + prefix.name() + " for " + mMaterial.mDefaultLocalName + + ". Caught " + error.getCause().toString() + "."); + error.printStackTrace(); + } + Logger.DEBUG_MATERIALS("Did not enable " + prefix.name() + " for " + mMaterial.mDefaultLocalName + + ". Report this error to Alkalus on Github."); + return false; + } + + private static synchronized boolean tryEnableAllComponentsForMaterial(Materials material) { + if (!CORE.MAIN_GREGTECH_5U_EXPERIMENTAL_FORK) { + return false; + } + try { + tryEnableMaterial(material); + int mValid = 0; + for (OrePrefixes ore : OrePrefixes.values()) { + if (tryEnableMaterialPart(ore, material)) { + mValid++; + } + } + if (mValid > 0) { + Logger.DEBUG_MATERIALS( + "Success - Re-enabled all components for " + MaterialUtils.getMaterialName(material)); + } else { + Logger.DEBUG_MATERIALS( + "Failure - Did not enable any components for " + MaterialUtils.getMaterialName(material)); + } + return mValid > 0; + } catch (SecurityException | IllegalArgumentException e) { + Logger.DEBUG_MATERIALS("Total Failure - Unable to re-enable " + MaterialUtils.getMaterialName(material) + + ". Most likely an IllegalArgumentException, but small chance it's a SecurityException."); + return false; + } + } + + /** + * Special Dynamic Interface Class + */ + public class MaterialHandler implements InvocationHandler { + + private final Map<String, Method> methods = new HashMap<String, Method>(); + private Object target; + + public MaterialHandler(Object target) { + Logger.REFLECTION("Created a Proxy Interface which implements IMaterialHandler."); + this.target = target; + for (Method method : target.getClass().getDeclaredMethods()) { + Logger.REFLECTION("Adding " + method.getName() + " to internal method map."); + this.methods.put(method.getName(), method); + } + } + + @Override + public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { + long start = System.nanoTime(); + Object result = methods.get(method.getName()).invoke(target, args); + long elapsed = System.nanoTime() - start; + Logger.INFO("[Debug] Executed " + method.getName() + " in " + elapsed + " ns"); + return result; + } + } + + /* + public static class ProxyListener implements java.lang.reflect.InvocationHandler { + + public static Object IMaterialHandlerProxy; + + ProxyListener(){ + + Logger.REFLECTION("Failed setting IMaterialHandler Proxy instance."); + } + + //Loading the class at runtime + public static void main(String[] args) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException, ClassNotFoundException { + Class<?> someInterface = ReflectionUtils.getClass("gregtech.api.interfaces.IMaterialHandler"); + Object instance = Proxy.newProxyInstance(someInterface.getClassLoader(), new Class<?>[]{someInterface}, new InvocationHandler() { + + @Override + public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { + //Handle the invocations + if(method.getName().equals("onMaterialsInit")){ + Logger.REFLECTION("Invoked onMaterialsInit() via IMaterialHandler proxy"); + return 1; + } + else if(method.getName().equals("onComponentInit")){ + Logger.REFLECTION("Invoked onComponentInit() via IMaterialHandler proxy"); + return 2; + } + else if(method.getName().equals("onComponentIteration")){ + Logger.REFLECTION("Invoked onComponentIteration() via IMaterialHandler proxy"); + return 3; + } + else { + return -1; + } + } + }); + System.out.println(instance.getClass().getDeclaredMethod("someMethod", (Class<?>[])null).invoke(instance, new Object[]{})); + } + + private static class MaterialHandler implements InvocationHandler { + private final Object original; + + public MaterialHandler(Object original) { + this.original = original; + } + + @Override + public Object invoke(Object proxy, Method method, Object[] args) + throws IllegalAccessException, IllegalArgumentException, + InvocationTargetException { + System.out.println("BEFORE"); + method.invoke(original, args); + System.out.println("AFTER"); + return null; + } + } + + public static void init(){ + + Class<?> someInterface = ReflectionUtils.getClass("gregtech.api.interfaces.IMaterialHandler"); + GT_Material_Loader original = GT_Material_Loader.instance; + MaterialHandler handler = new MaterialHandler(original); + + Object f = Proxy.newProxyInstance(someInterface.getClassLoader(), + new Class[] { someInterface }, + handler); + + f.originalMethod("Hallo"); + } + + + + } + + */ } diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/Gregtech_Blocks.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/Gregtech_Blocks.java index 724f352975..47257b404f 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/Gregtech_Blocks.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/Gregtech_Blocks.java @@ -5,20 +5,19 @@ import gtPlusPlus.xmod.gregtech.common.blocks.*; public class Gregtech_Blocks { - public static void run(){ - - //Casing Blocks - ModBlocks.blockCasingsMisc = new GregtechMetaCasingBlocks(); - ModBlocks.blockCasings2Misc = new GregtechMetaCasingBlocks2(); - ModBlocks.blockCasings3Misc = new GregtechMetaCasingBlocks3(); - ModBlocks.blockCasings4Misc = new GregtechMetaCasingBlocks4(); - ModBlocks.blockCasings5Misc = new GregtechMetaCasingBlocks5(); + public static void run() { - ModBlocks.blockCasingsTieredGTPP = new GregtechMetaTieredCasingBlocks1(); - ModBlocks.blockSpecialMultiCasings = new GregtechMetaSpecialMultiCasings(); - ModBlocks.blockSpecialMultiCasings2 = new GregtechMetaSpecialMultiCasings2(); - ModBlocks.blockCustomMachineCasings = new GregtechMetaSpecialMachineCasings(); - ModBlocks.blockCustomPipeGearCasings = new GregtechMetaCasingBlocksPipeGearbox(); + // Casing Blocks + ModBlocks.blockCasingsMisc = new GregtechMetaCasingBlocks(); + ModBlocks.blockCasings2Misc = new GregtechMetaCasingBlocks2(); + ModBlocks.blockCasings3Misc = new GregtechMetaCasingBlocks3(); + ModBlocks.blockCasings4Misc = new GregtechMetaCasingBlocks4(); + ModBlocks.blockCasings5Misc = new GregtechMetaCasingBlocks5(); - } + ModBlocks.blockCasingsTieredGTPP = new GregtechMetaTieredCasingBlocks1(); + ModBlocks.blockSpecialMultiCasings = new GregtechMetaSpecialMultiCasings(); + ModBlocks.blockSpecialMultiCasings2 = new GregtechMetaSpecialMultiCasings2(); + ModBlocks.blockCustomMachineCasings = new GregtechMetaSpecialMachineCasings(); + ModBlocks.blockCustomPipeGearCasings = new GregtechMetaCasingBlocksPipeGearbox(); + } } diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/ProcessingAngleGrinder.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/ProcessingAngleGrinder.java index 51316f024a..f43a255534 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/ProcessingAngleGrinder.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/ProcessingAngleGrinder.java @@ -1,4 +1,3 @@ - package gtPlusPlus.xmod.gregtech.loaders; import gregtech.api.enums.GT_Values; @@ -20,116 +19,132 @@ import gtPlusPlus.xmod.gregtech.common.items.MetaGeneratedGregtechTools; import net.minecraft.item.ItemStack; public class ProcessingAngleGrinder implements Interface_OreRecipeRegistrator, Runnable { - public ProcessingAngleGrinder() { - GregtechOrePrefixes.toolAngleGrinder.add(this); - } + public ProcessingAngleGrinder() { + GregtechOrePrefixes.toolAngleGrinder.add(this); + } + + @Override + public void registerOre( + final GregtechOrePrefixes aPrefix, + final Materials aMaterial, + final String aOreDictName, + final String aModName, + final ItemStack aStack) { + if ((aMaterial != Materials.Stone) && (aMaterial != Materials.Flint)) { + if (aMaterial != Materials.Rubber) { + if ((!aMaterial.contains(SubTag.WOOD)) + && (!aMaterial.contains(SubTag.BOUNCY)) + && (!aMaterial.contains(SubTag.NO_SMASHING))) {} + } + } + } - @Override - public void registerOre(final GregtechOrePrefixes aPrefix, final Materials aMaterial, final String aOreDictName, - final String aModName, final ItemStack aStack) { - if ((aMaterial != Materials.Stone) && (aMaterial != Materials.Flint)) { - if (aMaterial != Materials.Rubber) { - if ((!aMaterial.contains(SubTag.WOOD)) && (!aMaterial.contains(SubTag.BOUNCY)) - && (!aMaterial.contains(SubTag.NO_SMASHING))) { - - } - } - } - } + @Override + public void registerOre( + final GregtechOrePrefixes aPrefix, + final GT_Materials aMaterial, + final String aOreDictName, + final String aModName, + final ItemStack aStack) { + // TODO Auto-generated method stub - @Override - public void registerOre(final GregtechOrePrefixes aPrefix, final GT_Materials aMaterial, final String aOreDictName, - final String aModName, final ItemStack aStack) { - // TODO Auto-generated method stub + } - } + public void materialsLoops() { + final Materials[] i = Materials.values(); + final int size = i.length; + Logger.MATERIALS("Materials to attempt tool gen. with: " + size); + int used = 0; + Materials aMaterial = null; + for (int r = 0; r < size; r++) { + aMaterial = i[r]; + if ((aMaterial != Materials.Stone) + && (aMaterial != Materials.Flint) + && (aMaterial != Materials.Rubber) + && (aMaterial != Materials._NULL)) { + if ((!aMaterial.contains(SubTag.WOOD)) + && (!aMaterial.contains(SubTag.BOUNCY)) + && (!aMaterial.contains(SubTag.NO_SMASHING)) + && (!aMaterial.contains(SubTag.TRANSPARENT)) + && (!aMaterial.contains(SubTag.FLAMMABLE)) + && (!aMaterial.contains(SubTag.MAGICAL)) + && (!aMaterial.contains(SubTag.NO_SMELTING))) { + Logger.MATERIALS("Generating Angle Grinder from " + MaterialUtils.getMaterialName(aMaterial)); + // Input 1 - public void materialsLoops() { - final Materials[] i = Materials.values(); - final int size = i.length; - Logger.MATERIALS("Materials to attempt tool gen. with: " + size); - int used = 0; - Materials aMaterial = null; - for (int r = 0; r < size; r++) { - aMaterial = i[r]; - if ((aMaterial != Materials.Stone) && (aMaterial != Materials.Flint) && (aMaterial != Materials.Rubber) - && (aMaterial != Materials._NULL)) { - if ((!aMaterial.contains(SubTag.WOOD)) && (!aMaterial.contains(SubTag.BOUNCY)) - && (!aMaterial.contains(SubTag.NO_SMASHING)) && (!aMaterial.contains(SubTag.TRANSPARENT)) - && (!aMaterial.contains(SubTag.FLAMMABLE)) && (!aMaterial.contains(SubTag.MAGICAL)) - && (!aMaterial.contains(SubTag.NO_SMELTING))) { - Logger.MATERIALS("Generating Angle Grinder from "+MaterialUtils.getMaterialName(aMaterial)); - // Input 1 - + final ItemStack plate = GT_OreDictUnificator.get(OrePrefixes.plate, aMaterial, 1L); + final ItemStack longrod = GT_OreDictUnificator.get(OrePrefixes.stickLong, aMaterial, 1L); - final ItemStack plate = GT_OreDictUnificator.get(OrePrefixes.plate, aMaterial, 1L); - final ItemStack longrod = GT_OreDictUnificator.get(OrePrefixes.stickLong, aMaterial, 1L); + if ((null != plate && longrod != null)) { + addRecipe(aMaterial, 1600000L, 3, ItemList.Battery_RE_HV_Lithium.get(1)); + addRecipe(aMaterial, 1200000L, 3, ItemList.Battery_RE_HV_Cadmium.get(1)); + addRecipe(aMaterial, 800000L, 3, ItemList.Battery_RE_HV_Sodium.get(1)); + used++; + } else { + Logger.MATERIALS( + "Unable to generate Angle Grinder from " + MaterialUtils.getMaterialName(aMaterial) + + ", Plate or Long Rod may be invalid. Invalid | Plate? " + (plate == null) + + " | Rod? " + (longrod == null) + " |"); + } + // GT_ModHandler.addCraftingRecipe(, + // GT_ModHandler.RecipeBits.DO_NOT_CHECK_FOR_COLLISIONS | + // GT_ModHandler.RecipeBits.BUFFERED, new Object[]{"P H", "PIP", " I ", + // Character.valueOf('I'), OrePrefixes.ingot.get(aMaterial), + // Character.valueOf('P'), OrePrefixes.plate.get(aMaterial), + // Character.valueOf('H'), OrePrefixes.toolHeadHammer.get(aMaterial)}); + } else { + Logger.MATERIALS( + "Unable to generate Angle Grinder from " + MaterialUtils.getMaterialName(aMaterial)); + } + } else { + Logger.MATERIALS("Unable to generate Angle Grinder from " + MaterialUtils.getMaterialName(aMaterial)); + } + } - if ((null != plate && longrod != null)) { - addRecipe(aMaterial, 1600000L, 3, ItemList.Battery_RE_HV_Lithium.get(1)); - addRecipe(aMaterial, 1200000L, 3, ItemList.Battery_RE_HV_Cadmium.get(1)); - addRecipe(aMaterial, 800000L, 3, ItemList.Battery_RE_HV_Sodium.get(1)); - used++; - } else { - Logger.MATERIALS("Unable to generate Angle Grinder from "+MaterialUtils.getMaterialName(aMaterial)+", Plate or Long Rod may be invalid. Invalid | Plate? "+(plate == null) +" | Rod? "+(longrod == null)+" |"); - } - // GT_ModHandler.addCraftingRecipe(, - // GT_ModHandler.RecipeBits.DO_NOT_CHECK_FOR_COLLISIONS | - // GT_ModHandler.RecipeBits.BUFFERED, new Object[]{"P H", "PIP", " I ", - // Character.valueOf('I'), OrePrefixes.ingot.get(aMaterial), - // Character.valueOf('P'), OrePrefixes.plate.get(aMaterial), - // Character.valueOf('H'), OrePrefixes.toolHeadHammer.get(aMaterial)}); - } else { - Logger.MATERIALS("Unable to generate Angle Grinder from "+MaterialUtils.getMaterialName(aMaterial)); - } - } else { - Logger.MATERIALS("Unable to generate Angle Grinder from "+MaterialUtils.getMaterialName(aMaterial)); - } + Logger.INFO("Materials used for tool gen: " + used); + } - } + @Override + public void run() { + Logger.INFO("Generating Angle Grinders for all valid GT Materials."); + this.materialsLoops(); + } - Logger.INFO("Materials used for tool gen: " + used); - } + public boolean addRecipe(Materials aMaterial, long aBatteryStorage, int aVoltageTier, ItemStack aBattery) { - @Override - public void run() { - Logger.INFO("Generating Angle Grinders for all valid GT Materials."); - this.materialsLoops(); - } - - public boolean addRecipe(Materials aMaterial, long aBatteryStorage, int aVoltageTier, ItemStack aBattery) { - - ItemStack aOutputStack = MetaGeneratedGregtechTools.INSTANCE.getToolWithStats( - MetaGeneratedGregtechTools.ANGLE_GRINDER, - 1, - aMaterial, - Materials.Titanium, - new long[]{aBatteryStorage, GT_Values.V[aVoltageTier], 3L, -1L}); - - + ItemStack aOutputStack = MetaGeneratedGregtechTools.INSTANCE.getToolWithStats( + MetaGeneratedGregtechTools.ANGLE_GRINDER, 1, aMaterial, Materials.Titanium, new long[] { + aBatteryStorage, GT_Values.V[aVoltageTier], 3L, -1L + }); - long aDura = MetaGeneratedGregtechTools.getToolMaxDamage(aOutputStack); - if (aDura <= 32000) { - Logger.MATERIALS("Unable to generate Angle Grinder from "+MaterialUtils.getMaterialName(aMaterial)+", Durability: "+aDura); - return false; - } - - return GT_ModHandler.addCraftingRecipe( - aOutputStack, - RecipeBits.DISMANTLEABLE | RecipeBits.DO_NOT_CHECK_FOR_COLLISIONS | RecipeBits.BUFFERED, - new Object[]{ - "SXL", - "GMG", - "PBP", - 'X', ItemList.Component_Grinder_Tungsten.get(1), - 'M', CI.getElectricMotor(aVoltageTier, 1), - 'S', OrePrefixes.screw.get(Materials.Titanium), - 'L', OrePrefixes.stickLong.get(aMaterial), - 'P', OrePrefixes.plate.get(aMaterial), - 'G', ELEMENT.STANDALONE.BLACK_METAL.getGear(1), - 'B', aBattery - }); - - } + long aDura = MetaGeneratedGregtechTools.getToolMaxDamage(aOutputStack); + if (aDura <= 32000) { + Logger.MATERIALS("Unable to generate Angle Grinder from " + MaterialUtils.getMaterialName(aMaterial) + + ", Durability: " + aDura); + return false; + } -}
\ No newline at end of file + return GT_ModHandler.addCraftingRecipe( + aOutputStack, + RecipeBits.DISMANTLEABLE | RecipeBits.DO_NOT_CHECK_FOR_COLLISIONS | RecipeBits.BUFFERED, + new Object[] { + "SXL", + "GMG", + "PBP", + 'X', + ItemList.Component_Grinder_Tungsten.get(1), + 'M', + CI.getElectricMotor(aVoltageTier, 1), + 'S', + OrePrefixes.screw.get(Materials.Titanium), + 'L', + OrePrefixes.stickLong.get(aMaterial), + 'P', + OrePrefixes.plate.get(aMaterial), + 'G', + ELEMENT.STANDALONE.BLACK_METAL.getGear(1), + 'B', + aBattery + }); + } +} diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/ProcessingElectricButcherKnife.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/ProcessingElectricButcherKnife.java index 9fe9ad7816..43c9d31727 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/ProcessingElectricButcherKnife.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/ProcessingElectricButcherKnife.java @@ -1,4 +1,3 @@ - package gtPlusPlus.xmod.gregtech.loaders; import gregtech.api.enums.GT_Values; @@ -6,12 +5,9 @@ import gregtech.api.enums.ItemList; import gregtech.api.enums.Materials; import gregtech.api.enums.OrePrefixes; import gregtech.api.enums.SubTag; -import gregtech.api.util.GT_ModHandler; -import gregtech.api.util.GT_ModHandler.RecipeBits; import gregtech.api.util.GT_OreDictUnificator; import gregtech.common.items.GT_MetaGenerated_Tool_01; import gtPlusPlus.api.objects.Logger; -import gtPlusPlus.core.material.ELEMENT; import gtPlusPlus.core.recipe.common.CI; import gtPlusPlus.core.util.minecraft.MaterialUtils; import gtPlusPlus.core.util.minecraft.RecipeUtils; @@ -22,113 +18,126 @@ import gtPlusPlus.xmod.gregtech.common.items.MetaGeneratedGregtechTools; import net.minecraft.item.ItemStack; public class ProcessingElectricButcherKnife implements Interface_OreRecipeRegistrator, Runnable { - public ProcessingElectricButcherKnife() { - GregtechOrePrefixes.toolElectricButcherKnife.add(this); - } + public ProcessingElectricButcherKnife() { + GregtechOrePrefixes.toolElectricButcherKnife.add(this); + } + + @Override + public void registerOre( + final GregtechOrePrefixes aPrefix, + final Materials aMaterial, + final String aOreDictName, + final String aModName, + final ItemStack aStack) { + if ((aMaterial != Materials.Stone) && (aMaterial != Materials.Flint)) { + if (aMaterial != Materials.Rubber) { + if ((!aMaterial.contains(SubTag.WOOD)) + && (!aMaterial.contains(SubTag.BOUNCY)) + && (!aMaterial.contains(SubTag.NO_SMASHING))) {} + } + } + } + + @Override + public void registerOre( + final GregtechOrePrefixes aPrefix, + final GT_Materials aMaterial, + final String aOreDictName, + final String aModName, + final ItemStack aStack) { + // TODO Auto-generated method stub - @Override - public void registerOre(final GregtechOrePrefixes aPrefix, final Materials aMaterial, final String aOreDictName, - final String aModName, final ItemStack aStack) { - if ((aMaterial != Materials.Stone) && (aMaterial != Materials.Flint)) { - if (aMaterial != Materials.Rubber) { - if ((!aMaterial.contains(SubTag.WOOD)) && (!aMaterial.contains(SubTag.BOUNCY)) - && (!aMaterial.contains(SubTag.NO_SMASHING))) { - - } - } - } - } + } - @Override - public void registerOre(final GregtechOrePrefixes aPrefix, final GT_Materials aMaterial, final String aOreDictName, - final String aModName, final ItemStack aStack) { - // TODO Auto-generated method stub + public void materialsLoops() { + final Materials[] i = Materials.values(); + final int size = i.length; + Logger.MATERIALS("Materials to attempt tool gen. with: " + size); + int used = 0; + Materials aMaterial = null; + for (int r = 0; r < size; r++) { + aMaterial = i[r]; + if ((aMaterial != Materials.Stone) + && (aMaterial != Materials.Flint) + && (aMaterial != Materials.Rubber) + && (aMaterial != Materials._NULL)) { + if ((!aMaterial.contains(SubTag.WOOD)) + && (!aMaterial.contains(SubTag.BOUNCY)) + && (!aMaterial.contains(SubTag.NO_SMASHING)) + && (!aMaterial.contains(SubTag.TRANSPARENT)) + && (!aMaterial.contains(SubTag.FLAMMABLE)) + && (!aMaterial.contains(SubTag.MAGICAL)) + && (!aMaterial.contains(SubTag.NO_SMELTING))) { + Logger.MATERIALS( + "Generating Electric Butcher Knife from " + MaterialUtils.getMaterialName(aMaterial)); + // Input 1 - } + final ItemStack plate = GT_OreDictUnificator.get(OrePrefixes.plate, aMaterial, 1L); + final ItemStack screw = GT_OreDictUnificator.get(OrePrefixes.screw, aMaterial, 1L); - public void materialsLoops() { - final Materials[] i = Materials.values(); - final int size = i.length; - Logger.MATERIALS("Materials to attempt tool gen. with: " + size); - int used = 0; - Materials aMaterial = null; - for (int r = 0; r < size; r++) { - aMaterial = i[r]; - if ((aMaterial != Materials.Stone) && (aMaterial != Materials.Flint) && (aMaterial != Materials.Rubber) - && (aMaterial != Materials._NULL)) { - if ((!aMaterial.contains(SubTag.WOOD)) && (!aMaterial.contains(SubTag.BOUNCY)) - && (!aMaterial.contains(SubTag.NO_SMASHING)) && (!aMaterial.contains(SubTag.TRANSPARENT)) - && (!aMaterial.contains(SubTag.FLAMMABLE)) && (!aMaterial.contains(SubTag.MAGICAL)) - && (!aMaterial.contains(SubTag.NO_SMELTING))) { - Logger.MATERIALS("Generating Electric Butcher Knife from "+MaterialUtils.getMaterialName(aMaterial)); - // Input 1 - + if ((null != plate) && screw != null) { + addRecipe(aMaterial, 1600000L, 3, ItemList.Battery_RE_HV_Lithium.get(1)); + addRecipe(aMaterial, 1200000L, 3, ItemList.Battery_RE_HV_Cadmium.get(1)); + addRecipe(aMaterial, 800000L, 3, ItemList.Battery_RE_HV_Sodium.get(1)); + used++; + } else { + Logger.MATERIALS("Unable to generate Electric Butcher Knife from " + + MaterialUtils.getMaterialName(aMaterial) + + ", Plate or Long Rod may be invalid. Invalid | Plate? " + (plate == null) + " | Rod? " + + " |"); + } + // GT_ModHandler.addCraftingRecipe(, + // GT_ModHandler.RecipeBits.DO_NOT_CHECK_FOR_COLLISIONS | + // GT_ModHandler.RecipeBits.BUFFERED, new Object[]{"P H", "PIP", " I ", + // Character.valueOf('I'), OrePrefixes.ingot.get(aMaterial), + // Character.valueOf('P'), OrePrefixes.plate.get(aMaterial), + // Character.valueOf('H'), OrePrefixes.toolHeadHammer.get(aMaterial)}); + } else { + Logger.MATERIALS("Unable to generate Electric Butcher Knife from " + + MaterialUtils.getMaterialName(aMaterial)); + } + } else { + Logger.MATERIALS( + "Unable to generate Electric Butcher Knife from " + MaterialUtils.getMaterialName(aMaterial)); + } + } - final ItemStack plate = GT_OreDictUnificator.get(OrePrefixes.plate, aMaterial, 1L); - final ItemStack screw = GT_OreDictUnificator.get(OrePrefixes.screw, aMaterial, 1L); + Logger.INFO("Materials used for tool gen: " + used); + } - if ((null != plate) && screw != null) { - addRecipe(aMaterial, 1600000L, 3, ItemList.Battery_RE_HV_Lithium.get(1)); - addRecipe(aMaterial, 1200000L, 3, ItemList.Battery_RE_HV_Cadmium.get(1)); - addRecipe(aMaterial, 800000L, 3, ItemList.Battery_RE_HV_Sodium.get(1)); - used++; - } else { - Logger.MATERIALS("Unable to generate Electric Butcher Knife from "+MaterialUtils.getMaterialName(aMaterial)+", Plate or Long Rod may be invalid. Invalid | Plate? "+(plate == null) +" | Rod? "+" |"); - } - // GT_ModHandler.addCraftingRecipe(, - // GT_ModHandler.RecipeBits.DO_NOT_CHECK_FOR_COLLISIONS | - // GT_ModHandler.RecipeBits.BUFFERED, new Object[]{"P H", "PIP", " I ", - // Character.valueOf('I'), OrePrefixes.ingot.get(aMaterial), - // Character.valueOf('P'), OrePrefixes.plate.get(aMaterial), - // Character.valueOf('H'), OrePrefixes.toolHeadHammer.get(aMaterial)}); - } else { - Logger.MATERIALS("Unable to generate Electric Butcher Knife from "+MaterialUtils.getMaterialName(aMaterial)); - } - } else { - Logger.MATERIALS("Unable to generate Electric Butcher Knife from "+MaterialUtils.getMaterialName(aMaterial)); - } + @Override + public void run() { + Logger.INFO("Generating Electric Butcher Knives for all valid GT Materials."); + this.materialsLoops(); + } - } + public boolean addRecipe(Materials aMaterial, long aBatteryStorage, int aVoltageTier, ItemStack aBattery) { - Logger.INFO("Materials used for tool gen: " + used); - } + ItemStack aOutputStack = MetaGeneratedGregtechTools.INSTANCE.getToolWithStats( + MetaGeneratedGregtechTools.ELECTRIC_BUTCHER_KNIFE, 1, aMaterial, Materials.Titanium, new long[] { + aBatteryStorage, GT_Values.V[aVoltageTier], 3L, -1L + }); - @Override - public void run() { - Logger.INFO("Generating Electric Butcher Knives for all valid GT Materials."); - this.materialsLoops(); - } - - public boolean addRecipe(Materials aMaterial, long aBatteryStorage, int aVoltageTier, ItemStack aBattery) { - - ItemStack aOutputStack = MetaGeneratedGregtechTools.INSTANCE.getToolWithStats( - MetaGeneratedGregtechTools.ELECTRIC_BUTCHER_KNIFE, - 1, - aMaterial, - Materials.Titanium, - new long[]{aBatteryStorage, GT_Values.V[aVoltageTier], 3L, -1L}); - - ItemStack aInputCutter = GT_MetaGenerated_Tool_01.INSTANCE.getToolWithStats( - GT_MetaGenerated_Tool_01.BUTCHERYKNIFE, - 1, - aMaterial, - aMaterial, - null); + ItemStack aInputCutter = GT_MetaGenerated_Tool_01.INSTANCE.getToolWithStats( + GT_MetaGenerated_Tool_01.BUTCHERYKNIFE, 1, aMaterial, aMaterial, null); - long aDura = MetaGeneratedGregtechTools.getToolMaxDamage(aOutputStack); - if (aDura <= 32000) { - Logger.MATERIALS("Unable to generate Electric Butcher Knife from "+MaterialUtils.getMaterialName(aMaterial)+", Durability: "+aDura); - return false; - } - - - - return RecipeUtils.addShapedRecipe( - OrePrefixes.wireFine.get(Materials.Electrum), aInputCutter, OrePrefixes.wireFine.get(Materials.Electrum), - OrePrefixes.plate.get(aMaterial), CI.getElectricMotor(aVoltageTier, 1), OrePrefixes.plate.get(aMaterial), - OrePrefixes.screw.get(aMaterial), aBattery, OrePrefixes.screw.get(aMaterial), - aOutputStack); - - } + long aDura = MetaGeneratedGregtechTools.getToolMaxDamage(aOutputStack); + if (aDura <= 32000) { + Logger.MATERIALS("Unable to generate Electric Butcher Knife from " + + MaterialUtils.getMaterialName(aMaterial) + ", Durability: " + aDura); + return false; + } -}
\ No newline at end of file + return RecipeUtils.addShapedRecipe( + OrePrefixes.wireFine.get(Materials.Electrum), + aInputCutter, + OrePrefixes.wireFine.get(Materials.Electrum), + OrePrefixes.plate.get(aMaterial), + CI.getElectricMotor(aVoltageTier, 1), + OrePrefixes.plate.get(aMaterial), + OrePrefixes.screw.get(aMaterial), + aBattery, + OrePrefixes.screw.get(aMaterial), + aOutputStack); + } +} diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/ProcessingElectricLighter.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/ProcessingElectricLighter.java index 5f6c5a0427..5d6e87b204 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/ProcessingElectricLighter.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/ProcessingElectricLighter.java @@ -1,4 +1,3 @@ - package gtPlusPlus.xmod.gregtech.loaders; import gregtech.api.enums.GT_Values; @@ -6,8 +5,6 @@ import gregtech.api.enums.ItemList; import gregtech.api.enums.Materials; import gregtech.api.enums.OrePrefixes; import gregtech.api.enums.SubTag; -import gregtech.api.util.GT_ModHandler; -import gregtech.api.util.GT_ModHandler.RecipeBits; import gregtech.api.util.GT_OreDictUnificator; import gregtech.common.items.GT_MetaGenerated_Tool_01; import gtPlusPlus.api.objects.Logger; @@ -22,110 +19,124 @@ import gtPlusPlus.xmod.gregtech.common.items.MetaGeneratedGregtechTools; import net.minecraft.item.ItemStack; public class ProcessingElectricLighter implements Interface_OreRecipeRegistrator, Runnable { - public ProcessingElectricLighter() { - GregtechOrePrefixes.toolElectricLighter.add(this); - } + public ProcessingElectricLighter() { + GregtechOrePrefixes.toolElectricLighter.add(this); + } + + @Override + public void registerOre( + final GregtechOrePrefixes aPrefix, + final Materials aMaterial, + final String aOreDictName, + final String aModName, + final ItemStack aStack) { + if ((aMaterial != Materials.Stone) && (aMaterial != Materials.Flint)) { + if (aMaterial != Materials.Rubber) { + if ((!aMaterial.contains(SubTag.WOOD)) + && (!aMaterial.contains(SubTag.BOUNCY)) + && (!aMaterial.contains(SubTag.NO_SMASHING))) {} + } + } + } + + @Override + public void registerOre( + final GregtechOrePrefixes aPrefix, + final GT_Materials aMaterial, + final String aOreDictName, + final String aModName, + final ItemStack aStack) { + // TODO Auto-generated method stub - @Override - public void registerOre(final GregtechOrePrefixes aPrefix, final Materials aMaterial, final String aOreDictName, - final String aModName, final ItemStack aStack) { - if ((aMaterial != Materials.Stone) && (aMaterial != Materials.Flint)) { - if (aMaterial != Materials.Rubber) { - if ((!aMaterial.contains(SubTag.WOOD)) && (!aMaterial.contains(SubTag.BOUNCY)) - && (!aMaterial.contains(SubTag.NO_SMASHING))) { - - } - } - } - } + } - @Override - public void registerOre(final GregtechOrePrefixes aPrefix, final GT_Materials aMaterial, final String aOreDictName, - final String aModName, final ItemStack aStack) { - // TODO Auto-generated method stub + public void materialsLoops() { + final Materials[] i = Materials.values(); + final int size = i.length; + Logger.MATERIALS("Materials to attempt tool gen. with: " + size); + int used = 0; + Materials aMaterial = null; + for (int r = 0; r < size; r++) { + aMaterial = i[r]; + if ((aMaterial != Materials.Stone) + && (aMaterial != Materials.Flint) + && (aMaterial != Materials.Rubber) + && (aMaterial != Materials._NULL)) { + if ((!aMaterial.contains(SubTag.WOOD)) + && (!aMaterial.contains(SubTag.BOUNCY)) + && (!aMaterial.contains(SubTag.NO_SMASHING)) + && (!aMaterial.contains(SubTag.TRANSPARENT)) + && (!aMaterial.contains(SubTag.FLAMMABLE)) + && (!aMaterial.contains(SubTag.MAGICAL)) + && (!aMaterial.contains(SubTag.NO_SMELTING))) { + Logger.MATERIALS("Generating Electric Lighter from " + MaterialUtils.getMaterialName(aMaterial)); + // Input 1 - } + final ItemStack plate = GT_OreDictUnificator.get(OrePrefixes.plate, aMaterial, 1L); - public void materialsLoops() { - final Materials[] i = Materials.values(); - final int size = i.length; - Logger.MATERIALS("Materials to attempt tool gen. with: " + size); - int used = 0; - Materials aMaterial = null; - for (int r = 0; r < size; r++) { - aMaterial = i[r]; - if ((aMaterial != Materials.Stone) && (aMaterial != Materials.Flint) && (aMaterial != Materials.Rubber) - && (aMaterial != Materials._NULL)) { - if ((!aMaterial.contains(SubTag.WOOD)) && (!aMaterial.contains(SubTag.BOUNCY)) - && (!aMaterial.contains(SubTag.NO_SMASHING)) && (!aMaterial.contains(SubTag.TRANSPARENT)) - && (!aMaterial.contains(SubTag.FLAMMABLE)) && (!aMaterial.contains(SubTag.MAGICAL)) - && (!aMaterial.contains(SubTag.NO_SMELTING))) { - Logger.MATERIALS("Generating Electric Lighter from "+MaterialUtils.getMaterialName(aMaterial)); - // Input 1 - + if ((null != plate)) { + addRecipe(aMaterial, 1600000L, 3, ItemList.Battery_RE_HV_Lithium.get(1)); + addRecipe(aMaterial, 1200000L, 3, ItemList.Battery_RE_HV_Cadmium.get(1)); + addRecipe(aMaterial, 800000L, 3, ItemList.Battery_RE_HV_Sodium.get(1)); + used++; + } else { + Logger.MATERIALS( + "Unable to generate Electric Lighter from " + MaterialUtils.getMaterialName(aMaterial) + + ", Plate or Long Rod may be invalid. Invalid | Plate? " + (plate == null) + + " | Rod? " + " |"); + } + // GT_ModHandler.addCraftingRecipe(, + // GT_ModHandler.RecipeBits.DO_NOT_CHECK_FOR_COLLISIONS | + // GT_ModHandler.RecipeBits.BUFFERED, new Object[]{"P H", "PIP", " I ", + // Character.valueOf('I'), OrePrefixes.ingot.get(aMaterial), + // Character.valueOf('P'), OrePrefixes.plate.get(aMaterial), + // Character.valueOf('H'), OrePrefixes.toolHeadHammer.get(aMaterial)}); + } else { + Logger.MATERIALS( + "Unable to generate Electric Lighter from " + MaterialUtils.getMaterialName(aMaterial)); + } + } else { + Logger.MATERIALS( + "Unable to generate Electric Lighter from " + MaterialUtils.getMaterialName(aMaterial)); + } + } - final ItemStack plate = GT_OreDictUnificator.get(OrePrefixes.plate, aMaterial, 1L); + Logger.INFO("Materials used for tool gen: " + used); + } - if ((null != plate)) { - addRecipe(aMaterial, 1600000L, 3, ItemList.Battery_RE_HV_Lithium.get(1)); - addRecipe(aMaterial, 1200000L, 3, ItemList.Battery_RE_HV_Cadmium.get(1)); - addRecipe(aMaterial, 800000L, 3, ItemList.Battery_RE_HV_Sodium.get(1)); - used++; - } else { - Logger.MATERIALS("Unable to generate Electric Lighter from "+MaterialUtils.getMaterialName(aMaterial)+", Plate or Long Rod may be invalid. Invalid | Plate? "+(plate == null) +" | Rod? "+" |"); - } - // GT_ModHandler.addCraftingRecipe(, - // GT_ModHandler.RecipeBits.DO_NOT_CHECK_FOR_COLLISIONS | - // GT_ModHandler.RecipeBits.BUFFERED, new Object[]{"P H", "PIP", " I ", - // Character.valueOf('I'), OrePrefixes.ingot.get(aMaterial), - // Character.valueOf('P'), OrePrefixes.plate.get(aMaterial), - // Character.valueOf('H'), OrePrefixes.toolHeadHammer.get(aMaterial)}); - } else { - Logger.MATERIALS("Unable to generate Electric Lighter from "+MaterialUtils.getMaterialName(aMaterial)); - } - } else { - Logger.MATERIALS("Unable to generate Electric Lighter from "+MaterialUtils.getMaterialName(aMaterial)); - } + @Override + public void run() { + Logger.INFO("Generating Electric Lighters for all valid GT Materials."); + this.materialsLoops(); + } - } + public boolean addRecipe(Materials aMaterial, long aBatteryStorage, int aVoltageTier, ItemStack aBattery) { - Logger.INFO("Materials used for tool gen: " + used); - } + ItemStack aOutputStack = MetaGeneratedGregtechTools.INSTANCE.getToolWithStats( + MetaGeneratedGregtechTools.ELECTRIC_LIGHTER, 1, aMaterial, Materials.Titanium, new long[] { + aBatteryStorage, GT_Values.V[aVoltageTier], 3L, -1L + }); - @Override - public void run() { - Logger.INFO("Generating Electric Lighters for all valid GT Materials."); - this.materialsLoops(); - } - - public boolean addRecipe(Materials aMaterial, long aBatteryStorage, int aVoltageTier, ItemStack aBattery) { - - ItemStack aOutputStack = MetaGeneratedGregtechTools.INSTANCE.getToolWithStats( - MetaGeneratedGregtechTools.ELECTRIC_LIGHTER, - 1, - aMaterial, - Materials.Titanium, - new long[]{aBatteryStorage, GT_Values.V[aVoltageTier], 3L, -1L}); - - ItemStack aInputCutter = GT_MetaGenerated_Tool_01.INSTANCE.getToolWithStats( - GT_MetaGenerated_Tool_01.SOLDERING_IRON_LV, - 1, - aMaterial, - aMaterial, - null); + ItemStack aInputCutter = GT_MetaGenerated_Tool_01.INSTANCE.getToolWithStats( + GT_MetaGenerated_Tool_01.SOLDERING_IRON_LV, 1, aMaterial, aMaterial, null); - long aDura = MetaGeneratedGregtechTools.getToolMaxDamage(aOutputStack); - if (aDura <= 32000) { - Logger.MATERIALS("Unable to generate Electric Lighter from "+MaterialUtils.getMaterialName(aMaterial)+", Durability: "+aDura); - return false; - } - - return RecipeUtils.addShapedRecipe( - OrePrefixes.wireGt04.get(Materials.Gold), aInputCutter, OrePrefixes.wireGt04.get(Materials.Gold), - ELEMENT.STANDALONE.RUNITE.getPlate(1), CI.getSensor(aVoltageTier, 1), ELEMENT.STANDALONE.RUNITE.getPlate(1), - OrePrefixes.plate.get(aMaterial), aBattery, OrePrefixes.plate.get(aMaterial), - aOutputStack); - - } + long aDura = MetaGeneratedGregtechTools.getToolMaxDamage(aOutputStack); + if (aDura <= 32000) { + Logger.MATERIALS("Unable to generate Electric Lighter from " + MaterialUtils.getMaterialName(aMaterial) + + ", Durability: " + aDura); + return false; + } -}
\ No newline at end of file + return RecipeUtils.addShapedRecipe( + OrePrefixes.wireGt04.get(Materials.Gold), + aInputCutter, + OrePrefixes.wireGt04.get(Materials.Gold), + ELEMENT.STANDALONE.RUNITE.getPlate(1), + CI.getSensor(aVoltageTier, 1), + ELEMENT.STANDALONE.RUNITE.getPlate(1), + OrePrefixes.plate.get(aMaterial), + aBattery, + OrePrefixes.plate.get(aMaterial), + aOutputStack); + } +} diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/ProcessingElectricSnips.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/ProcessingElectricSnips.java index dfcb7de4f8..9ea8eaf867 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/ProcessingElectricSnips.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/ProcessingElectricSnips.java @@ -1,4 +1,3 @@ - package gtPlusPlus.xmod.gregtech.loaders; import gregtech.api.enums.GT_Values; @@ -6,8 +5,6 @@ import gregtech.api.enums.ItemList; import gregtech.api.enums.Materials; import gregtech.api.enums.OrePrefixes; import gregtech.api.enums.SubTag; -import gregtech.api.util.GT_ModHandler; -import gregtech.api.util.GT_ModHandler.RecipeBits; import gregtech.api.util.GT_OreDictUnificator; import gregtech.common.items.GT_MetaGenerated_Tool_01; import gtPlusPlus.api.objects.Logger; @@ -22,109 +19,122 @@ import gtPlusPlus.xmod.gregtech.common.items.MetaGeneratedGregtechTools; import net.minecraft.item.ItemStack; public class ProcessingElectricSnips implements Interface_OreRecipeRegistrator, Runnable { - public ProcessingElectricSnips() { - GregtechOrePrefixes.toolElectricSnips.add(this); - } + public ProcessingElectricSnips() { + GregtechOrePrefixes.toolElectricSnips.add(this); + } + + @Override + public void registerOre( + final GregtechOrePrefixes aPrefix, + final Materials aMaterial, + final String aOreDictName, + final String aModName, + final ItemStack aStack) { + if ((aMaterial != Materials.Stone) && (aMaterial != Materials.Flint)) { + if (aMaterial != Materials.Rubber) { + if ((!aMaterial.contains(SubTag.WOOD)) + && (!aMaterial.contains(SubTag.BOUNCY)) + && (!aMaterial.contains(SubTag.NO_SMASHING))) {} + } + } + } - @Override - public void registerOre(final GregtechOrePrefixes aPrefix, final Materials aMaterial, final String aOreDictName, - final String aModName, final ItemStack aStack) { - if ((aMaterial != Materials.Stone) && (aMaterial != Materials.Flint)) { - if (aMaterial != Materials.Rubber) { - if ((!aMaterial.contains(SubTag.WOOD)) && (!aMaterial.contains(SubTag.BOUNCY)) - && (!aMaterial.contains(SubTag.NO_SMASHING))) { - - } - } - } - } + @Override + public void registerOre( + final GregtechOrePrefixes aPrefix, + final GT_Materials aMaterial, + final String aOreDictName, + final String aModName, + final ItemStack aStack) { + // TODO Auto-generated method stub - @Override - public void registerOre(final GregtechOrePrefixes aPrefix, final GT_Materials aMaterial, final String aOreDictName, - final String aModName, final ItemStack aStack) { - // TODO Auto-generated method stub + } - } + public void materialsLoops() { + final Materials[] i = Materials.values(); + final int size = i.length; + Logger.MATERIALS("Materials to attempt tool gen. with: " + size); + int used = 0; + Materials aMaterial = null; + for (int r = 0; r < size; r++) { + aMaterial = i[r]; + if ((aMaterial != Materials.Stone) + && (aMaterial != Materials.Flint) + && (aMaterial != Materials.Rubber) + && (aMaterial != Materials._NULL)) { + if ((!aMaterial.contains(SubTag.WOOD)) + && (!aMaterial.contains(SubTag.BOUNCY)) + && (!aMaterial.contains(SubTag.NO_SMASHING)) + && (!aMaterial.contains(SubTag.TRANSPARENT)) + && (!aMaterial.contains(SubTag.FLAMMABLE)) + && (!aMaterial.contains(SubTag.MAGICAL)) + && (!aMaterial.contains(SubTag.NO_SMELTING))) { + Logger.MATERIALS("Generating Electric Snips from " + MaterialUtils.getMaterialName(aMaterial)); + // Input 1 - public void materialsLoops() { - final Materials[] i = Materials.values(); - final int size = i.length; - Logger.MATERIALS("Materials to attempt tool gen. with: " + size); - int used = 0; - Materials aMaterial = null; - for (int r = 0; r < size; r++) { - aMaterial = i[r]; - if ((aMaterial != Materials.Stone) && (aMaterial != Materials.Flint) && (aMaterial != Materials.Rubber) - && (aMaterial != Materials._NULL)) { - if ((!aMaterial.contains(SubTag.WOOD)) && (!aMaterial.contains(SubTag.BOUNCY)) - && (!aMaterial.contains(SubTag.NO_SMASHING)) && (!aMaterial.contains(SubTag.TRANSPARENT)) - && (!aMaterial.contains(SubTag.FLAMMABLE)) && (!aMaterial.contains(SubTag.MAGICAL)) - && (!aMaterial.contains(SubTag.NO_SMELTING))) { - Logger.MATERIALS("Generating Electric Snips from "+MaterialUtils.getMaterialName(aMaterial)); - // Input 1 - + final ItemStack plate = GT_OreDictUnificator.get(OrePrefixes.plate, aMaterial, 1L); - final ItemStack plate = GT_OreDictUnificator.get(OrePrefixes.plate, aMaterial, 1L); + if ((null != plate)) { + addRecipe(aMaterial, 1600000L, 3, ItemList.Battery_RE_HV_Lithium.get(1)); + addRecipe(aMaterial, 1200000L, 3, ItemList.Battery_RE_HV_Cadmium.get(1)); + addRecipe(aMaterial, 800000L, 3, ItemList.Battery_RE_HV_Sodium.get(1)); + used++; + } else { + Logger.MATERIALS( + "Unable to generate Electric Snips from " + MaterialUtils.getMaterialName(aMaterial) + + ", Plate or Long Rod may be invalid. Invalid | Plate? " + (plate == null) + + " | Rod? " + " |"); + } + // GT_ModHandler.addCraftingRecipe(, + // GT_ModHandler.RecipeBits.DO_NOT_CHECK_FOR_COLLISIONS | + // GT_ModHandler.RecipeBits.BUFFERED, new Object[]{"P H", "PIP", " I ", + // Character.valueOf('I'), OrePrefixes.ingot.get(aMaterial), + // Character.valueOf('P'), OrePrefixes.plate.get(aMaterial), + // Character.valueOf('H'), OrePrefixes.toolHeadHammer.get(aMaterial)}); + } else { + Logger.MATERIALS( + "Unable to generate Electric Snips from " + MaterialUtils.getMaterialName(aMaterial)); + } + } else { + Logger.MATERIALS("Unable to generate Electric Snips from " + MaterialUtils.getMaterialName(aMaterial)); + } + } - if ((null != plate)) { - addRecipe(aMaterial, 1600000L, 3, ItemList.Battery_RE_HV_Lithium.get(1)); - addRecipe(aMaterial, 1200000L, 3, ItemList.Battery_RE_HV_Cadmium.get(1)); - addRecipe(aMaterial, 800000L, 3, ItemList.Battery_RE_HV_Sodium.get(1)); - used++; - } else { - Logger.MATERIALS("Unable to generate Electric Snips from "+MaterialUtils.getMaterialName(aMaterial)+", Plate or Long Rod may be invalid. Invalid | Plate? "+(plate == null) +" | Rod? "+" |"); - } - // GT_ModHandler.addCraftingRecipe(, - // GT_ModHandler.RecipeBits.DO_NOT_CHECK_FOR_COLLISIONS | - // GT_ModHandler.RecipeBits.BUFFERED, new Object[]{"P H", "PIP", " I ", - // Character.valueOf('I'), OrePrefixes.ingot.get(aMaterial), - // Character.valueOf('P'), OrePrefixes.plate.get(aMaterial), - // Character.valueOf('H'), OrePrefixes.toolHeadHammer.get(aMaterial)}); - } else { - Logger.MATERIALS("Unable to generate Electric Snips from "+MaterialUtils.getMaterialName(aMaterial)); - } - } else { - Logger.MATERIALS("Unable to generate Electric Snips from "+MaterialUtils.getMaterialName(aMaterial)); - } + Logger.INFO("Materials used for tool gen: " + used); + } - } + @Override + public void run() { + Logger.INFO("Generating Electric Snips for all valid GT Materials."); + this.materialsLoops(); + } - Logger.INFO("Materials used for tool gen: " + used); - } + public boolean addRecipe(Materials aMaterial, long aBatteryStorage, int aVoltageTier, ItemStack aBattery) { - @Override - public void run() { - Logger.INFO("Generating Electric Snips for all valid GT Materials."); - this.materialsLoops(); - } - - public boolean addRecipe(Materials aMaterial, long aBatteryStorage, int aVoltageTier, ItemStack aBattery) { - - ItemStack aOutputStack = MetaGeneratedGregtechTools.INSTANCE.getToolWithStats( - MetaGeneratedGregtechTools.ELECTRIC_SNIPS, - 1, - aMaterial, - Materials.Titanium, - new long[]{aBatteryStorage, GT_Values.V[aVoltageTier], 3L, -1L}); - - ItemStack aInputCutter = GT_MetaGenerated_Tool_01.INSTANCE.getToolWithStats( - GT_MetaGenerated_Tool_01.WIRECUTTER, - 1, - aMaterial, - aMaterial, - null); + ItemStack aOutputStack = MetaGeneratedGregtechTools.INSTANCE.getToolWithStats( + MetaGeneratedGregtechTools.ELECTRIC_SNIPS, 1, aMaterial, Materials.Titanium, new long[] { + aBatteryStorage, GT_Values.V[aVoltageTier], 3L, -1L + }); - long aDura = MetaGeneratedGregtechTools.getToolMaxDamage(aOutputStack); - if (aDura <= 32000) { - Logger.MATERIALS("Unable to generate Electric Snips from "+MaterialUtils.getMaterialName(aMaterial)+", Durability: "+aDura); - return false; - } - return RecipeUtils.addShapedRecipe( - OrePrefixes.wireFine.get(Materials.Electrum), aInputCutter, OrePrefixes.wireFine.get(Materials.Electrum), - ELEMENT.STANDALONE.WHITE_METAL.getGear(1), CI.getElectricMotor(aVoltageTier, 1), ELEMENT.STANDALONE.WHITE_METAL.getGear(1), - OrePrefixes.plate.get(aMaterial), aBattery, OrePrefixes.plate.get(aMaterial), - aOutputStack); - - } + ItemStack aInputCutter = GT_MetaGenerated_Tool_01.INSTANCE.getToolWithStats( + GT_MetaGenerated_Tool_01.WIRECUTTER, 1, aMaterial, aMaterial, null); -}
\ No newline at end of file + long aDura = MetaGeneratedGregtechTools.getToolMaxDamage(aOutputStack); + if (aDura <= 32000) { + Logger.MATERIALS("Unable to generate Electric Snips from " + MaterialUtils.getMaterialName(aMaterial) + + ", Durability: " + aDura); + return false; + } + return RecipeUtils.addShapedRecipe( + OrePrefixes.wireFine.get(Materials.Electrum), + aInputCutter, + OrePrefixes.wireFine.get(Materials.Electrum), + ELEMENT.STANDALONE.WHITE_METAL.getGear(1), + CI.getElectricMotor(aVoltageTier, 1), + ELEMENT.STANDALONE.WHITE_METAL.getGear(1), + OrePrefixes.plate.get(aMaterial), + aBattery, + OrePrefixes.plate.get(aMaterial), + aOutputStack); + } +} diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/ProcessingToolHeadChoocher.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/ProcessingToolHeadChoocher.java index e4858f8cd1..a9011ca3bc 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/ProcessingToolHeadChoocher.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/ProcessingToolHeadChoocher.java @@ -1,92 +1,122 @@ package gtPlusPlus.xmod.gregtech.loaders; -import net.minecraft.item.ItemStack; - import gregtech.api.enums.*; import gregtech.api.util.GT_ModHandler; import gregtech.api.util.GT_OreDictUnificator; - import gtPlusPlus.api.objects.Logger; import gtPlusPlus.core.util.minecraft.RecipeUtils; import gtPlusPlus.xmod.gregtech.api.enums.GregtechOrePrefixes; import gtPlusPlus.xmod.gregtech.api.enums.GregtechOrePrefixes.GT_Materials; import gtPlusPlus.xmod.gregtech.api.interfaces.internal.Interface_OreRecipeRegistrator; import gtPlusPlus.xmod.gregtech.common.items.MetaGeneratedGregtechTools; +import net.minecraft.item.ItemStack; public class ProcessingToolHeadChoocher implements Interface_OreRecipeRegistrator, Runnable { - public ProcessingToolHeadChoocher() { - GregtechOrePrefixes.toolSkookumChoocher.add(this); - } - - @Override - public void registerOre(final GregtechOrePrefixes aPrefix, final Materials aMaterial, final String aOreDictName, final String aModName, final ItemStack aStack) { - if ((aMaterial != Materials.Stone) && (aMaterial != Materials.Flint)) { - if (aMaterial != Materials.Rubber) { - if ((!aMaterial.contains(SubTag.WOOD)) && (!aMaterial.contains(SubTag.BOUNCY)) && (!aMaterial.contains(SubTag.NO_SMASHING))) { - GT_ModHandler.addCraftingRecipe(MetaGeneratedGregtechTools.INSTANCE.getToolWithStats(16, 1, aMaterial, aMaterial, null), GT_ModHandler.RecipeBits.DO_NOT_CHECK_FOR_COLLISIONS | GT_ModHandler.RecipeBits.BUFFERED, new Object[]{"IhI", "III", " I ", Character.valueOf('I'), OrePrefixes.ingot.get(aMaterial)}); - } - } - } - } - - @Override - public void registerOre(final GregtechOrePrefixes aPrefix, - final GT_Materials aMaterial, final String aOreDictName, final String aModName, - final ItemStack aStack) { - // TODO Auto-generated method stub - - } - - public void materialsLoops(){ - final Materials[] i = Materials.values(); - final int size = i.length; - Logger.WARNING("Materials to attempt tool gen. with: "+size); - int used = 0; - Materials aMaterial = null; - for (int r=0;r<size;r++){ - aMaterial = i[r]; - if ((aMaterial != Materials.Stone) && (aMaterial != Materials.Flint) && (aMaterial != Materials.Rubber) && (aMaterial != Materials._NULL)) { - if ((!aMaterial.contains(SubTag.WOOD)) && (!aMaterial.contains(SubTag.BOUNCY)) && (!aMaterial.contains(SubTag.NO_SMASHING))&& (!aMaterial.contains(SubTag.TRANSPARENT))&& (!aMaterial.contains(SubTag.FLAMMABLE))&& (!aMaterial.contains(SubTag.MAGICAL))&& (!aMaterial.contains(SubTag.NO_SMELTING))) { - Logger.WARNING("Found "+aMaterial.name()+" as a valid Skookum Choocher Material."); - //Input 1 - final ItemStack plate = GT_OreDictUnificator.get(OrePrefixes.plate, aMaterial, 1L); - final ItemStack ingot = GT_OreDictUnificator.get(OrePrefixes.ingot, aMaterial, 1L); - final ItemStack screw = GT_OreDictUnificator.get(OrePrefixes.screw, aMaterial, 1L); - final ItemStack longrod = GT_OreDictUnificator.get(OrePrefixes.stickLong, aMaterial, 1L); - final ItemStack hammerhead = GT_OreDictUnificator.get(OrePrefixes.toolHeadHammer, aMaterial, 1L); + public ProcessingToolHeadChoocher() { + GregtechOrePrefixes.toolSkookumChoocher.add(this); + } - if ((null != plate) && (null != ingot) && (null != hammerhead) && (null != longrod) && (null != screw)){ - RecipeUtils.addShapedRecipe( - hammerhead, ToolDictNames.craftingToolScrewdriver.name(), plate, - ingot, plate, plate, - longrod, screw, null, - MetaGeneratedGregtechTools.INSTANCE.getToolWithStats(MetaGeneratedGregtechTools.SKOOKUM_CHOOCHER, 1, aMaterial, null, null)); - used++; - } - else { - Logger.WARNING(""+aMaterial.name()+" could not be used for all input compoenents. [3x"+aMaterial.name()+" plates, 2x"+aMaterial.name()+" ingots, 1x"+aMaterial.name()+" Hard Hammer Head."); - } - //GT_ModHandler.addCraftingRecipe(, GT_ModHandler.RecipeBits.DO_NOT_CHECK_FOR_COLLISIONS | GT_ModHandler.RecipeBits.BUFFERED, new Object[]{"P H", "PIP", " I ", Character.valueOf('I'), OrePrefixes.ingot.get(aMaterial), Character.valueOf('P'), OrePrefixes.plate.get(aMaterial), Character.valueOf('H'), OrePrefixes.toolHeadHammer.get(aMaterial)}); - } - else { - Logger.WARNING(""+aMaterial.name()+" was not a valid Skookum Choocher Material."); - } - } - else { - Logger.WARNING(""+aMaterial.name()+" was not a valid Skookum Choocher Material."); - } + @Override + public void registerOre( + final GregtechOrePrefixes aPrefix, + final Materials aMaterial, + final String aOreDictName, + final String aModName, + final ItemStack aStack) { + if ((aMaterial != Materials.Stone) && (aMaterial != Materials.Flint)) { + if (aMaterial != Materials.Rubber) { + if ((!aMaterial.contains(SubTag.WOOD)) + && (!aMaterial.contains(SubTag.BOUNCY)) + && (!aMaterial.contains(SubTag.NO_SMASHING))) { + GT_ModHandler.addCraftingRecipe( + MetaGeneratedGregtechTools.INSTANCE.getToolWithStats(16, 1, aMaterial, aMaterial, null), + GT_ModHandler.RecipeBits.DO_NOT_CHECK_FOR_COLLISIONS | GT_ModHandler.RecipeBits.BUFFERED, + new Object[] {"IhI", "III", " I ", Character.valueOf('I'), OrePrefixes.ingot.get(aMaterial) + }); + } + } + } + } + @Override + public void registerOre( + final GregtechOrePrefixes aPrefix, + final GT_Materials aMaterial, + final String aOreDictName, + final String aModName, + final ItemStack aStack) { + // TODO Auto-generated method stub - } + } - Logger.INFO("Materials used for tool gen: "+used); - } + public void materialsLoops() { + final Materials[] i = Materials.values(); + final int size = i.length; + Logger.WARNING("Materials to attempt tool gen. with: " + size); + int used = 0; + Materials aMaterial = null; + for (int r = 0; r < size; r++) { + aMaterial = i[r]; + if ((aMaterial != Materials.Stone) + && (aMaterial != Materials.Flint) + && (aMaterial != Materials.Rubber) + && (aMaterial != Materials._NULL)) { + if ((!aMaterial.contains(SubTag.WOOD)) + && (!aMaterial.contains(SubTag.BOUNCY)) + && (!aMaterial.contains(SubTag.NO_SMASHING)) + && (!aMaterial.contains(SubTag.TRANSPARENT)) + && (!aMaterial.contains(SubTag.FLAMMABLE)) + && (!aMaterial.contains(SubTag.MAGICAL)) + && (!aMaterial.contains(SubTag.NO_SMELTING))) { + Logger.WARNING("Found " + aMaterial.name() + " as a valid Skookum Choocher Material."); + // Input 1 + final ItemStack plate = GT_OreDictUnificator.get(OrePrefixes.plate, aMaterial, 1L); + final ItemStack ingot = GT_OreDictUnificator.get(OrePrefixes.ingot, aMaterial, 1L); + final ItemStack screw = GT_OreDictUnificator.get(OrePrefixes.screw, aMaterial, 1L); + final ItemStack longrod = GT_OreDictUnificator.get(OrePrefixes.stickLong, aMaterial, 1L); + final ItemStack hammerhead = GT_OreDictUnificator.get(OrePrefixes.toolHeadHammer, aMaterial, 1L); - @Override - public void run() { - Logger.INFO("Generating Skookum Choochers of all GT Materials."); - this.materialsLoops(); - } + if ((null != plate) + && (null != ingot) + && (null != hammerhead) + && (null != longrod) + && (null != screw)) { + RecipeUtils.addShapedRecipe( + hammerhead, + ToolDictNames.craftingToolScrewdriver.name(), + plate, + ingot, + plate, + plate, + longrod, + screw, + null, + MetaGeneratedGregtechTools.INSTANCE.getToolWithStats( + MetaGeneratedGregtechTools.SKOOKUM_CHOOCHER, 1, aMaterial, null, null)); + used++; + } else { + Logger.WARNING("" + aMaterial.name() + " could not be used for all input compoenents. [3x" + + aMaterial.name() + " plates, 2x" + aMaterial.name() + " ingots, 1x" + aMaterial.name() + + " Hard Hammer Head."); + } + // GT_ModHandler.addCraftingRecipe(, GT_ModHandler.RecipeBits.DO_NOT_CHECK_FOR_COLLISIONS | + // GT_ModHandler.RecipeBits.BUFFERED, new Object[]{"P H", "PIP", " I ", Character.valueOf('I'), + // OrePrefixes.ingot.get(aMaterial), Character.valueOf('P'), OrePrefixes.plate.get(aMaterial), + // Character.valueOf('H'), OrePrefixes.toolHeadHammer.get(aMaterial)}); + } else { + Logger.WARNING("" + aMaterial.name() + " was not a valid Skookum Choocher Material."); + } + } else { + Logger.WARNING("" + aMaterial.name() + " was not a valid Skookum Choocher Material."); + } + } + Logger.INFO("Materials used for tool gen: " + used); + } -}
\ No newline at end of file + @Override + public void run() { + Logger.INFO("Generating Skookum Choochers of all GT Materials."); + this.materialsLoops(); + } +} diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/Processing_Textures_Items.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/Processing_Textures_Items.java index ae559db232..e1248c0aae 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/Processing_Textures_Items.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/Processing_Textures_Items.java @@ -4,8 +4,6 @@ import gtPlusPlus.xmod.gregtech.api.enums.GregtechTextures.ItemIcons.CustomIcon; public class Processing_Textures_Items { - public static final CustomIcon itemSkookumChoocher = new CustomIcon("iconsets/SKOOKUMCHOOCHER"); - public static final CustomIcon itemElectricPump = new CustomIcon("iconsets/PUMP"); - + public static final CustomIcon itemSkookumChoocher = new CustomIcon("iconsets/SKOOKUMCHOOCHER"); + public static final CustomIcon itemElectricPump = new CustomIcon("iconsets/PUMP"); } - diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_AlloySmelter.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_AlloySmelter.java index 7754d039cf..c2f0d1e623 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_AlloySmelter.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_AlloySmelter.java @@ -1,66 +1,62 @@ package gtPlusPlus.xmod.gregtech.loaders; -import java.util.HashSet; -import java.util.Set; - import gregtech.api.enums.GT_Values; import gregtech.api.enums.ItemList; - import gtPlusPlus.api.interfaces.RunnableWithInfo; import gtPlusPlus.core.material.Material; import gtPlusPlus.core.material.MaterialGenerator; import gtPlusPlus.core.util.minecraft.ItemUtils; +import java.util.HashSet; +import java.util.Set; public class RecipeGen_AlloySmelter extends RecipeGen_Base { - public final static Set<RunnableWithInfo<Material>> mRecipeGenMap = new HashSet<RunnableWithInfo<Material>>(); - static { - MaterialGenerator.mRecipeMapsToGenerate.put(mRecipeGenMap); - } - - public RecipeGen_AlloySmelter(final Material M){ - this.toGenerate = M; - mRecipeGenMap.add(this); - } - - @Override - public void run() { - generateRecipes(this.toGenerate); - } - - private void generateRecipes(final Material material){ - final int tVoltageMultiplier = material.vVoltageMultiplier; - - - - //Nuggets - if (ItemUtils.checkForInvalidItems(material.getIngot(1)) && ItemUtils.checkForInvalidItems(material.getNugget(1))) - GT_Values.RA.addAlloySmelterRecipe( - material.getIngot(1), - ItemList.Shape_Mold_Nugget.get(0), - material.getNugget(9), - (int) Math.max(material.getMass() * 2L, 1L), - tVoltageMultiplier); - - //Gears - if (ItemUtils.checkForInvalidItems(material.getIngot(1)) && ItemUtils.checkForInvalidItems(material.getGear(1))) - GT_Values.RA.addAlloySmelterRecipe( - material.getIngot(8), - ItemList.Shape_Mold_Gear.get(0), - material.getGear(1), - (int) Math.max(material.getMass() * 2L, 1L), - tVoltageMultiplier); - - //Ingot - if (ItemUtils.checkForInvalidItems(material.getIngot(1)) && ItemUtils.checkForInvalidItems(material.getNugget(1))) - GT_Values.RA.addAlloySmelterRecipe( - material.getNugget(9), - ItemList.Shape_Mold_Ingot.get(0), - material.getIngot(1), - (int) Math.max(material.getMass() * 2L, 1L), - tVoltageMultiplier); - - } - + public static final Set<RunnableWithInfo<Material>> mRecipeGenMap = new HashSet<RunnableWithInfo<Material>>(); + + static { + MaterialGenerator.mRecipeMapsToGenerate.put(mRecipeGenMap); + } + + public RecipeGen_AlloySmelter(final Material M) { + this.toGenerate = M; + mRecipeGenMap.add(this); + } + + @Override + public void run() { + generateRecipes(this.toGenerate); + } + + private void generateRecipes(final Material material) { + final int tVoltageMultiplier = material.vVoltageMultiplier; + + // Nuggets + if (ItemUtils.checkForInvalidItems(material.getIngot(1)) + && ItemUtils.checkForInvalidItems(material.getNugget(1))) + GT_Values.RA.addAlloySmelterRecipe( + material.getIngot(1), + ItemList.Shape_Mold_Nugget.get(0), + material.getNugget(9), + (int) Math.max(material.getMass() * 2L, 1L), + tVoltageMultiplier); + + // Gears + if (ItemUtils.checkForInvalidItems(material.getIngot(1)) && ItemUtils.checkForInvalidItems(material.getGear(1))) + GT_Values.RA.addAlloySmelterRecipe( + material.getIngot(8), + ItemList.Shape_Mold_Gear.get(0), + material.getGear(1), + (int) Math.max(material.getMass() * 2L, 1L), + tVoltageMultiplier); + + // Ingot + if (ItemUtils.checkForInvalidItems(material.getIngot(1)) + && ItemUtils.checkForInvalidItems(material.getNugget(1))) + GT_Values.RA.addAlloySmelterRecipe( + material.getNugget(9), + ItemList.Shape_Mold_Ingot.get(0), + material.getIngot(1), + (int) Math.max(material.getMass() * 2L, 1L), + tVoltageMultiplier); + } } - diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Assembler.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Assembler.java index d7244919d8..90195a15e8 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Assembler.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Assembler.java @@ -1,81 +1,62 @@ package gtPlusPlus.xmod.gregtech.loaders; -import java.util.HashSet; -import java.util.Set; - -import net.minecraft.item.ItemStack; - import gregtech.api.enums.GT_Values; - import gtPlusPlus.api.interfaces.RunnableWithInfo; import gtPlusPlus.core.material.Material; import gtPlusPlus.core.material.MaterialGenerator; import gtPlusPlus.core.util.minecraft.FluidUtils; import gtPlusPlus.core.util.minecraft.ItemUtils; +import java.util.HashSet; +import java.util.Set; +import net.minecraft.item.ItemStack; public class RecipeGen_Assembler extends RecipeGen_Base { - public final static Set<RunnableWithInfo<Material>> mRecipeGenMap = new HashSet<RunnableWithInfo<Material>>(); - static { - MaterialGenerator.mRecipeMapsToGenerate.put(mRecipeGenMap); - } - - public RecipeGen_Assembler(final Material M){ - this.toGenerate = M; - mRecipeGenMap.add(this); - } - - @Override - public void run() { - generateRecipes(this.toGenerate); - } - - private void generateRecipes(final Material material){ - - //Frame Box - if (ItemUtils.checkForInvalidItems(new ItemStack[] {material.getRod(1), material.getFrameBox(1)})) - GT_Values.RA.addAssemblerRecipe( - material.getRod(4), - ItemUtils.getGregtechCircuit(4), - material.getFrameBox(1), - 60, - material.vVoltageMultiplier); - - //Rotor - if (ItemUtils.checkForInvalidItems(new ItemStack[] {material.getPlate(1), material.getRing(1), material.getRotor(1)})) - addAssemblerRecipe( - material.getPlate(4), - material.getRing(1), - material.getRotor(1), - 240, - material.vVoltageMultiplier); - - } - - private static void addAssemblerRecipe(final ItemStack input1, final ItemStack input2, final ItemStack output1, final int seconds, final int euCost){ - GT_Values.RA.addAssemblerRecipe( - input1, - input2, - FluidUtils.getFluidStack("molten.solderingalloy", 16), - output1, - seconds, - euCost); - GT_Values.RA.addAssemblerRecipe( - input1, - input2, - FluidUtils.getFluidStack("molten.tin", 32), - output1, - seconds, - euCost); - GT_Values.RA.addAssemblerRecipe( - input1, - input2, - FluidUtils.getFluidStack("molten.lead", 48), - output1, - seconds, - euCost); - } - - + public static final Set<RunnableWithInfo<Material>> mRecipeGenMap = new HashSet<RunnableWithInfo<Material>>(); + + static { + MaterialGenerator.mRecipeMapsToGenerate.put(mRecipeGenMap); + } + + public RecipeGen_Assembler(final Material M) { + this.toGenerate = M; + mRecipeGenMap.add(this); + } + + @Override + public void run() { + generateRecipes(this.toGenerate); + } + + private void generateRecipes(final Material material) { + + // Frame Box + if (ItemUtils.checkForInvalidItems(new ItemStack[] {material.getRod(1), material.getFrameBox(1)})) + GT_Values.RA.addAssemblerRecipe( + material.getRod(4), + ItemUtils.getGregtechCircuit(4), + material.getFrameBox(1), + 60, + material.vVoltageMultiplier); + + // Rotor + if (ItemUtils.checkForInvalidItems( + new ItemStack[] {material.getPlate(1), material.getRing(1), material.getRotor(1)})) + addAssemblerRecipe( + material.getPlate(4), material.getRing(1), material.getRotor(1), 240, material.vVoltageMultiplier); + } + + private static void addAssemblerRecipe( + final ItemStack input1, + final ItemStack input2, + final ItemStack output1, + final int seconds, + final int euCost) { + GT_Values.RA.addAssemblerRecipe( + input1, input2, FluidUtils.getFluidStack("molten.solderingalloy", 16), output1, seconds, euCost); + GT_Values.RA.addAssemblerRecipe( + input1, input2, FluidUtils.getFluidStack("molten.tin", 32), output1, seconds, euCost); + GT_Values.RA.addAssemblerRecipe( + input1, input2, FluidUtils.getFluidStack("molten.lead", 48), output1, seconds, euCost); + } } - diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Base.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Base.java index 7e9153679f..d000889757 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Base.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Base.java @@ -3,14 +3,13 @@ package gtPlusPlus.xmod.gregtech.loaders; import gtPlusPlus.api.interfaces.RunnableWithInfo; import gtPlusPlus.core.material.Material; -public abstract class RecipeGen_Base implements RunnableWithInfo<Material>{ +public abstract class RecipeGen_Base implements RunnableWithInfo<Material> { - protected Material toGenerate; - protected boolean disableOptional; - - @Override - public Material getInfoData() { - return toGenerate; - } + protected Material toGenerate; + protected boolean disableOptional; + @Override + public Material getInfoData() { + return toGenerate; + } } diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelter.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelter.java index c8219155d2..b6b8a3f7ac 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelter.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelter.java @@ -1,9 +1,5 @@ package gtPlusPlus.xmod.gregtech.loaders; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.Set; - import gregtech.api.enums.GT_Values; import gregtech.api.enums.ItemList; import gtPlusPlus.api.interfaces.RunnableWithInfo; @@ -19,262 +15,292 @@ import gtPlusPlus.core.material.state.MaterialState; import gtPlusPlus.core.util.minecraft.FluidUtils; import gtPlusPlus.core.util.minecraft.ItemUtils; import gtPlusPlus.core.util.minecraft.MaterialUtils; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.Set; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; public class RecipeGen_BlastSmelter extends RecipeGen_Base { - public final static Set<RunnableWithInfo<Material>> mRecipeGenMap = new HashSet<RunnableWithInfo<Material>>(); - static { - MaterialGenerator.mRecipeMapsToGenerate.put(mRecipeGenMap); - } + public static final Set<RunnableWithInfo<Material>> mRecipeGenMap = new HashSet<RunnableWithInfo<Material>>(); + + static { + MaterialGenerator.mRecipeMapsToGenerate.put(mRecipeGenMap); + } + + public RecipeGen_BlastSmelter(final Material M) { + this.toGenerate = M; + mRecipeGenMap.add(this); + } + + @Override + public void run() { + generateARecipe(this.toGenerate); + } - public RecipeGen_BlastSmelter(final Material M){ - this.toGenerate = M; - mRecipeGenMap.add(this); - } + private void generateARecipe(final Material M) { - @Override - public void run() { - generateARecipe(this.toGenerate); - } + // Add a Blast Smelting Recipe, Let's go! + ItemStack tStack; + if (null != (tStack = M.getDust(1))) { - private void generateARecipe(final Material M){ + final Material[] badMaterials = { + FLUORIDES.THORIUM_HEXAFLUORIDE, + FLUORIDES.THORIUM_TETRAFLUORIDE, + ALLOY.BLOODSTEEL, + NUCLIDE.LiFBeF2ThF4UF4, + NUCLIDE.LiFBeF2ZrF4UF4, + NUCLIDE.LiFBeF2ZrF4U235 + }; + for (final Material R : badMaterials) { + if (M == R) { + return; + } + } - //Add a Blast Smelting Recipe, Let's go! - ItemStack tStack; - if (null != (tStack = M.getDust(1))) { + // Prepare some Variables + ItemStack[] components; + ArrayList<MaterialStack> tMaterial = new ArrayList<>(); + int inputStackCount = 0; + int fluidAmount = 0; + final boolean doTest = true; + tMaterial = M.getComposites(); - final Material[] badMaterials = { - FLUORIDES.THORIUM_HEXAFLUORIDE, - FLUORIDES.THORIUM_TETRAFLUORIDE, - ALLOY.BLOODSTEEL, - NUCLIDE.LiFBeF2ThF4UF4, - NUCLIDE.LiFBeF2ZrF4UF4, - NUCLIDE.LiFBeF2ZrF4U235 - }; - for (final Material R : badMaterials){ - if (M == R){ - return; - } - } + // This Bad boy here is what dictates unique recipes. Fuck life, right? + ItemStack circuitGT = ItemUtils.getGregtechCircuit(0); - //Prepare some Variables - ItemStack[] components; - ArrayList<MaterialStack> tMaterial = new ArrayList<>(); - int inputStackCount=0; - int fluidAmount=0; - final boolean doTest = true; - tMaterial = M.getComposites(); + // Set a duration - OLD + /*int duration = 0; + if (M.getMeltingPointK() > 150){ + duration = (int) Math.max(M.getMass() / 50L, 1L) * M.getMeltingPointK(); + } + else { + duration = (int) Math.max(M.getMass() / 50L, 1L) * 150; + }*/ - //This Bad boy here is what dictates unique recipes. Fuck life, right? - ItemStack circuitGT = ItemUtils.getGregtechCircuit(0); + long aVoltage = MaterialUtils.getVoltageForTier(M.vTier); + // Set a duration - NEW + int duration = 120 * M.vTier * 10; - //Set a duration - OLD - /*int duration = 0; - if (M.getMeltingPointK() > 150){ - duration = (int) Math.max(M.getMass() / 50L, 1L) * M.getMeltingPointK(); - } - else { - duration = (int) Math.max(M.getMass() / 50L, 1L) * 150; - }*/ - - long aVoltage = MaterialUtils.getVoltageForTier(M.vTier); - - - //Set a duration - NEW - int duration = 120*M.vTier*10; + if (M.vTier <= 4) { + duration = 20 * M.vTier * 10; + } - if (M.vTier <= 4){ - duration = 20*M.vTier*10; - } + int mMaterialListSize = 0; - int mMaterialListSize=0; - - int mTotalPartsCounter = M.smallestStackSizeWhenProcessing; - - if (M.getComposites() != null){ - for (final gtPlusPlus.core.material.MaterialStack ternkfsdf : M.getComposites()){ - if (ternkfsdf != null) { - mMaterialListSize++; - //mTotalPartsCounter += ternkfsdf.getSmallestStackSizes()[0]; - } - } - } - else { - mMaterialListSize = 1; - } + int mTotalPartsCounter = M.smallestStackSizeWhenProcessing; - if (duration <= 0){ - final int second = 20; - duration = 14*second*mMaterialListSize*8; - } + if (M.getComposites() != null) { + for (final gtPlusPlus.core.material.MaterialStack ternkfsdf : M.getComposites()) { + if (ternkfsdf != null) { + mMaterialListSize++; + // mTotalPartsCounter += ternkfsdf.getSmallestStackSizes()[0]; + } + } + } else { + mMaterialListSize = 1; + } - Logger.WARNING("[BAS] Size: "+mMaterialListSize); + if (duration <= 0) { + final int second = 20; + duration = 14 * second * mMaterialListSize * 8; + } + Logger.WARNING("[BAS] Size: " + mMaterialListSize); - //Make a simple one Material Materialstack[] and log it for validity. - circuitGT = ItemUtils.getGregtechCircuit(1); - final ItemStack[] tItemStackTest = new ItemStack[]{circuitGT, tStack}; - inputStackCount = 1; - fluidAmount = 144*inputStackCount; - Logger.WARNING("[BAS] Adding an Alloy Blast Smelter Recipe for "+M.getLocalizedName()+". Gives "+fluidAmount+"L of molten metal."); - for (int das=0;das<tItemStackTest.length;das++){ - if (tItemStackTest[das] != null) { - Logger.WARNING("[BAS] tMaterial["+das+"]: "+tItemStackTest[das].getDisplayName()+" Meta: "+tItemStackTest[das].getItemDamage()+", Amount: "+tItemStackTest[das].stackSize); - } - } + // Make a simple one Material Materialstack[] and log it for validity. + circuitGT = ItemUtils.getGregtechCircuit(1); + final ItemStack[] tItemStackTest = new ItemStack[] {circuitGT, tStack}; + inputStackCount = 1; + fluidAmount = 144 * inputStackCount; + Logger.WARNING("[BAS] Adding an Alloy Blast Smelter Recipe for " + M.getLocalizedName() + ". Gives " + + fluidAmount + "L of molten metal."); + for (int das = 0; das < tItemStackTest.length; das++) { + if (tItemStackTest[das] != null) { + Logger.WARNING("[BAS] tMaterial[" + das + "]: " + tItemStackTest[das].getDisplayName() + " Meta: " + + tItemStackTest[das].getItemDamage() + ", Amount: " + tItemStackTest[das].stackSize); + } + } - final boolean hasMoreInputThanACircuit = (tItemStackTest.length > 1); + final boolean hasMoreInputThanACircuit = (tItemStackTest.length > 1); - //Generate Recipes for all singular materials that can be made molten. - if (hasMoreInputThanACircuit){ - if (M.requiresBlastFurnace()) { - if (CORE.RA.addBlastSmelterRecipe(tItemStackTest, M.getFluidStack(fluidAmount), 100, (duration/(mTotalPartsCounter > 0 ? mTotalPartsCounter : 1)), (int) aVoltage)){ - Logger.WARNING("[BAS] Success."); - Logger.WARNING("[BAS] Success, Also added a Fluid solidifier recipe."); - /*if (GT_Values.RA.addFluidExtractionRecipe(M.getIngot(1), null, M.getFluidStack(144), 100, duration, 120)){ - Logger.WARNING("[BAS] Success, Also added a Fluid Extractor recipe."); - } - if (GT_Values.RA.addFluidExtractionRecipe(M.getNugget(1), null, M.getFluidStack(16), 100, duration/9, 120)){ - Logger.WARNING("[BAS] Success, Also added a Fluid Extractor recipe."); - }*/ - /*if (GT_Values.RA.addFluidExtractionRecipe(M.getSmallDust(1), null, M.getFluid(36), 100, duration/4, 120)){ - Logger.WARNING("[BAS] Success, Also added a Fluid Extractor recipe."); - } - if (GT_Values.RA.addFluidExtractionRecipe(M.getTinyDust(1), null, M.getFluid(16), 100, duration/9, 120)){ - Logger.WARNING("[BAS] Success, Also added a Fluid Extractor recipe."); - }*/ - } - } - else { - Logger.WARNING("[BAS] Failed."); - } - } - else { - if (CORE.RA.addBlastSmelterRecipe(tItemStackTest, M.getFluidStack(fluidAmount), 100, duration/(mTotalPartsCounter > 0 ? mTotalPartsCounter : 1)/2, (int) aVoltage)){ - Logger.WARNING("[BAS] Success."); - if (GT_Values.RA.addFluidSolidifierRecipe(ItemList.Shape_Mold_Ingot.get(0), M.getFluidStack(144), M.getIngot(1), duration/2, 60)){ - Logger.WARNING("[BAS] Success, Also added a Fluid solidifier recipe."); - /*if (GT_Values.RA.addFluidExtractionRecipe(M.getIngot(1), null, M.getFluidStack(144), 100, duration/2, 60)){ - Logger.WARNING("[BAS] Success, Also added a Fluid Extractor recipe."); - } - if (GT_Values.RA.addFluidExtractionRecipe(M.getNugget(1), null, M.getFluidStack(16), 100, duration/2/9, 60)){ - Logger.WARNING("[BAS] Success, Also added a Fluid Extractor recipe."); - }*/ - /*if (GT_Values.RA.addFluidExtractionRecipe(M.getSmallDust(1), null, M.getFluid(36), 100, duration/2/4, 60)){ - Logger.WARNING("[BAS] Success, Also added a Fluid Extractor recipe."); - } - if (GT_Values.RA.addFluidExtractionRecipe(M.getTinyDust(1), null, M.getFluid(16), 100, duration/2/9, 60)){ - Logger.WARNING("[BAS] Success, Also added a Fluid Extractor recipe."); - }*/ - } - } - else { - Logger.WARNING("[BAS] Failed."); - } - } + // Generate Recipes for all singular materials that can be made molten. + if (hasMoreInputThanACircuit) { + if (M.requiresBlastFurnace()) { + if (CORE.RA.addBlastSmelterRecipe( + tItemStackTest, + M.getFluidStack(fluidAmount), + 100, + (duration / (mTotalPartsCounter > 0 ? mTotalPartsCounter : 1)), + (int) aVoltage)) { + Logger.WARNING("[BAS] Success."); + Logger.WARNING("[BAS] Success, Also added a Fluid solidifier recipe."); + /*if (GT_Values.RA.addFluidExtractionRecipe(M.getIngot(1), null, M.getFluidStack(144), 100, duration, 120)){ + Logger.WARNING("[BAS] Success, Also added a Fluid Extractor recipe."); + } + if (GT_Values.RA.addFluidExtractionRecipe(M.getNugget(1), null, M.getFluidStack(16), 100, duration/9, 120)){ + Logger.WARNING("[BAS] Success, Also added a Fluid Extractor recipe."); + }*/ + /*if (GT_Values.RA.addFluidExtractionRecipe(M.getSmallDust(1), null, M.getFluid(36), 100, duration/4, 120)){ + Logger.WARNING("[BAS] Success, Also added a Fluid Extractor recipe."); + } + if (GT_Values.RA.addFluidExtractionRecipe(M.getTinyDust(1), null, M.getFluid(16), 100, duration/9, 120)){ + Logger.WARNING("[BAS] Success, Also added a Fluid Extractor recipe."); + }*/ + } + } else { + Logger.WARNING("[BAS] Failed."); + } + } else { + if (CORE.RA.addBlastSmelterRecipe( + tItemStackTest, + M.getFluidStack(fluidAmount), + 100, + duration / (mTotalPartsCounter > 0 ? mTotalPartsCounter : 1) / 2, + (int) aVoltage)) { + Logger.WARNING("[BAS] Success."); + if (GT_Values.RA.addFluidSolidifierRecipe( + ItemList.Shape_Mold_Ingot.get(0), M.getFluidStack(144), M.getIngot(1), duration / 2, 60)) { + Logger.WARNING("[BAS] Success, Also added a Fluid solidifier recipe."); + /*if (GT_Values.RA.addFluidExtractionRecipe(M.getIngot(1), null, M.getFluidStack(144), 100, duration/2, 60)){ + Logger.WARNING("[BAS] Success, Also added a Fluid Extractor recipe."); + } + if (GT_Values.RA.addFluidExtractionRecipe(M.getNugget(1), null, M.getFluidStack(16), 100, duration/2/9, 60)){ + Logger.WARNING("[BAS] Success, Also added a Fluid Extractor recipe."); + }*/ + /*if (GT_Values.RA.addFluidExtractionRecipe(M.getSmallDust(1), null, M.getFluid(36), 100, duration/2/4, 60)){ + Logger.WARNING("[BAS] Success, Also added a Fluid Extractor recipe."); + } + if (GT_Values.RA.addFluidExtractionRecipe(M.getTinyDust(1), null, M.getFluid(16), 100, duration/2/9, 60)){ + Logger.WARNING("[BAS] Success, Also added a Fluid Extractor recipe."); + }*/ + } + } else { + Logger.WARNING("[BAS] Failed."); + } + } - if (tMaterial != null){ - //Reset the Variables for compounds if last recipe was a success. - inputStackCount=0; - - //If this Material has some kind of compound list, proceed - if (mMaterialListSize > 1){ - final gtPlusPlus.core.material.MaterialStack[] tempStack = new gtPlusPlus.core.material.MaterialStack[mMaterialListSize]; - circuitGT = ItemUtils.getGregtechCircuit(mMaterialListSize); - //Just double checking - if (tempStack.length > 1){ + if (tMaterial != null) { + // Reset the Variables for compounds if last recipe was a success. + inputStackCount = 0; - //Builds me a MaterialStack[] from the MaterialList of M. - int ooo=0; - for (final gtPlusPlus.core.material.MaterialStack xMaterial : M.getComposites()){ - if (xMaterial != null){ - if (xMaterial.getStackMaterial() != null){ - Logger.WARNING("[BAS] FOUND: "+xMaterial.getStackMaterial().getLocalizedName()); - Logger.WARNING("[BAS] ADDING: "+xMaterial.getStackMaterial().getLocalizedName()); - } - tempStack[ooo] = xMaterial; - } - ooo++; - } + // If this Material has some kind of compound list, proceed + if (mMaterialListSize > 1) { + final gtPlusPlus.core.material.MaterialStack[] tempStack = + new gtPlusPlus.core.material.MaterialStack[mMaterialListSize]; + circuitGT = ItemUtils.getGregtechCircuit(mMaterialListSize); + // Just double checking + if (tempStack.length > 1) { - //Builds me an ItemStack[] of the materials. - Without a circuit - this gets a good count for the 144L fluid multiplier - components = new ItemStack[9]; - inputStackCount=0; - FluidStack componentsFluid = null; - for (int irc=0;irc<M.getComposites().size();irc++){ - if (M.getComposites().get(irc) != null){ - final int r = (int) M.vSmallestRatio[irc]; - inputStackCount = inputStackCount+r; - if ((M.getComposites().get(irc).getStackMaterial().getState() != MaterialState.SOLID) || !ItemUtils.checkForInvalidItems(M.getComposites().get(irc).getDustStack(r))){ - final int xr = r; - if ((xr > 0) && (xr <= 100)){ - final int mathmatics = (r*1000); - componentsFluid = FluidUtils.getFluidStack(M.getComposites().get(irc).getStackMaterial().getFluidStack(mathmatics), mathmatics); - } - } - else { - components[irc] = M.getComposites().get(irc).getUnificatedDustStack(r); - } - } - } + // Builds me a MaterialStack[] from the MaterialList of M. + int ooo = 0; + for (final gtPlusPlus.core.material.MaterialStack xMaterial : M.getComposites()) { + if (xMaterial != null) { + if (xMaterial.getStackMaterial() != null) { + Logger.WARNING("[BAS] FOUND: " + + xMaterial.getStackMaterial().getLocalizedName()); + Logger.WARNING("[BAS] ADDING: " + + xMaterial.getStackMaterial().getLocalizedName()); + } + tempStack[ooo] = xMaterial; + } + ooo++; + } + // Builds me an ItemStack[] of the materials. - Without a circuit - this gets a good count for + // the 144L fluid multiplier + components = new ItemStack[9]; + inputStackCount = 0; + FluidStack componentsFluid = null; + for (int irc = 0; irc < M.getComposites().size(); irc++) { + if (M.getComposites().get(irc) != null) { + final int r = (int) M.vSmallestRatio[irc]; + inputStackCount = inputStackCount + r; + if ((M.getComposites() + .get(irc) + .getStackMaterial() + .getState() + != MaterialState.SOLID) + || !ItemUtils.checkForInvalidItems( + M.getComposites().get(irc).getDustStack(r))) { + final int xr = r; + if ((xr > 0) && (xr <= 100)) { + final int mathmatics = (r * 1000); + componentsFluid = FluidUtils.getFluidStack( + M.getComposites() + .get(irc) + .getStackMaterial() + .getFluidStack(mathmatics), + mathmatics); + } + } else { + components[irc] = M.getComposites().get(irc).getUnificatedDustStack(r); + } + } + } - //Adds a circuit - if ((mMaterialListSize < 9) && (mMaterialListSize != 0)){ - final ItemStack[] components_NoCircuit = components; - //Builds me an ItemStack[] of the materials. - With a circuit - components = new ItemStack[components_NoCircuit.length+1]; - for (int fr=0;fr<components.length;fr++){ - if (fr==0){ - components[0] = circuitGT; - } - else { - components[fr] = components_NoCircuit[fr-1]; - } - } - Logger.WARNING("[BAS] Should have added a circuit. mMaterialListSize: "+mMaterialListSize+" | circuit: "+components[0].getDisplayName()); - } - else { - Logger.WARNING("[BAS] Did not add a circuit. mMaterialListSize: "+mMaterialListSize); - } + // Adds a circuit + if ((mMaterialListSize < 9) && (mMaterialListSize != 0)) { + final ItemStack[] components_NoCircuit = components; + // Builds me an ItemStack[] of the materials. - With a circuit + components = new ItemStack[components_NoCircuit.length + 1]; + for (int fr = 0; fr < components.length; fr++) { + if (fr == 0) { + components[0] = circuitGT; + } else { + components[fr] = components_NoCircuit[fr - 1]; + } + } + Logger.WARNING("[BAS] Should have added a circuit. mMaterialListSize: " + mMaterialListSize + + " | circuit: " + components[0].getDisplayName()); + } else { + Logger.WARNING("[BAS] Did not add a circuit. mMaterialListSize: " + mMaterialListSize); + } - //Set Fluid output - fluidAmount = 144*inputStackCount; + // Set Fluid output + fluidAmount = 144 * inputStackCount; - Logger.WARNING("[BAS] Adding an Alloy Blast Smelter Recipe for "+M.getLocalizedName()+" using it's compound dusts. This material has "+ inputStackCount+" parts. Gives "+fluidAmount+"L of molten metal."); - Logger.WARNING("[BAS] tMaterial.length: "+components.length+"."); - for (int das=0;das<components.length;das++){ - if (components[das] != null) { - Logger.WARNING("[BAS] tMaterial["+das+"]: "+components[das].getDisplayName()+" Meta: "+components[das].getItemDamage()+", Amount: "+components[das].stackSize); - } - } + Logger.WARNING("[BAS] Adding an Alloy Blast Smelter Recipe for " + M.getLocalizedName() + + " using it's compound dusts. This material has " + inputStackCount + " parts. Gives " + + fluidAmount + "L of molten metal."); + Logger.WARNING("[BAS] tMaterial.length: " + components.length + "."); + for (int das = 0; das < components.length; das++) { + if (components[das] != null) { + Logger.WARNING("[BAS] tMaterial[" + das + "]: " + components[das].getDisplayName() + + " Meta: " + components[das].getItemDamage() + ", Amount: " + + components[das].stackSize); + } + } - //Adds Recipe - if (M.requiresBlastFurnace()) { - if (CORE.RA.addBlastSmelterRecipe(components, componentsFluid, M.getFluidStack(fluidAmount), 100, duration, (int) aVoltage)){ - Logger.WARNING("[BAS] Success."); - } - else { - Logger.WARNING("[BAS] Failed."); - } - } - else { - if (CORE.RA.addBlastSmelterRecipe(components, componentsFluid, M.getFluidStack(fluidAmount), 100, duration, (int) aVoltage/2)){ - Logger.WARNING("[BAS] Success."); - } - else { - Logger.WARNING("[BAS] Failed."); - } - } - } - } - } - else { - Logger.WARNING("[BAS] doTest: "+doTest+" | tMaterial != null: "+(tMaterial != null)); - } - } - } + // Adds Recipe + if (M.requiresBlastFurnace()) { + if (CORE.RA.addBlastSmelterRecipe( + components, componentsFluid, M.getFluidStack(fluidAmount), 100, duration, (int) + aVoltage)) { + Logger.WARNING("[BAS] Success."); + } else { + Logger.WARNING("[BAS] Failed."); + } + } else { + if (CORE.RA.addBlastSmelterRecipe( + components, + componentsFluid, + M.getFluidStack(fluidAmount), + 100, + duration, + (int) aVoltage / 2)) { + Logger.WARNING("[BAS] Success."); + } else { + Logger.WARNING("[BAS] Failed."); + } + } + } + } + } else { + Logger.WARNING("[BAS] doTest: " + doTest + " | tMaterial != null: " + (tMaterial != null)); + } + } + } } diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelterGT_Ex.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelterGT_Ex.java index 141e75c8b5..2e47eaf807 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelterGT_Ex.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelterGT_Ex.java @@ -1,153 +1,228 @@ package gtPlusPlus.xmod.gregtech.loaders; -import net.minecraft.item.ItemStack; - import gregtech.api.enums.Materials; import gregtech.api.enums.OrePrefixes; import gregtech.api.enums.SubTag; import gregtech.api.interfaces.IOreRecipeRegistrator; -import gregtech.api.util.GT_ModHandler; import gregtech.api.util.GT_OreDictUnificator; import gregtech.api.util.GT_Utility; - import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.util.math.MathUtils; import gtPlusPlus.core.util.minecraft.ItemUtils; +import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; public class RecipeGen_BlastSmelterGT_Ex implements IOreRecipeRegistrator { - private final OrePrefixes[] mSmeltingPrefixes = { - OrePrefixes.crushed, - OrePrefixes.ingot, - OrePrefixes.crushedPurified, - OrePrefixes.crushedCentrifuged, - OrePrefixes.dust, - OrePrefixes.dustPure, - OrePrefixes.dustImpure, - OrePrefixes.dustRefined, - OrePrefixes.dustSmall, - OrePrefixes.dustTiny - }; - - public RecipeGen_BlastSmelterGT_Ex() { - for (OrePrefixes tPrefix : this.mSmeltingPrefixes) tPrefix.add(this); - } - - @Override - public void registerOre(OrePrefixes aPrefix, Materials aMaterial, String aOreDictName, String aModName, ItemStack aStack) { - - boolean keepHighTempRecipes = !CORE.GTNH; - - switch (aPrefix) { - case dust: - ItemStack tDustStack; - if (keepHighTempRecipes || aMaterial.mBlastFurnaceTemp <= 3600){ - if ((null != (tDustStack = GT_OreDictUnificator.get(OrePrefixes.ingot, aMaterial.mSmeltInto, 1L))) && (!aMaterial.contains(SubTag.NO_SMELTING))) { - if (aMaterial.mBlastFurnaceRequired) { - addBlastRecipe(GT_Utility.copyAmount(1L, new Object[]{aStack}), null, null, null, aMaterial.mBlastFurnaceTemp > 1750 ? GT_OreDictUnificator.get(OrePrefixes.ingotHot, aMaterial.mSmeltInto, tDustStack, 1L) : GT_Utility.copyAmount(1L, new Object[]{tDustStack}), null, (int) Math.max(aMaterial.getMass() / 40L, 1L) * aMaterial.mBlastFurnaceTemp, 120, aMaterial); - if (aMaterial.mBlastFurnaceTemp <= 1000) { - //GT_ModHandler.addRCBlastFurnaceRecipe(GT_Utility.copyAmount(1L, new Object[]{aStack}), GT_Utility.copyAmount(1L, new Object[]{tDustStack}), aMaterial.mBlastFurnaceTemp); - } - } - } - } - case ingot: - if (keepHighTempRecipes || aMaterial.mBlastFurnaceTemp <= 3600){ - if ((null != (tDustStack = GT_OreDictUnificator.get(OrePrefixes.ingot, aMaterial.mSmeltInto, 1L))) && (!aMaterial.contains(SubTag.NO_SMELTING))) { - if (aMaterial.mBlastFurnaceRequired) { - addBlastRecipe(GT_Utility.copyAmount(1L, new Object[]{aStack}), null, null, null, aMaterial.mBlastFurnaceTemp > 1750 ? GT_OreDictUnificator.get(OrePrefixes.ingotHot, aMaterial.mSmeltInto, tDustStack, 1L) : GT_Utility.copyAmount(1L, new Object[]{tDustStack}), null, (int) Math.max(aMaterial.getMass() / 40L, 1L) * aMaterial.mBlastFurnaceTemp, 120, aMaterial); - } - } - } - break; - case dustSmall: - if (keepHighTempRecipes || aMaterial.mBlastFurnaceTemp <= 3600){ - if (aMaterial.mBlastFurnaceRequired) { - addBlastRecipe(GT_Utility.copyAmount(4L, new Object[]{aStack}), null, null, null, aMaterial.mBlastFurnaceTemp > 1750 ? GT_OreDictUnificator.get(OrePrefixes.ingotHot, aMaterial.mSmeltInto, GT_OreDictUnificator.get(OrePrefixes.ingot, aMaterial.mSmeltInto, 1L), 1L) : GT_OreDictUnificator.get(OrePrefixes.ingot, aMaterial.mSmeltInto, 1L), null, (int) Math.max(aMaterial.getMass() / 40L, 1L) * aMaterial.mBlastFurnaceTemp, 120, aMaterial); - } - } - break; - case dustTiny: - if (keepHighTempRecipes || aMaterial.mBlastFurnaceTemp <= 3600){ - if (!aMaterial.contains(gregtech.api.enums.SubTag.NO_SMELTING)) { - if (aMaterial.mBlastFurnaceRequired) { - addBlastRecipe(GT_Utility.copyAmount(9L, new Object[]{aStack}), null, null, null, aMaterial.mBlastFurnaceTemp > 1750 ? GT_OreDictUnificator.get(OrePrefixes.ingotHot, aMaterial.mSmeltInto, GT_OreDictUnificator.get(OrePrefixes.ingot, aMaterial.mSmeltInto, 1L), 1L) : GT_OreDictUnificator.get(OrePrefixes.ingot, aMaterial.mSmeltInto, 1L), null, (int) Math.max(aMaterial.getMass() / 40L, 1L) * aMaterial.mBlastFurnaceTemp, 120, aMaterial); - - } - } - } - break; - default: - if (keepHighTempRecipes || aMaterial.mBlastFurnaceTemp <= 3600){ - if (!aMaterial.contains(SubTag.NO_SMELTING)) { - if ((aMaterial.mBlastFurnaceRequired) || (aMaterial.mDirectSmelting.mBlastFurnaceRequired)) { - addBlastRecipe(GT_Utility.copyAmount(1L, new Object[]{aStack}), null, null, null, aMaterial.mBlastFurnaceTemp > 1750 ? GT_OreDictUnificator.get(OrePrefixes.ingotHot, aMaterial, GT_OreDictUnificator.get(OrePrefixes.ingot, aMaterial, 1L), 1L) : GT_OreDictUnificator.get(OrePrefixes.ingot, aMaterial, 1L), null, (int) Math.max(aMaterial.getMass() / 4L, 1L) * aMaterial.mBlastFurnaceTemp, 120, aMaterial); - //if (aMaterial.mBlastFurnaceTemp <= 1000) - //GT_ModHandler.addRCBlastFurnaceRecipe(GT_Utility.copyAmount(1L, new Object[]{aStack}), GT_OreDictUnificator.get(OrePrefixes.ingot, aMaterial, 1L), aMaterial.mBlastFurnaceTemp * 2); - } - } - } - break; - } - } - - public boolean addBlastRecipe(ItemStack input1, ItemStack input2, - FluidStack fluid1, FluidStack fluid2, ItemStack output1, - ItemStack output2, int time, int euCost, Materials smeltInto) { - - //Set up variables. - ItemStack[] components; - int count = 0; - - if (smeltInto == Materials._NULL){ - //If the material is null then we probably don't want to try. - return false; - } - if (input1 != null && input2 != null){ - count = 2; - } - else if (input1 == null && input2 == null){ - //If both inputs are null, then we don't want to try. - return false; - } - else { - count = 1; - } - //Set up input components. - ItemStack configCircuit = ItemUtils.getGregtechCircuit(count); - components = new ItemStack[]{configCircuit, input1, input2}; - if (fluid1 != null || fluid2 != null){ - //If it uses an input fluid, we cannot handle this. So let's not try. (Annealed copper for example) - //return false; - if (fluid1 != null && fluid2 != null){ - //Cannot handle two input fluids - return false; - } - - FluidStack mInputfluidstack; - mInputfluidstack = (fluid1 != null) ? fluid1 : fluid2; - - //Try with new handler - //Add Blast Smelter Recipe. - return CORE.RA.addBlastSmelterRecipe( - components, - mInputfluidstack, - smeltInto.mSmeltInto.getMolten(144L), - 100, - MathUtils.roundToClosestInt(time*0.8), - euCost); // EU Cost - - } - - //Add Blast Smelter Recipe. - return CORE.RA.addBlastSmelterRecipe( - components, - smeltInto.mSmeltInto.getMolten(144L), - 100, - MathUtils.roundToClosestInt(time*0.8), - euCost); // EU Cost - - } - -}
\ No newline at end of file + private final OrePrefixes[] mSmeltingPrefixes = { + OrePrefixes.crushed, + OrePrefixes.ingot, + OrePrefixes.crushedPurified, + OrePrefixes.crushedCentrifuged, + OrePrefixes.dust, + OrePrefixes.dustPure, + OrePrefixes.dustImpure, + OrePrefixes.dustRefined, + OrePrefixes.dustSmall, + OrePrefixes.dustTiny + }; + + public RecipeGen_BlastSmelterGT_Ex() { + for (OrePrefixes tPrefix : this.mSmeltingPrefixes) tPrefix.add(this); + } + + @Override + public void registerOre( + OrePrefixes aPrefix, Materials aMaterial, String aOreDictName, String aModName, ItemStack aStack) { + + boolean keepHighTempRecipes = !CORE.GTNH; + + switch (aPrefix) { + case dust: + ItemStack tDustStack; + if (keepHighTempRecipes || aMaterial.mBlastFurnaceTemp <= 3600) { + if ((null != (tDustStack = GT_OreDictUnificator.get(OrePrefixes.ingot, aMaterial.mSmeltInto, 1L))) + && (!aMaterial.contains(SubTag.NO_SMELTING))) { + if (aMaterial.mBlastFurnaceRequired) { + addBlastRecipe( + GT_Utility.copyAmount(1L, new Object[] {aStack}), + null, + null, + null, + aMaterial.mBlastFurnaceTemp > 1750 + ? GT_OreDictUnificator.get( + OrePrefixes.ingotHot, aMaterial.mSmeltInto, tDustStack, 1L) + : GT_Utility.copyAmount(1L, new Object[] {tDustStack}), + null, + (int) Math.max(aMaterial.getMass() / 40L, 1L) * aMaterial.mBlastFurnaceTemp, + 120, + aMaterial); + if (aMaterial.mBlastFurnaceTemp <= 1000) { + // GT_ModHandler.addRCBlastFurnaceRecipe(GT_Utility.copyAmount(1L, new + // Object[]{aStack}), GT_Utility.copyAmount(1L, new Object[]{tDustStack}), + // aMaterial.mBlastFurnaceTemp); + } + } + } + } + case ingot: + if (keepHighTempRecipes || aMaterial.mBlastFurnaceTemp <= 3600) { + if ((null != (tDustStack = GT_OreDictUnificator.get(OrePrefixes.ingot, aMaterial.mSmeltInto, 1L))) + && (!aMaterial.contains(SubTag.NO_SMELTING))) { + if (aMaterial.mBlastFurnaceRequired) { + addBlastRecipe( + GT_Utility.copyAmount(1L, new Object[] {aStack}), + null, + null, + null, + aMaterial.mBlastFurnaceTemp > 1750 + ? GT_OreDictUnificator.get( + OrePrefixes.ingotHot, aMaterial.mSmeltInto, tDustStack, 1L) + : GT_Utility.copyAmount(1L, new Object[] {tDustStack}), + null, + (int) Math.max(aMaterial.getMass() / 40L, 1L) * aMaterial.mBlastFurnaceTemp, + 120, + aMaterial); + } + } + } + break; + case dustSmall: + if (keepHighTempRecipes || aMaterial.mBlastFurnaceTemp <= 3600) { + if (aMaterial.mBlastFurnaceRequired) { + addBlastRecipe( + GT_Utility.copyAmount(4L, new Object[] {aStack}), + null, + null, + null, + aMaterial.mBlastFurnaceTemp > 1750 + ? GT_OreDictUnificator.get( + OrePrefixes.ingotHot, + aMaterial.mSmeltInto, + GT_OreDictUnificator.get(OrePrefixes.ingot, aMaterial.mSmeltInto, 1L), + 1L) + : GT_OreDictUnificator.get(OrePrefixes.ingot, aMaterial.mSmeltInto, 1L), + null, + (int) Math.max(aMaterial.getMass() / 40L, 1L) * aMaterial.mBlastFurnaceTemp, + 120, + aMaterial); + } + } + break; + case dustTiny: + if (keepHighTempRecipes || aMaterial.mBlastFurnaceTemp <= 3600) { + if (!aMaterial.contains(gregtech.api.enums.SubTag.NO_SMELTING)) { + if (aMaterial.mBlastFurnaceRequired) { + addBlastRecipe( + GT_Utility.copyAmount(9L, new Object[] {aStack}), + null, + null, + null, + aMaterial.mBlastFurnaceTemp > 1750 + ? GT_OreDictUnificator.get( + OrePrefixes.ingotHot, + aMaterial.mSmeltInto, + GT_OreDictUnificator.get( + OrePrefixes.ingot, aMaterial.mSmeltInto, 1L), + 1L) + : GT_OreDictUnificator.get(OrePrefixes.ingot, aMaterial.mSmeltInto, 1L), + null, + (int) Math.max(aMaterial.getMass() / 40L, 1L) * aMaterial.mBlastFurnaceTemp, + 120, + aMaterial); + } + } + } + break; + default: + if (keepHighTempRecipes || aMaterial.mBlastFurnaceTemp <= 3600) { + if (!aMaterial.contains(SubTag.NO_SMELTING)) { + if ((aMaterial.mBlastFurnaceRequired) || (aMaterial.mDirectSmelting.mBlastFurnaceRequired)) { + addBlastRecipe( + GT_Utility.copyAmount(1L, new Object[] {aStack}), + null, + null, + null, + aMaterial.mBlastFurnaceTemp > 1750 + ? GT_OreDictUnificator.get( + OrePrefixes.ingotHot, + aMaterial, + GT_OreDictUnificator.get(OrePrefixes.ingot, aMaterial, 1L), + 1L) + : GT_OreDictUnificator.get(OrePrefixes.ingot, aMaterial, 1L), + null, + (int) Math.max(aMaterial.getMass() / 4L, 1L) * aMaterial.mBlastFurnaceTemp, + 120, + aMaterial); + // if (aMaterial.mBlastFurnaceTemp <= 1000) + // GT_ModHandler.addRCBlastFurnaceRecipe(GT_Utility.copyAmount(1L, new Object[]{aStack}), + // GT_OreDictUnificator.get(OrePrefixes.ingot, aMaterial, 1L), aMaterial.mBlastFurnaceTemp * + // 2); + } + } + } + break; + } + } + + public boolean addBlastRecipe( + ItemStack input1, + ItemStack input2, + FluidStack fluid1, + FluidStack fluid2, + ItemStack output1, + ItemStack output2, + int time, + int euCost, + Materials smeltInto) { + + // Set up variables. + ItemStack[] components; + int count = 0; + + if (smeltInto == Materials._NULL) { + // If the material is null then we probably don't want to try. + return false; + } + if (input1 != null && input2 != null) { + count = 2; + } else if (input1 == null && input2 == null) { + // If both inputs are null, then we don't want to try. + return false; + } else { + count = 1; + } + // Set up input components. + ItemStack configCircuit = ItemUtils.getGregtechCircuit(count); + components = new ItemStack[] {configCircuit, input1, input2}; + if (fluid1 != null || fluid2 != null) { + // If it uses an input fluid, we cannot handle this. So let's not try. (Annealed copper for example) + // return false; + if (fluid1 != null && fluid2 != null) { + // Cannot handle two input fluids + return false; + } + + FluidStack mInputfluidstack; + mInputfluidstack = (fluid1 != null) ? fluid1 : fluid2; + + // Try with new handler + // Add Blast Smelter Recipe. + return CORE.RA.addBlastSmelterRecipe( + components, + mInputfluidstack, + smeltInto.mSmeltInto.getMolten(144L), + 100, + MathUtils.roundToClosestInt(time * 0.8), + euCost); // EU Cost + } + + // Add Blast Smelter Recipe. + return CORE.RA.addBlastSmelterRecipe( + components, + smeltInto.mSmeltInto.getMolten(144L), + 100, + MathUtils.roundToClosestInt(time * 0.8), + euCost); // EU Cost + } +} diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelterGT_GTNH.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelterGT_GTNH.java index 3ea1eeef62..f9e083a44a 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelterGT_GTNH.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelterGT_GTNH.java @@ -1,7 +1,6 @@ package gtPlusPlus.xmod.gregtech.loaders; import gregtech.api.util.*; - import gtPlusPlus.api.objects.Logger; import gtPlusPlus.api.objects.minecraft.ItemStackData; import gtPlusPlus.core.lib.CORE; @@ -9,234 +8,248 @@ import gtPlusPlus.core.recipe.common.CI; import gtPlusPlus.core.util.math.MathUtils; import gtPlusPlus.core.util.minecraft.FluidUtils; import gtPlusPlus.core.util.minecraft.ItemUtils; -import net.minecraft.item.ItemStack; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.oredict.OreDictionary; - import java.util.ArrayList; import java.util.HashMap; import java.util.Map; +import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.oredict.OreDictionary; public class RecipeGen_BlastSmelterGT_GTNH { - private static Map<String, FluidStack> mCachedIngotToFluidRegistry = new HashMap<String, FluidStack>(); - private static Map<String, String> mCachedHotToColdRegistry = new HashMap<String, String>(); - - private synchronized static void setIngotToFluid(final ItemStackData stack, final FluidStack fluid) { - if (stack != null && fluid != null) { - mCachedIngotToFluidRegistry.put(stack.getUniqueDataIdentifier(), fluid); - } - } - - private synchronized static void setHotToCold(final ItemStackData hot, final ItemStackData cold) { - if (hot != null && cold != null) { - mCachedHotToColdRegistry.put(hot.getUniqueDataIdentifier(), cold.getUniqueDataIdentifier()); - } - } - - private synchronized static FluidStack getFluidFromIngot(final ItemStackData ingot) { - ItemStackData h = ingot; - if (mCachedIngotToFluidRegistry.containsKey(h.getUniqueDataIdentifier())) { - Logger.MACHINE_INFO("[ABS] mCachedIngotToFluidRegistry contains Output Ingot."); - return mCachedIngotToFluidRegistry.get(h.getUniqueDataIdentifier()); - } - if (mCachedHotToColdRegistry.containsKey(h.getUniqueDataIdentifier())) { - Logger.MACHINE_INFO("[ABS] mCachedHotToColdRegistry contains Output Ingot."); - return mCachedIngotToFluidRegistry.get(mCachedHotToColdRegistry.get(h.getUniqueDataIdentifier())); - } - Logger.MACHINE_INFO("[ABS] Neither Cache contains Output Ingot."); - return null; - } - - private static boolean isValid(final ItemStack[] inputs, final ItemStack outputs[], final FluidStack[] fluidIn, final FluidStack fluidOut) { - if (inputs != null && outputs != null && fluidIn != null && fluidOut != null && inputs.length > 0 && outputs.length > 0) { - return true; - } - return false; - } - - public synchronized static boolean generateGTNHBlastSmelterRecipesFromEBFList() { - - //Make a counting object - int mSuccess = 0; - - Logger.INFO("[ABS] Starting recipe generation based on EBF recipe map."); - Logger.INFO("[ABS] Caching Ingots and their Molten fluid.."); - //First, we make sure that we have a valid recipe map of Ingots/Dusts -> Fluids - if (GT_Recipe.GT_Recipe_Map.sFluidExtractionRecipes.mRecipeList.size() > 0) { - //So, let's check every recipe - for (GT_Recipe x : GT_Recipe.GT_Recipe_Map.sFluidExtractionRecipes.mRecipeList) { - ItemStack validInput = null; - FluidStack validOutput = null; - //If we the input is an ingot and it and the output are valid, map it to cache. - if (x.mInputs[0] != null) { - for(int tag: OreDictionary.getOreIDs(x.mInputs[0])) { - String oreName = OreDictionary.getOreName(tag).toLowerCase(); - String mType = "dust"; - if (CORE.GTNH) { - mType = "ingot"; - } - if(oreName.startsWith(mType) && !oreName.contains("double") && !oreName.contains("triple") && !oreName.contains("quad") && !oreName.contains("quintuple")) { - validInput = x.mInputs[0]; - } - } - } - if (x.mFluidOutputs[0] != null) { - validOutput = x.mFluidOutputs[0]; - } - if (validInput != null && validOutput != null) { - ItemStackData R = new ItemStackData(validInput); - setIngotToFluid(R, validOutput); - Logger.MACHINE_INFO("[ABS][I2F] Cached "+validInput.getDisplayName()+" to "+validOutput.getLocalizedName()+". Stored Under ID of "+R.getUniqueDataIdentifier()); - } - } - } - - Logger.INFO("[ABS] Caching Ingots and their Hot form..."); - //Second, we make sure that we have a valid recipe map of Hot Ingots -> Cold Ingots - if (GT_Recipe.GT_Recipe_Map.sVacuumRecipes.mRecipeList.size() > 0) { - //So, let's check every recipe - for (GT_Recipe x : GT_Recipe.GT_Recipe_Map.sVacuumRecipes.mRecipeList) { - ItemStack validInput = null; - ItemStack validOutput = null; - //If we the input is an ingot and it and the output are valid, map it to cache. - if (x.mInputs != null && x.mInputs.length > 0 && x.mInputs[0] != null) { - validInput = x.mInputs[0]; - } - if (x.mOutputs != null && x.mOutputs.length > 0 && x.mOutputs[0] != null) { - validOutput = x.mOutputs[0]; - } - if (validInput != null && validOutput != null) { - ItemStackData R1 = new ItemStackData(validInput); - ItemStackData R2 = new ItemStackData(validOutput); - setHotToCold(R1, R2); - Logger.MACHINE_INFO("[ABS][H2C] Cached "+validInput.getDisplayName()+" to "+validOutput.getDisplayName()+". Stored Under ID of "+R1.getUniqueDataIdentifier()+", links to ID "+R2.getUniqueDataIdentifier()); - } - } - } - - Logger.INFO("[ABS] Generating recipes based on existing EBF recipes."); - //Okay, so now lets Iterate existing EBF recipes. - if (GT_Recipe.GT_Recipe_Map.sBlastRecipes.mRecipeList.size() > 0) { - for (GT_Recipe x : GT_Recipe.GT_Recipe_Map.sBlastRecipes.mRecipeList) { - if (x == null) { - continue; - } - ItemStack[] inputs, outputs; - FluidStack[] inputsF; - int voltage, time, special; - boolean enabled; - inputs = x.mInputs.clone(); - outputs = x.mOutputs.clone(); - inputsF = x.mFluidInputs.clone(); - voltage = x.mEUt; - time = x.mDuration; - enabled = x.mEnabled; - special = x.mSpecialValue; - - //Check for GTNH, if it's found, continue to next recipe if the Temp is too high. - if (CORE.GTNH && special > 3600) { - Logger.MACHINE_INFO("[ABS] Skipping ABS addition for GTNH due to temp."); - continue; - } - else { - FluidStack mMoltenStack = null; - int mMoltenCount = 0; - //If We have a valid Output, let's try use our cached data to get it's molten form. - if (x.mOutputs != null && x.mOutputs[0] != null) { - mMoltenCount = x.mOutputs[0].stackSize; - ItemStackData R = new ItemStackData(x.mOutputs[0]); - Logger.MACHINE_INFO("[ABS] Found "+x.mOutputs[0].getDisplayName()+" as valid EBF output, finding it's fluid from the cache. We will require "+(144*mMoltenCount)+"L. Looking for ID "+R.getUniqueDataIdentifier()); - FluidStack tempFluid = getFluidFromIngot(R); - if (tempFluid != null) { - //Logger.MACHINE_INFO("[ABS] Got Fluid from Cache."); - mMoltenStack = FluidUtils.getFluidStack(tempFluid, mMoltenCount*144); - } - else { - Logger.MACHINE_INFO("[ABS] Failed to get Fluid from Cache."); - } - } - //If this recipe is enabled and we have a valid molten fluidstack, let's try add this recipe. - if (enabled && isValid(inputs, outputs, inputsF, mMoltenStack)) { - // Boolean to decide whether or not to create a new circuit later - boolean circuitFound = false; - - //Build correct input stack - ArrayList<ItemStack> aTempList = new ArrayList<ItemStack>(); - for (ItemStack recipeItem : inputs) { - if (ItemUtils.isControlCircuit(recipeItem)) { - circuitFound = true; - } - aTempList.add(recipeItem); - } - - inputs = aTempList.toArray(new ItemStack[aTempList.size()]); - int inputLength = inputs.length; - // If no circuit was found, increase array length by 1 to add circuit at newInput[0] - if (!circuitFound) { - inputLength++; - } - - ItemStack[] newInput = new ItemStack[inputLength]; - - int l = 0; - // If no circuit was found, add a circuit here - if (!circuitFound) { - l = 1; - newInput[0] = CI.getNumberedCircuit(inputs.length); - } - - for (ItemStack y : inputs) { - newInput[l++] = y; - } - - //Logger.MACHINE_INFO("[ABS] Generating ABS recipe for "+mMoltenStack.getLocalizedName()+"."); - if (CORE.RA.addBlastSmelterRecipe(newInput, (inputsF.length > 0 ? inputsF[0] : null), mMoltenStack, 100, MathUtils.roundToClosestInt(time*0.8), voltage, special)) { - //Logger.MACHINE_INFO("[ABS] Success."); - mSuccess++; - } - else { - Logger.MACHINE_INFO("[ABS] Failure."); - } - } - else { - if (!enabled) { - Logger.MACHINE_INFO("[ABS] Failure. EBF recipe was not enabled."); - } - else { - Logger.MACHINE_INFO("[ABS] Failure. Invalid Inputs or Outputs."); - if (inputs == null) { - Logger.MACHINE_INFO("[ABS] Inputs were not Valid."); - } - else { - Logger.MACHINE_INFO("[ABS] inputs size: "+inputs.length); - } - if (outputs == null) { - Logger.MACHINE_INFO("[ABS] Outputs were not Valid."); - } - else { - Logger.MACHINE_INFO("[ABS] outputs size: "+outputs.length); - } - if (inputsF == null) { - Logger.MACHINE_INFO("[ABS] Input Fluids were not Valid."); - } - else { - Logger.MACHINE_INFO("[ABS] inputsF size: "+inputsF.length); - } - if (mMoltenStack == null) { - Logger.MACHINE_INFO("[ABS] Output Fluid were not Valid."); - } - } - } - } - } - } - else { - Logger.MACHINE_INFO("[ABS] Failure. Did not find any EBF recipes to iterate."); - } - - Logger.INFO("[ABS] Processed "+mSuccess+" recipes."); - return mSuccess > 0; - } - + private static Map<String, FluidStack> mCachedIngotToFluidRegistry = new HashMap<String, FluidStack>(); + private static Map<String, String> mCachedHotToColdRegistry = new HashMap<String, String>(); + + private static synchronized void setIngotToFluid(final ItemStackData stack, final FluidStack fluid) { + if (stack != null && fluid != null) { + mCachedIngotToFluidRegistry.put(stack.getUniqueDataIdentifier(), fluid); + } + } + + private static synchronized void setHotToCold(final ItemStackData hot, final ItemStackData cold) { + if (hot != null && cold != null) { + mCachedHotToColdRegistry.put(hot.getUniqueDataIdentifier(), cold.getUniqueDataIdentifier()); + } + } + + private static synchronized FluidStack getFluidFromIngot(final ItemStackData ingot) { + ItemStackData h = ingot; + if (mCachedIngotToFluidRegistry.containsKey(h.getUniqueDataIdentifier())) { + Logger.MACHINE_INFO("[ABS] mCachedIngotToFluidRegistry contains Output Ingot."); + return mCachedIngotToFluidRegistry.get(h.getUniqueDataIdentifier()); + } + if (mCachedHotToColdRegistry.containsKey(h.getUniqueDataIdentifier())) { + Logger.MACHINE_INFO("[ABS] mCachedHotToColdRegistry contains Output Ingot."); + return mCachedIngotToFluidRegistry.get(mCachedHotToColdRegistry.get(h.getUniqueDataIdentifier())); + } + Logger.MACHINE_INFO("[ABS] Neither Cache contains Output Ingot."); + return null; + } + + private static boolean isValid( + final ItemStack[] inputs, + final ItemStack outputs[], + final FluidStack[] fluidIn, + final FluidStack fluidOut) { + if (inputs != null + && outputs != null + && fluidIn != null + && fluidOut != null + && inputs.length > 0 + && outputs.length > 0) { + return true; + } + return false; + } + + public static synchronized boolean generateGTNHBlastSmelterRecipesFromEBFList() { + + // Make a counting object + int mSuccess = 0; + + Logger.INFO("[ABS] Starting recipe generation based on EBF recipe map."); + Logger.INFO("[ABS] Caching Ingots and their Molten fluid.."); + // First, we make sure that we have a valid recipe map of Ingots/Dusts -> Fluids + if (GT_Recipe.GT_Recipe_Map.sFluidExtractionRecipes.mRecipeList.size() > 0) { + // So, let's check every recipe + for (GT_Recipe x : GT_Recipe.GT_Recipe_Map.sFluidExtractionRecipes.mRecipeList) { + ItemStack validInput = null; + FluidStack validOutput = null; + // If we the input is an ingot and it and the output are valid, map it to cache. + if (x.mInputs[0] != null) { + for (int tag : OreDictionary.getOreIDs(x.mInputs[0])) { + String oreName = OreDictionary.getOreName(tag).toLowerCase(); + String mType = "dust"; + if (CORE.GTNH) { + mType = "ingot"; + } + if (oreName.startsWith(mType) + && !oreName.contains("double") + && !oreName.contains("triple") + && !oreName.contains("quad") + && !oreName.contains("quintuple")) { + validInput = x.mInputs[0]; + } + } + } + if (x.mFluidOutputs[0] != null) { + validOutput = x.mFluidOutputs[0]; + } + if (validInput != null && validOutput != null) { + ItemStackData R = new ItemStackData(validInput); + setIngotToFluid(R, validOutput); + Logger.MACHINE_INFO("[ABS][I2F] Cached " + validInput.getDisplayName() + " to " + + validOutput.getLocalizedName() + ". Stored Under ID of " + R.getUniqueDataIdentifier()); + } + } + } + + Logger.INFO("[ABS] Caching Ingots and their Hot form..."); + // Second, we make sure that we have a valid recipe map of Hot Ingots -> Cold Ingots + if (GT_Recipe.GT_Recipe_Map.sVacuumRecipes.mRecipeList.size() > 0) { + // So, let's check every recipe + for (GT_Recipe x : GT_Recipe.GT_Recipe_Map.sVacuumRecipes.mRecipeList) { + ItemStack validInput = null; + ItemStack validOutput = null; + // If we the input is an ingot and it and the output are valid, map it to cache. + if (x.mInputs != null && x.mInputs.length > 0 && x.mInputs[0] != null) { + validInput = x.mInputs[0]; + } + if (x.mOutputs != null && x.mOutputs.length > 0 && x.mOutputs[0] != null) { + validOutput = x.mOutputs[0]; + } + if (validInput != null && validOutput != null) { + ItemStackData R1 = new ItemStackData(validInput); + ItemStackData R2 = new ItemStackData(validOutput); + setHotToCold(R1, R2); + Logger.MACHINE_INFO("[ABS][H2C] Cached " + validInput.getDisplayName() + " to " + + validOutput.getDisplayName() + ". Stored Under ID of " + R1.getUniqueDataIdentifier() + + ", links to ID " + R2.getUniqueDataIdentifier()); + } + } + } + + Logger.INFO("[ABS] Generating recipes based on existing EBF recipes."); + // Okay, so now lets Iterate existing EBF recipes. + if (GT_Recipe.GT_Recipe_Map.sBlastRecipes.mRecipeList.size() > 0) { + for (GT_Recipe x : GT_Recipe.GT_Recipe_Map.sBlastRecipes.mRecipeList) { + if (x == null) { + continue; + } + ItemStack[] inputs, outputs; + FluidStack[] inputsF; + int voltage, time, special; + boolean enabled; + inputs = x.mInputs.clone(); + outputs = x.mOutputs.clone(); + inputsF = x.mFluidInputs.clone(); + voltage = x.mEUt; + time = x.mDuration; + enabled = x.mEnabled; + special = x.mSpecialValue; + + // Check for GTNH, if it's found, continue to next recipe if the Temp is too high. + if (CORE.GTNH && special > 3600) { + Logger.MACHINE_INFO("[ABS] Skipping ABS addition for GTNH due to temp."); + continue; + } else { + FluidStack mMoltenStack = null; + int mMoltenCount = 0; + // If We have a valid Output, let's try use our cached data to get it's molten form. + if (x.mOutputs != null && x.mOutputs[0] != null) { + mMoltenCount = x.mOutputs[0].stackSize; + ItemStackData R = new ItemStackData(x.mOutputs[0]); + Logger.MACHINE_INFO("[ABS] Found " + x.mOutputs[0].getDisplayName() + + " as valid EBF output, finding it's fluid from the cache. We will require " + + (144 * mMoltenCount) + "L. Looking for ID " + R.getUniqueDataIdentifier()); + FluidStack tempFluid = getFluidFromIngot(R); + if (tempFluid != null) { + // Logger.MACHINE_INFO("[ABS] Got Fluid from Cache."); + mMoltenStack = FluidUtils.getFluidStack(tempFluid, mMoltenCount * 144); + } else { + Logger.MACHINE_INFO("[ABS] Failed to get Fluid from Cache."); + } + } + // If this recipe is enabled and we have a valid molten fluidstack, let's try add this recipe. + if (enabled && isValid(inputs, outputs, inputsF, mMoltenStack)) { + // Boolean to decide whether or not to create a new circuit later + boolean circuitFound = false; + + // Build correct input stack + ArrayList<ItemStack> aTempList = new ArrayList<ItemStack>(); + for (ItemStack recipeItem : inputs) { + if (ItemUtils.isControlCircuit(recipeItem)) { + circuitFound = true; + } + aTempList.add(recipeItem); + } + + inputs = aTempList.toArray(new ItemStack[aTempList.size()]); + int inputLength = inputs.length; + // If no circuit was found, increase array length by 1 to add circuit at newInput[0] + if (!circuitFound) { + inputLength++; + } + + ItemStack[] newInput = new ItemStack[inputLength]; + + int l = 0; + // If no circuit was found, add a circuit here + if (!circuitFound) { + l = 1; + newInput[0] = CI.getNumberedCircuit(inputs.length); + } + + for (ItemStack y : inputs) { + newInput[l++] = y; + } + + // Logger.MACHINE_INFO("[ABS] Generating ABS recipe for "+mMoltenStack.getLocalizedName()+"."); + if (CORE.RA.addBlastSmelterRecipe( + newInput, + (inputsF.length > 0 ? inputsF[0] : null), + mMoltenStack, + 100, + MathUtils.roundToClosestInt(time * 0.8), + voltage, + special)) { + // Logger.MACHINE_INFO("[ABS] Success."); + mSuccess++; + } else { + Logger.MACHINE_INFO("[ABS] Failure."); + } + } else { + if (!enabled) { + Logger.MACHINE_INFO("[ABS] Failure. EBF recipe was not enabled."); + } else { + Logger.MACHINE_INFO("[ABS] Failure. Invalid Inputs or Outputs."); + if (inputs == null) { + Logger.MACHINE_INFO("[ABS] Inputs were not Valid."); + } else { + Logger.MACHINE_INFO("[ABS] inputs size: " + inputs.length); + } + if (outputs == null) { + Logger.MACHINE_INFO("[ABS] Outputs were not Valid."); + } else { + Logger.MACHINE_INFO("[ABS] outputs size: " + outputs.length); + } + if (inputsF == null) { + Logger.MACHINE_INFO("[ABS] Input Fluids were not Valid."); + } else { + Logger.MACHINE_INFO("[ABS] inputsF size: " + inputsF.length); + } + if (mMoltenStack == null) { + Logger.MACHINE_INFO("[ABS] Output Fluid were not Valid."); + } + } + } + } + } + } else { + Logger.MACHINE_INFO("[ABS] Failure. Did not find any EBF recipes to iterate."); + } + + Logger.INFO("[ABS] Processed " + mSuccess + " recipes."); + return mSuccess > 0; + } } diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_DustGeneration.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_DustGeneration.java index 24c8eb488f..d3143b9706 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_DustGeneration.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_DustGeneration.java @@ -1,10 +1,5 @@ package gtPlusPlus.xmod.gregtech.loaders; -import java.util.HashSet; -import java.util.Set; - -import net.minecraft.item.ItemStack; - import gregtech.api.enums.GT_Values; import gregtech.api.enums.ItemList; import gregtech.api.util.GT_ModHandler; @@ -21,424 +16,428 @@ import gtPlusPlus.core.recipe.common.CI; import gtPlusPlus.core.util.math.MathUtils; import gtPlusPlus.core.util.minecraft.ItemUtils; import gtPlusPlus.core.util.minecraft.RecipeUtils; +import java.util.HashSet; +import java.util.Set; +import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; public class RecipeGen_DustGeneration extends RecipeGen_Base { - public final static Set<RunnableWithInfo<Material>> mRecipeGenMap = new HashSet<RunnableWithInfo<Material>>(); - static { - MaterialGenerator.mRecipeMapsToGenerate.put(mRecipeGenMap); - } - - public RecipeGen_DustGeneration(final Material M){ - this(M, false); - } - - public RecipeGen_DustGeneration(final Material M, final boolean O){ - this.toGenerate = M; - this.disableOptional = O; - mRecipeGenMap.add(this); - final ItemStack normalDust = M.getDust(1); - final ItemStack smallDust = M.getSmallDust(1); - final ItemStack tinyDust = M.getTinyDust(1); - if (tinyDust != null && normalDust != null) { - if (RecipeUtils.addShapedRecipe( - tinyDust, tinyDust, tinyDust, - tinyDust, tinyDust, tinyDust, - tinyDust, tinyDust, tinyDust, - normalDust)){ - Logger.INFO("9 Tiny dust to 1 Dust Recipe: "+M.getLocalizedName()+" - Success"); - } - else { - Logger.INFO("9 Tiny dust to 1 Dust Recipe: "+M.getLocalizedName()+" - Failed"); - } - - if (RecipeUtils.addShapedRecipe( - normalDust, null, null, - null, null, null, - null, null, null, - M.getTinyDust(9))){ - Logger.INFO("9 Tiny dust from 1 Recipe: "+M.getLocalizedName()+" - Success"); - } - else { - Logger.INFO("9 Tiny dust from 1 Recipe: "+M.getLocalizedName()+" - Failed"); - } - } - - if (smallDust != null && normalDust != null) { - if (RecipeUtils.addShapedRecipe( - smallDust, smallDust, null, - smallDust, smallDust, null, - null, null, null, - normalDust)){ - Logger.INFO("4 Small dust to 1 Dust Recipe: "+M.getLocalizedName()+" - Success"); - } - else { - Logger.INFO("4 Small dust to 1 Dust Recipe: "+M.getLocalizedName()+" - Failed"); - } - if (RecipeUtils.addShapedRecipe( - null, normalDust, null, - null, null, null, - null, null, null, - M.getSmallDust(4))){ - Logger.INFO("4 Small dust from 1 Dust Recipe: "+M.getLocalizedName()+" - Success"); - } - else { - Logger.INFO("4 Small dust from 1 Dust Recipe: "+M.getLocalizedName()+" - Failed"); - } - } - } - - @Override - public void run() { - generateRecipes(this.toGenerate, this.disableOptional); - } - - private void generateRecipes(final Material material, final boolean disableOptional){ - - Logger.INFO("Generating Shaped Crafting recipes for "+material.getLocalizedName()); - - final ItemStack normalDust = material.getDust(1); - final ItemStack smallDust = material.getSmallDust(1); - final ItemStack tinyDust = material.getTinyDust(1); - - final ItemStack[] inputStacks = material.getMaterialComposites(); - final ItemStack outputStacks = material.getDust(material.smallestStackSizeWhenProcessing); - - //Macerate blocks back to dusts. - final ItemStack materialBlock = material.getBlock(1); - final ItemStack materialFrameBox = material.getFrameBox(1); - - if (ItemUtils.checkForInvalidItems(materialBlock)) { - GT_ModHandler.addPulverisationRecipe(materialBlock, material.getDust(9)); - } - - if (ItemUtils.checkForInvalidItems(materialFrameBox)) { - GT_ModHandler.addPulverisationRecipe(materialFrameBox, material.getDust(2)); - } - - if (ItemUtils.checkForInvalidItems(smallDust) && ItemUtils.checkForInvalidItems(tinyDust)) { - generatePackagerRecipes(material); - } - - ItemStack ingot = material.getIngot(1); - if (ItemUtils.checkForInvalidItems(normalDust) && ItemUtils.checkForInvalidItems(ingot)) { - addFurnaceRecipe(material); - addMacerationRecipe(material); - } - - //Is this a composite? - if ((inputStacks != null) && !disableOptional){ - //Is this a composite? - Logger.WARNING("mixer length: "+inputStacks.length); - if ((inputStacks.length != 0) && (inputStacks.length <= 4)){ - //Log Input items - Logger.WARNING(ItemUtils.getArrayStackNames(inputStacks)); - final long[] inputStackSize = material.vSmallestRatio; - Logger.WARNING("mixer is stacksizeVar null? "+(inputStackSize != null)); - //Is smallest ratio invalid? - if (inputStackSize != null){ - //set stack sizes on an input ItemStack[] - for (short x=0;x<inputStacks.length;x++){ - if ((inputStacks[x] != null) && (inputStackSize[x] != 0)){ - inputStacks[x].stackSize = (int) inputStackSize[x]; - } - } - //Relog input values, with stack sizes - Logger.WARNING(ItemUtils.getArrayStackNames(inputStacks)); - - //Get us four ItemStacks to input into the mixer - ItemStack[] input = new ItemStack[4]; - - input[0] = (inputStacks.length >= 1) ? ((inputStacks[0] == null) ? null : inputStacks[0]) : null; - input[1] = (inputStacks.length >= 2) ? ((inputStacks[1] == null) ? null : inputStacks[1]) : null; - input[2] = (inputStacks.length >= 3) ? ((inputStacks[2] == null) ? null : inputStacks[2]) : null; - input[3] = (inputStacks.length >= 4) ? ((inputStacks[3] == null) ? null : inputStacks[3]) : null; - - - if (inputStacks.length == 1) { - input[1] = input[0]; - input[0] = CI.getNumberedCircuit(inputStacks.length+10); - } - else if (inputStacks.length == 2) { - input[2] = input[1]; - input[1] = input[0]; - input[0] = CI.getNumberedCircuit(inputStacks.length+10); - - } - else if (inputStacks.length == 3) { - input[3] = input[2]; - input[2] = input[1]; - input[1] = input[0]; - input[0] = CI.getNumberedCircuit(inputStacks.length+10); - } - - - /*for (int g = 0; g<4; g++) { - if(inputStacks.length > g) { - input[g] = inputStacks[g] != null ? inputStacks[g] : null; - } - else { - input[g] = CI.getNumberedCircuit(g+10); - break; - } - }*/ - - //Add mixer Recipe - FluidStack oxygen = GT_Values.NF; - if (material.getComposites() != null){ - for (final MaterialStack x : material.getComposites()){ - if (!material.getComposites().isEmpty()){ - if (x != null){ - if (x.getStackMaterial() != null){ - if (x.getStackMaterial().getDust(1) == null){ - if (x.getStackMaterial().getState() != MaterialState.SOLID && x.getStackMaterial().getState() != MaterialState.ORE && x.getStackMaterial().getState() != MaterialState.PLASMA){ - oxygen = x.getStackMaterial().getFluidStack(1000); - break; - } - } - } - } - } - } - } - - input = ItemUtils.cleanItemStackArray(input); - - //Add mixer Recipe - if (GT_Values.RA.addMixerRecipe( - input[0], input[1], - input[2], input[3], - oxygen, - null, - outputStacks, - (int) Math.max(material.getMass() * 2L * 1, 1), - material.vVoltageMultiplier)) //Was 6, but let's try 2. This makes Potin LV, for example. - { - Logger.WARNING("Dust Mixer Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Logger.WARNING("Dust Mixer Recipe: "+material.getLocalizedName()+" - Failed"); - } - - //Add Shapeless recipe for low tier alloys. - /*if (tVoltageMultiplier <= 30){ - if (RecipeUtils.addShapedGregtechRecipe(inputStacks, outputStacks)){ - Logger.WARNING("Dust Shapeless Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Logger.WARNING("Dust Shapeless Recipe: "+material.getLocalizedName()+" - Failed"); - } - }*/ - } - } - } - - - - - - - } - - public static boolean addMixerRecipe_Standalone(final Material material){ - final ItemStack[] inputStacks = material.getMaterialComposites(); - final ItemStack outputStacks = material.getDust(material.smallestStackSizeWhenProcessing); - //Is this a composite? - if ((inputStacks != null)){ - //Is this a composite? - Logger.WARNING("mixer length: "+inputStacks.length); - if ((inputStacks.length >= 1) && (inputStacks.length <= 4)){ - //Log Input items - Logger.WARNING(ItemUtils.getArrayStackNames(inputStacks)); - final long[] inputStackSize = material.vSmallestRatio; - Logger.WARNING("mixer is stacksizeVar not null? "+(inputStackSize != null)); - //Is smallest ratio invalid? - if (inputStackSize != null){ - //set stack sizes on an input ItemStack[] - for (short x=0;x<inputStacks.length;x++){ - if ((inputStacks[x] != null) && (inputStackSize[x] != 0)){ - inputStacks[x].stackSize = (int) inputStackSize[x]; - } - } - //Relog input values, with stack sizes - Logger.WARNING(ItemUtils.getArrayStackNames(inputStacks)); - - //Get us four ItemStacks to input into the mixer - ItemStack input1, input2, input3, input4; - input1 = inputStacks[0]; - input2 = (inputStacks.length >= 2) ? (input2 = (inputStacks[1] == null) ? null : inputStacks[1]) : null; - input3 = (inputStacks.length >= 3) ? (input3 = (inputStacks[2] == null) ? null : inputStacks[2]) : null; - input4 = (inputStacks.length >= 4) ? (input4 = (inputStacks[3] == null) ? null : inputStacks[3]) : null; - - if (inputStacks.length == 1) { - input2 = input1; - input1 = CI.getNumberedCircuit(20); - } - else if (inputStacks.length == 2) { - input3 = input2; - input2 = input1; - input1 = CI.getNumberedCircuit(20); - - } - else if (inputStacks.length == 3) { - input4 = input3; - input3 = input2; - input2 = input1; - input1 = CI.getNumberedCircuit(20); - } - - //Add mixer Recipe - FluidStack oxygen = GT_Values.NF; - if (material.getComposites() != null){ - int compSlot = 0; - for (final MaterialStack x : material.getComposites()){ - if (!material.getComposites().isEmpty()){ - if (x != null){ - if (x.getStackMaterial() != null){ - if (x.getStackMaterial().getDust(1) == null){ - MaterialState f = x.getStackMaterial().getState(); - if (f == MaterialState.GAS || f == MaterialState.LIQUID || f == MaterialState.PURE_LIQUID || f == MaterialState.PURE_GAS){ - oxygen = x.getStackMaterial().getFluidStack((int) (material.vSmallestRatio[compSlot] * 1000)); - } - } - } - } - } - compSlot++; - } - - } - - //Add mixer Recipe - try { - if (GT_Values.RA.addMixerRecipe( - input1, input2, - input3, input4, - oxygen, - null, - outputStacks, - (int) Math.max(material.getMass() * 2L * 1, 1), - material.vVoltageMultiplier)) //Was 6, but let's try 2. This makes Potin LV, for example. - { - Logger.WARNING("Dust Mixer Recipe: "+material.getLocalizedName()+" - Success"); - return true; - } - else { - Logger.WARNING("Dust Mixer Recipe: "+material.getLocalizedName()+" - Failed"); - return false; - } - } - catch (Throwable t) { - t.printStackTrace(); - } - } - else { - Logger.WARNING("inputStackSize == NUll - "+material.getLocalizedName()); - } - } - else { - Logger.WARNING("InputStacks is out range 1-4 - "+material.getLocalizedName()); - } - } - else { - Logger.WARNING("InputStacks == NUll - "+material.getLocalizedName()); - } - return false; - } - - public static boolean generatePackagerRecipes(Material aMatInfo) { - AutoMap<Boolean> aResults = new AutoMap<Boolean>(); - //Small Dust - aResults.put(GT_Values.RA.addBoxingRecipe(GT_Utility.copyAmount(4L, new Object[]{aMatInfo.getSmallDust(4)}), ItemList.Schematic_Dust.get(0L, new Object[0]), aMatInfo.getDust(1), 100, 4)); - //Tiny Dust - aResults.put(GT_Values.RA.addBoxingRecipe(GT_Utility.copyAmount(9L, new Object[]{aMatInfo.getTinyDust(9)}), ItemList.Schematic_Dust.get(0L, new Object[0]), aMatInfo.getDust(1), 100, 4)); - - for (boolean b : aResults) { - if (!b) { - return false; - } - } - return true; - } - - private void addMacerationRecipe(Material aMatInfo){ - try { - Logger.MATERIALS("Adding Maceration recipe for "+aMatInfo.getLocalizedName()+" Ingot -> Dusts"); - final int chance = (aMatInfo.vTier*10)/MathUtils.randInt(10, 20); - GT_ModHandler.addPulverisationRecipe(aMatInfo.getIngot(1), aMatInfo.getDust(1), null, chance); - } - catch (Throwable t) { - t.printStackTrace(); - } - } - - private void addFurnaceRecipe(Material aMatInfo){ - - ItemStack aDust = aMatInfo.getDust(1); - ItemStack aOutput; - try { - if (aMatInfo.requiresBlastFurnace()) { - aOutput = aMatInfo.getHotIngot(1); - if (ItemUtils.checkForInvalidItems(aOutput)) { - if (addBlastFurnaceRecipe(aMatInfo, aDust, null, aOutput, null, aMatInfo.getMeltingPointK())){ - Logger.MATERIALS("Successfully added a blast furnace recipe for "+aMatInfo.getLocalizedName()); - } - else { - Logger.MATERIALS("Failed to add a blast furnace recipe for "+aMatInfo.getLocalizedName()); - } - } - else { - Logger.MATERIALS("Failed to add a blast furnace recipe for "+aMatInfo.getLocalizedName()); - } - } - else { - aOutput = aMatInfo.getIngot(1); - if (ItemUtils.checkForInvalidItems(aOutput)) { - if (CORE.RA.addSmeltingAndAlloySmeltingRecipe(aDust, aOutput)){ - Logger.MATERIALS("Successfully added a furnace recipe for "+aMatInfo.getLocalizedName()); - } - else { - Logger.MATERIALS("Failed to add a furnace recipe for "+aMatInfo.getLocalizedName()); - } - } - } - } - catch (Throwable t) { - t.printStackTrace(); - } - - } - - private boolean addBlastFurnaceRecipe(Material aMatInfo, final ItemStack input1, final ItemStack input2, final ItemStack output1, final ItemStack output2, final int tempRequired){ - - try { - int timeTaken = 125*aMatInfo.vTier*10; - - if (aMatInfo.vTier <= 4){ - timeTaken = 25*aMatInfo.vTier*10; - } - int aSlot = aMatInfo.vTier; - if (aSlot < 2) { - aSlot = 2; - } - long aVoltage = aMatInfo.vVoltageMultiplier; - - return GT_Values.RA.addBlastRecipe( - input1, - input2, - GT_Values.NF, GT_Values.NF, - output1, - output2, - timeTaken, - (int) aVoltage, - tempRequired); - } - catch (Throwable t) { - t.printStackTrace(); - return false; - } - } - + public static final Set<RunnableWithInfo<Material>> mRecipeGenMap = new HashSet<RunnableWithInfo<Material>>(); + + static { + MaterialGenerator.mRecipeMapsToGenerate.put(mRecipeGenMap); + } + + public RecipeGen_DustGeneration(final Material M) { + this(M, false); + } + + public RecipeGen_DustGeneration(final Material M, final boolean O) { + this.toGenerate = M; + this.disableOptional = O; + mRecipeGenMap.add(this); + final ItemStack normalDust = M.getDust(1); + final ItemStack smallDust = M.getSmallDust(1); + final ItemStack tinyDust = M.getTinyDust(1); + if (tinyDust != null && normalDust != null) { + if (RecipeUtils.addShapedRecipe( + tinyDust, + tinyDust, + tinyDust, + tinyDust, + tinyDust, + tinyDust, + tinyDust, + tinyDust, + tinyDust, + normalDust)) { + Logger.INFO("9 Tiny dust to 1 Dust Recipe: " + M.getLocalizedName() + " - Success"); + } else { + Logger.INFO("9 Tiny dust to 1 Dust Recipe: " + M.getLocalizedName() + " - Failed"); + } + + if (RecipeUtils.addShapedRecipe( + normalDust, null, null, null, null, null, null, null, null, M.getTinyDust(9))) { + Logger.INFO("9 Tiny dust from 1 Recipe: " + M.getLocalizedName() + " - Success"); + } else { + Logger.INFO("9 Tiny dust from 1 Recipe: " + M.getLocalizedName() + " - Failed"); + } + } + + if (smallDust != null && normalDust != null) { + if (RecipeUtils.addShapedRecipe( + smallDust, smallDust, null, smallDust, smallDust, null, null, null, null, normalDust)) { + Logger.INFO("4 Small dust to 1 Dust Recipe: " + M.getLocalizedName() + " - Success"); + } else { + Logger.INFO("4 Small dust to 1 Dust Recipe: " + M.getLocalizedName() + " - Failed"); + } + if (RecipeUtils.addShapedRecipe( + null, normalDust, null, null, null, null, null, null, null, M.getSmallDust(4))) { + Logger.INFO("4 Small dust from 1 Dust Recipe: " + M.getLocalizedName() + " - Success"); + } else { + Logger.INFO("4 Small dust from 1 Dust Recipe: " + M.getLocalizedName() + " - Failed"); + } + } + } + + @Override + public void run() { + generateRecipes(this.toGenerate, this.disableOptional); + } + + private void generateRecipes(final Material material, final boolean disableOptional) { + + Logger.INFO("Generating Shaped Crafting recipes for " + material.getLocalizedName()); + + final ItemStack normalDust = material.getDust(1); + final ItemStack smallDust = material.getSmallDust(1); + final ItemStack tinyDust = material.getTinyDust(1); + + final ItemStack[] inputStacks = material.getMaterialComposites(); + final ItemStack outputStacks = material.getDust(material.smallestStackSizeWhenProcessing); + + // Macerate blocks back to dusts. + final ItemStack materialBlock = material.getBlock(1); + final ItemStack materialFrameBox = material.getFrameBox(1); + + if (ItemUtils.checkForInvalidItems(materialBlock)) { + GT_ModHandler.addPulverisationRecipe(materialBlock, material.getDust(9)); + } + + if (ItemUtils.checkForInvalidItems(materialFrameBox)) { + GT_ModHandler.addPulverisationRecipe(materialFrameBox, material.getDust(2)); + } + + if (ItemUtils.checkForInvalidItems(smallDust) && ItemUtils.checkForInvalidItems(tinyDust)) { + generatePackagerRecipes(material); + } + + ItemStack ingot = material.getIngot(1); + if (ItemUtils.checkForInvalidItems(normalDust) && ItemUtils.checkForInvalidItems(ingot)) { + addFurnaceRecipe(material); + addMacerationRecipe(material); + } + + // Is this a composite? + if ((inputStacks != null) && !disableOptional) { + // Is this a composite? + Logger.WARNING("mixer length: " + inputStacks.length); + if ((inputStacks.length != 0) && (inputStacks.length <= 4)) { + // Log Input items + Logger.WARNING(ItemUtils.getArrayStackNames(inputStacks)); + final long[] inputStackSize = material.vSmallestRatio; + Logger.WARNING("mixer is stacksizeVar null? " + (inputStackSize != null)); + // Is smallest ratio invalid? + if (inputStackSize != null) { + // set stack sizes on an input ItemStack[] + for (short x = 0; x < inputStacks.length; x++) { + if ((inputStacks[x] != null) && (inputStackSize[x] != 0)) { + inputStacks[x].stackSize = (int) inputStackSize[x]; + } + } + // Relog input values, with stack sizes + Logger.WARNING(ItemUtils.getArrayStackNames(inputStacks)); + + // Get us four ItemStacks to input into the mixer + ItemStack[] input = new ItemStack[4]; + + input[0] = (inputStacks.length >= 1) ? ((inputStacks[0] == null) ? null : inputStacks[0]) : null; + input[1] = (inputStacks.length >= 2) ? ((inputStacks[1] == null) ? null : inputStacks[1]) : null; + input[2] = (inputStacks.length >= 3) ? ((inputStacks[2] == null) ? null : inputStacks[2]) : null; + input[3] = (inputStacks.length >= 4) ? ((inputStacks[3] == null) ? null : inputStacks[3]) : null; + + if (inputStacks.length == 1) { + input[1] = input[0]; + input[0] = CI.getNumberedCircuit(inputStacks.length + 10); + } else if (inputStacks.length == 2) { + input[2] = input[1]; + input[1] = input[0]; + input[0] = CI.getNumberedCircuit(inputStacks.length + 10); + + } else if (inputStacks.length == 3) { + input[3] = input[2]; + input[2] = input[1]; + input[1] = input[0]; + input[0] = CI.getNumberedCircuit(inputStacks.length + 10); + } + + /*for (int g = 0; g<4; g++) { + if(inputStacks.length > g) { + input[g] = inputStacks[g] != null ? inputStacks[g] : null; + } + else { + input[g] = CI.getNumberedCircuit(g+10); + break; + } + }*/ + + // Add mixer Recipe + FluidStack oxygen = GT_Values.NF; + if (material.getComposites() != null) { + for (final MaterialStack x : material.getComposites()) { + if (!material.getComposites().isEmpty()) { + if (x != null) { + if (x.getStackMaterial() != null) { + if (x.getStackMaterial().getDust(1) == null) { + if (x.getStackMaterial().getState() != MaterialState.SOLID + && x.getStackMaterial().getState() != MaterialState.ORE + && x.getStackMaterial().getState() != MaterialState.PLASMA) { + oxygen = x.getStackMaterial().getFluidStack(1000); + break; + } + } + } + } + } + } + } + + input = ItemUtils.cleanItemStackArray(input); + + // Add mixer Recipe + if (GT_Values.RA.addMixerRecipe( + input[0], + input[1], + input[2], + input[3], + oxygen, + null, + outputStacks, + (int) Math.max(material.getMass() * 2L * 1, 1), + material.vVoltageMultiplier)) // Was 6, but let's try 2. This makes Potin LV, for example. + { + Logger.WARNING("Dust Mixer Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING("Dust Mixer Recipe: " + material.getLocalizedName() + " - Failed"); + } + + // Add Shapeless recipe for low tier alloys. + /*if (tVoltageMultiplier <= 30){ + if (RecipeUtils.addShapedGregtechRecipe(inputStacks, outputStacks)){ + Logger.WARNING("Dust Shapeless Recipe: "+material.getLocalizedName()+" - Success"); + } + else { + Logger.WARNING("Dust Shapeless Recipe: "+material.getLocalizedName()+" - Failed"); + } + }*/ + } + } + } + } + + public static boolean addMixerRecipe_Standalone(final Material material) { + final ItemStack[] inputStacks = material.getMaterialComposites(); + final ItemStack outputStacks = material.getDust(material.smallestStackSizeWhenProcessing); + // Is this a composite? + if ((inputStacks != null)) { + // Is this a composite? + Logger.WARNING("mixer length: " + inputStacks.length); + if ((inputStacks.length >= 1) && (inputStacks.length <= 4)) { + // Log Input items + Logger.WARNING(ItemUtils.getArrayStackNames(inputStacks)); + final long[] inputStackSize = material.vSmallestRatio; + Logger.WARNING("mixer is stacksizeVar not null? " + (inputStackSize != null)); + // Is smallest ratio invalid? + if (inputStackSize != null) { + // set stack sizes on an input ItemStack[] + for (short x = 0; x < inputStacks.length; x++) { + if ((inputStacks[x] != null) && (inputStackSize[x] != 0)) { + inputStacks[x].stackSize = (int) inputStackSize[x]; + } + } + // Relog input values, with stack sizes + Logger.WARNING(ItemUtils.getArrayStackNames(inputStacks)); + + // Get us four ItemStacks to input into the mixer + ItemStack input1, input2, input3, input4; + input1 = inputStacks[0]; + input2 = (inputStacks.length >= 2) + ? (input2 = (inputStacks[1] == null) ? null : inputStacks[1]) + : null; + input3 = (inputStacks.length >= 3) + ? (input3 = (inputStacks[2] == null) ? null : inputStacks[2]) + : null; + input4 = (inputStacks.length >= 4) + ? (input4 = (inputStacks[3] == null) ? null : inputStacks[3]) + : null; + + if (inputStacks.length == 1) { + input2 = input1; + input1 = CI.getNumberedCircuit(20); + } else if (inputStacks.length == 2) { + input3 = input2; + input2 = input1; + input1 = CI.getNumberedCircuit(20); + + } else if (inputStacks.length == 3) { + input4 = input3; + input3 = input2; + input2 = input1; + input1 = CI.getNumberedCircuit(20); + } + + // Add mixer Recipe + FluidStack oxygen = GT_Values.NF; + if (material.getComposites() != null) { + int compSlot = 0; + for (final MaterialStack x : material.getComposites()) { + if (!material.getComposites().isEmpty()) { + if (x != null) { + if (x.getStackMaterial() != null) { + if (x.getStackMaterial().getDust(1) == null) { + MaterialState f = + x.getStackMaterial().getState(); + if (f == MaterialState.GAS + || f == MaterialState.LIQUID + || f == MaterialState.PURE_LIQUID + || f == MaterialState.PURE_GAS) { + oxygen = x.getStackMaterial().getFluidStack((int) + (material.vSmallestRatio[compSlot] * 1000)); + } + } + } + } + } + compSlot++; + } + } + + // Add mixer Recipe + try { + if (GT_Values.RA.addMixerRecipe( + input1, + input2, + input3, + input4, + oxygen, + null, + outputStacks, + (int) Math.max(material.getMass() * 2L * 1, 1), + material.vVoltageMultiplier)) // Was 6, but let's try 2. This makes Potin LV, for + // example. + { + Logger.WARNING("Dust Mixer Recipe: " + material.getLocalizedName() + " - Success"); + return true; + } else { + Logger.WARNING("Dust Mixer Recipe: " + material.getLocalizedName() + " - Failed"); + return false; + } + } catch (Throwable t) { + t.printStackTrace(); + } + } else { + Logger.WARNING("inputStackSize == NUll - " + material.getLocalizedName()); + } + } else { + Logger.WARNING("InputStacks is out range 1-4 - " + material.getLocalizedName()); + } + } else { + Logger.WARNING("InputStacks == NUll - " + material.getLocalizedName()); + } + return false; + } + + public static boolean generatePackagerRecipes(Material aMatInfo) { + AutoMap<Boolean> aResults = new AutoMap<Boolean>(); + // Small Dust + aResults.put(GT_Values.RA.addBoxingRecipe( + GT_Utility.copyAmount(4L, new Object[] {aMatInfo.getSmallDust(4)}), + ItemList.Schematic_Dust.get(0L, new Object[0]), + aMatInfo.getDust(1), + 100, + 4)); + // Tiny Dust + aResults.put(GT_Values.RA.addBoxingRecipe( + GT_Utility.copyAmount(9L, new Object[] {aMatInfo.getTinyDust(9)}), + ItemList.Schematic_Dust.get(0L, new Object[0]), + aMatInfo.getDust(1), + 100, + 4)); + + for (boolean b : aResults) { + if (!b) { + return false; + } + } + return true; + } + + private void addMacerationRecipe(Material aMatInfo) { + try { + Logger.MATERIALS("Adding Maceration recipe for " + aMatInfo.getLocalizedName() + " Ingot -> Dusts"); + final int chance = (aMatInfo.vTier * 10) / MathUtils.randInt(10, 20); + GT_ModHandler.addPulverisationRecipe(aMatInfo.getIngot(1), aMatInfo.getDust(1), null, chance); + } catch (Throwable t) { + t.printStackTrace(); + } + } + + private void addFurnaceRecipe(Material aMatInfo) { + + ItemStack aDust = aMatInfo.getDust(1); + ItemStack aOutput; + try { + if (aMatInfo.requiresBlastFurnace()) { + aOutput = aMatInfo.getHotIngot(1); + if (ItemUtils.checkForInvalidItems(aOutput)) { + if (addBlastFurnaceRecipe(aMatInfo, aDust, null, aOutput, null, aMatInfo.getMeltingPointK())) { + Logger.MATERIALS( + "Successfully added a blast furnace recipe for " + aMatInfo.getLocalizedName()); + } else { + Logger.MATERIALS("Failed to add a blast furnace recipe for " + aMatInfo.getLocalizedName()); + } + } else { + Logger.MATERIALS("Failed to add a blast furnace recipe for " + aMatInfo.getLocalizedName()); + } + } else { + aOutput = aMatInfo.getIngot(1); + if (ItemUtils.checkForInvalidItems(aOutput)) { + if (CORE.RA.addSmeltingAndAlloySmeltingRecipe(aDust, aOutput)) { + Logger.MATERIALS("Successfully added a furnace recipe for " + aMatInfo.getLocalizedName()); + } else { + Logger.MATERIALS("Failed to add a furnace recipe for " + aMatInfo.getLocalizedName()); + } + } + } + } catch (Throwable t) { + t.printStackTrace(); + } + } + + private boolean addBlastFurnaceRecipe( + Material aMatInfo, + final ItemStack input1, + final ItemStack input2, + final ItemStack output1, + final ItemStack output2, + final int tempRequired) { + + try { + int timeTaken = 125 * aMatInfo.vTier * 10; + + if (aMatInfo.vTier <= 4) { + timeTaken = 25 * aMatInfo.vTier * 10; + } + int aSlot = aMatInfo.vTier; + if (aSlot < 2) { + aSlot = 2; + } + long aVoltage = aMatInfo.vVoltageMultiplier; + + return GT_Values.RA.addBlastRecipe( + input1, + input2, + GT_Values.NF, + GT_Values.NF, + output1, + output2, + timeTaken, + (int) aVoltage, + tempRequired); + } catch (Throwable t) { + t.printStackTrace(); + return false; + } + } } - diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Extruder.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Extruder.java index 54e9716520..e675f2758f 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Extruder.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Extruder.java @@ -1,8 +1,5 @@ package gtPlusPlus.xmod.gregtech.loaders; -import java.util.HashSet; -import java.util.Set; - import gregtech.api.enums.GT_Values; import gregtech.api.enums.ItemList; import gtPlusPlus.api.interfaces.RunnableWithInfo; @@ -10,170 +7,154 @@ import gtPlusPlus.api.objects.Logger; import gtPlusPlus.core.material.Material; import gtPlusPlus.core.material.MaterialGenerator; import gtPlusPlus.core.util.minecraft.ItemUtils; +import java.util.HashSet; +import java.util.Set; import net.minecraft.item.ItemStack; public class RecipeGen_Extruder extends RecipeGen_Base { - public final static Set<RunnableWithInfo<Material>> mRecipeGenMap = new HashSet<RunnableWithInfo<Material>>(); - private static boolean mRotorShapeEnabled = false; - static { - MaterialGenerator.mRecipeMapsToGenerate.put(mRecipeGenMap); - mRotorShapeEnabled = ItemUtils.doesItemListEntryExist("Shape_Extruder_Rotor"); - } - - public RecipeGen_Extruder(final Material M){ - this.toGenerate = M; - mRecipeGenMap.add(this); - } - - @Override - public void run() { - generateRecipes(this.toGenerate); - } - - private void generateRecipes(final Material material){ - - final ItemStack itemIngot = material.getIngot(1); - final ItemStack itemPlate = material.getPlate(1); - final ItemStack itemGear = material.getGear(1); - - final ItemStack shape_Plate = ItemList.Shape_Extruder_Plate.get(0); - final ItemStack shape_Ring = ItemList.Shape_Extruder_Ring.get(0); - final ItemStack shape_Gear = ItemList.Shape_Extruder_Gear.get(0); - final ItemStack shape_Rod = ItemList.Shape_Extruder_Rod.get(0); - final ItemStack shape_Bolt = ItemList.Shape_Extruder_Bolt.get(0); - final ItemStack shape_Block = ItemList.Shape_Extruder_Block.get(0); - final ItemStack shape_Ingot = ItemList.Shape_Extruder_Ingot.get(0); - - Logger.WARNING("Generating Extruder recipes for "+material.getLocalizedName()); - - - if (ItemUtils.checkForInvalidItems(material.getIngot(1)) && ItemUtils.checkForInvalidItems(material.getBlock(1))) { - //Ingot Recipe - if (GT_Values.RA.addExtruderRecipe( - material.getBlock(1), - shape_Ingot, - material.getIngot(9), - (int) Math.max(material.getMass() * 2L * 1, 1), - material.vVoltageMultiplier)){ - Logger.WARNING("Extruder Ingot Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Logger.WARNING("Extruder Ingot Recipe: "+material.getLocalizedName()+" - Failed"); - } - - //Block Recipe - if (GT_Values.RA.addExtruderRecipe( - material.getIngot(9), - shape_Block, - material.getBlock(1), - (int) Math.max(material.getMass() * 2L * 1, 1), - material.vVoltageMultiplier)){ - Logger.WARNING("Extruder Block Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Logger.WARNING("Extruder Block Recipe: "+material.getLocalizedName()+" - Failed"); - } - } - - - //Plate Recipe - if (ItemUtils.checkForInvalidItems(material.getIngot(1)) && ItemUtils.checkForInvalidItems(material.getPlate(1))) - if (GT_Values.RA.addExtruderRecipe( - itemIngot, - shape_Plate, - itemPlate, - 10, - material.vVoltageMultiplier)){ - Logger.WARNING("Extruder Plate Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Logger.WARNING("Extruder Plate Recipe: "+material.getLocalizedName()+" - Failed"); - } - - //Ring Recipe - if (ItemUtils.checkForInvalidItems(material.getIngot(1)) && ItemUtils.checkForInvalidItems(material.getRing(1))) - if (!material.isRadioactive){ - if (GT_Values.RA.addExtruderRecipe( - itemIngot, - shape_Ring, - material.getRing(4), - (int) Math.max(material.getMass() * 2L * 1, 1), - material.vVoltageMultiplier)){ - Logger.WARNING("Extruder Ring Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Logger.WARNING("Extruder Ring Recipe: "+material.getLocalizedName()+" - Failed"); - } - } - - - //Gear Recipe - if (ItemUtils.checkForInvalidItems(material.getIngot(1)) && ItemUtils.checkForInvalidItems(material.getGear(1))) - if (!material.isRadioactive){ - if (GT_Values.RA.addExtruderRecipe( - material.getIngot(4), - shape_Gear, - itemGear, - (int) Math.max(material.getMass() * 5L, 1), - material.vVoltageMultiplier)){ - Logger.WARNING("Extruder Gear Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Logger.WARNING("Extruder Gear Recipe: "+material.getLocalizedName()+" - Failed"); - } - } - - - //Rod Recipe - if (ItemUtils.checkForInvalidItems(material.getIngot(1)) && ItemUtils.checkForInvalidItems(material.getRod(1))) - if (GT_Values.RA.addExtruderRecipe( - itemIngot, - shape_Rod, - material.getRod(2), - (int) Math.max(material.getMass() * 2L * 1, 1), - material.vVoltageMultiplier)){ - Logger.WARNING("Extruder Rod Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Logger.WARNING("Extruder Rod Recipe: "+material.getLocalizedName()+" - Failed"); - } - - - //Bolt Recipe - if (ItemUtils.checkForInvalidItems(material.getIngot(1)) && ItemUtils.checkForInvalidItems(material.getBolt(1))) - if (!material.isRadioactive){ - if (GT_Values.RA.addExtruderRecipe( - itemIngot, - shape_Bolt, - material.getBolt(8), - (int) Math.max(material.getMass() * 2L * 1, 1), - material.vVoltageMultiplier)){ - Logger.WARNING("Extruder Bolt Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Logger.WARNING("Extruder Bolt Recipe: "+material.getLocalizedName()+" - Failed"); - } - } - - //Rotor Recipe - // Shape_Extruder_Rotor - if (mRotorShapeEnabled && ItemUtils.checkForInvalidItems(material.getIngot(1)) && ItemUtils.checkForInvalidItems(material.getRotor(1))) - if (GT_Values.RA.addExtruderRecipe( - material.getIngot(5), - ItemUtils.getValueOfItemList("Shape_Extruder_Rotor", 0, ItemUtils.getErrorStack(1)), - material.getRotor(1), - 200, - 60)){ - Logger.WARNING("Extruder Rotor Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Logger.WARNING("Extruder Rotor Recipe: "+material.getLocalizedName()+" - Failed"); - } - - - - - } - + public static final Set<RunnableWithInfo<Material>> mRecipeGenMap = new HashSet<RunnableWithInfo<Material>>(); + private static boolean mRotorShapeEnabled = false; + + static { + MaterialGenerator.mRecipeMapsToGenerate.put(mRecipeGenMap); + mRotorShapeEnabled = ItemUtils.doesItemListEntryExist("Shape_Extruder_Rotor"); + } + + public RecipeGen_Extruder(final Material M) { + this.toGenerate = M; + mRecipeGenMap.add(this); + } + + @Override + public void run() { + generateRecipes(this.toGenerate); + } + + private void generateRecipes(final Material material) { + + final ItemStack itemIngot = material.getIngot(1); + final ItemStack itemPlate = material.getPlate(1); + final ItemStack itemGear = material.getGear(1); + + final ItemStack shape_Plate = ItemList.Shape_Extruder_Plate.get(0); + final ItemStack shape_Ring = ItemList.Shape_Extruder_Ring.get(0); + final ItemStack shape_Gear = ItemList.Shape_Extruder_Gear.get(0); + final ItemStack shape_Rod = ItemList.Shape_Extruder_Rod.get(0); + final ItemStack shape_Bolt = ItemList.Shape_Extruder_Bolt.get(0); + final ItemStack shape_Block = ItemList.Shape_Extruder_Block.get(0); + final ItemStack shape_Ingot = ItemList.Shape_Extruder_Ingot.get(0); + + Logger.WARNING("Generating Extruder recipes for " + material.getLocalizedName()); + + if (ItemUtils.checkForInvalidItems(material.getIngot(1)) + && ItemUtils.checkForInvalidItems(material.getBlock(1))) { + // Ingot Recipe + if (GT_Values.RA.addExtruderRecipe( + material.getBlock(1), + shape_Ingot, + material.getIngot(9), + (int) Math.max(material.getMass() * 2L * 1, 1), + material.vVoltageMultiplier)) { + Logger.WARNING("Extruder Ingot Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING("Extruder Ingot Recipe: " + material.getLocalizedName() + " - Failed"); + } + + // Block Recipe + if (GT_Values.RA.addExtruderRecipe( + material.getIngot(9), + shape_Block, + material.getBlock(1), + (int) Math.max(material.getMass() * 2L * 1, 1), + material.vVoltageMultiplier)) { + Logger.WARNING("Extruder Block Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING("Extruder Block Recipe: " + material.getLocalizedName() + " - Failed"); + } + } + + // Plate Recipe + if (ItemUtils.checkForInvalidItems(material.getIngot(1)) + && ItemUtils.checkForInvalidItems(material.getPlate(1))) + if (GT_Values.RA.addExtruderRecipe(itemIngot, shape_Plate, itemPlate, 10, material.vVoltageMultiplier)) { + Logger.WARNING("Extruder Plate Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING("Extruder Plate Recipe: " + material.getLocalizedName() + " - Failed"); + } + + // Ring Recipe + if (ItemUtils.checkForInvalidItems(material.getIngot(1)) && ItemUtils.checkForInvalidItems(material.getRing(1))) + if (!material.isRadioactive) { + if (GT_Values.RA.addExtruderRecipe( + itemIngot, + shape_Ring, + material.getRing(4), + (int) Math.max(material.getMass() * 2L * 1, 1), + material.vVoltageMultiplier)) { + Logger.WARNING("Extruder Ring Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING("Extruder Ring Recipe: " + material.getLocalizedName() + " - Failed"); + } + } + + // Gear Recipe + if (ItemUtils.checkForInvalidItems(material.getIngot(1)) && ItemUtils.checkForInvalidItems(material.getGear(1))) + if (!material.isRadioactive) { + if (GT_Values.RA.addExtruderRecipe( + material.getIngot(4), + shape_Gear, + itemGear, + (int) Math.max(material.getMass() * 5L, 1), + material.vVoltageMultiplier)) { + Logger.WARNING("Extruder Gear Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING("Extruder Gear Recipe: " + material.getLocalizedName() + " - Failed"); + } + } + + // Rod Recipe + if (ItemUtils.checkForInvalidItems(material.getIngot(1)) && ItemUtils.checkForInvalidItems(material.getRod(1))) + if (GT_Values.RA.addExtruderRecipe( + itemIngot, + shape_Rod, + material.getRod(2), + (int) Math.max(material.getMass() * 2L * 1, 1), + material.vVoltageMultiplier)) { + Logger.WARNING("Extruder Rod Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING("Extruder Rod Recipe: " + material.getLocalizedName() + " - Failed"); + } + + // Bolt Recipe + if (ItemUtils.checkForInvalidItems(material.getIngot(1)) && ItemUtils.checkForInvalidItems(material.getBolt(1))) + if (!material.isRadioactive) { + if (GT_Values.RA.addExtruderRecipe( + itemIngot, + shape_Bolt, + material.getBolt(8), + (int) Math.max(material.getMass() * 2L * 1, 1), + material.vVoltageMultiplier)) { + Logger.WARNING("Extruder Bolt Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING("Extruder Bolt Recipe: " + material.getLocalizedName() + " - Failed"); + } + } + + // Rotor Recipe + // Shape_Extruder_Rotor + if (mRotorShapeEnabled + && ItemUtils.checkForInvalidItems(material.getIngot(1)) + && ItemUtils.checkForInvalidItems(material.getRotor(1))) + if (GT_Values.RA.addExtruderRecipe( + material.getIngot(5), + ItemUtils.getValueOfItemList("Shape_Extruder_Rotor", 0, ItemUtils.getErrorStack(1)), + material.getRotor(1), + 200, + 60)) { + Logger.WARNING("Extruder Rotor Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING("Extruder Rotor Recipe: " + material.getLocalizedName() + " - Failed"); + } + } } diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_FluidCanning.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_FluidCanning.java index 488af954d6..4b1f407809 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_FluidCanning.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_FluidCanning.java @@ -1,232 +1,253 @@ package gtPlusPlus.xmod.gregtech.loaders; -import java.util.HashSet; - import gregtech.api.enums.GT_Values; +import gregtech.api.util.GTPP_Recipe; import gregtech.api.util.GT_Recipe; import gregtech.api.util.GT_Recipe.GT_Recipe_Map; -import gregtech.api.util.GTPP_Recipe; import gtPlusPlus.api.interfaces.RunnableWithInfo; import gtPlusPlus.api.objects.Logger; import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.util.minecraft.ItemUtils; import gtPlusPlus.core.util.reflect.ReflectionUtils; +import java.util.HashSet; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; public class RecipeGen_FluidCanning implements Runnable { - - public static void init() { - FluidCanningRunnableHandler x = new FluidCanningRunnableHandler(); - x.run(); - } - - private static class FluidCanningRunnableHandler implements RunnableWithInfo<String> { - - @Override - public void run() { - mHasRun = true; - for (RecipeGen_FluidCanning aRecipe : mCache) { - aRecipe.run(); - } - } - - @Override - public String getInfoData() { - return "Fluid Canning Recipes"; - } - } - - private static boolean mHasRun = false; - - private static HashSet<RecipeGen_FluidCanning> mCache = new HashSet<RecipeGen_FluidCanning>(); - - private static void addRunnableToRecipeCache(RecipeGen_FluidCanning r) { - if (mHasRun) { - CORE.crash(); - } - mCache.add(r); - } - - protected boolean disableOptional; - - private final GT_Recipe recipe; - private final boolean isValid; - - public boolean valid() { - return isValid; - } - public RecipeGen_FluidCanning(boolean aExtracting, ItemStack aEmpty, ItemStack aFull, FluidStack aFluid) { - this(aExtracting, aEmpty, aFull, aFluid, GT_Values.NF, null, null); - } - - public RecipeGen_FluidCanning(boolean aExtracting, ItemStack aEmpty, ItemStack aFull, FluidStack aFluidIn, FluidStack aFluidOut) { - this(aExtracting, aEmpty, aFull, aFluidIn, aFluidOut, null, null); - } - - public RecipeGen_FluidCanning(boolean aExtracting, ItemStack aEmpty, ItemStack aFull, FluidStack aFluid, Integer aDuration, Integer aEUt) { - this(aExtracting, aEmpty, aFull, aFluid, GT_Values.NF, aDuration, aEUt); - } - - // Alternative Constructor - public RecipeGen_FluidCanning(boolean aExtracting, ItemStack aEmpty, ItemStack aFull, FluidStack aFluidIn, FluidStack aFluidOut, Integer aDuration, Integer aEUt) { - ItemStack aInput; - ItemStack aOutput; - FluidStack aFluidInput; - FluidStack aFluidOutput; - - // Safety check on the duration - if (aDuration == null || aDuration <= 0) { - aDuration = (aFluidIn != null) ? (aFluidIn.amount / 62) : ((aFluidOut != null) ? (aFluidOut.amount / 62) : 10); - } - - // Safety check on the EU - if (aEUt == null || aEUt <= 0) { - if (aExtracting) { - aEUt = 2; - } - else { - aEUt = 1; - } - } - - // Set Item stacks correctly, invert if extraction recipe. - if (aExtracting) { - aInput = aFull; - aOutput = aEmpty; - aFluidInput = GT_Values.NF; - aFluidOutput = aFluidIn; - } - else { - aInput = aEmpty; - aOutput = aFull; - aFluidInput = aFluidIn; - aFluidOutput = aFluidOut != null ? aFluidOut : GT_Values.NF; - } - - //Check validity - - GTPP_Recipe aRecipe = new GTPP_Recipe( - true, - new ItemStack[] { aInput }, - new ItemStack[] { aOutput }, - null, - new int[] {10000}, - new FluidStack[] { aFluidInput }, - new FluidStack[] { aFluidOutput }, - aDuration, - aEUt, - 0); - - - // Check Valid - boolean aTempValidityCheck = false; - //Logger.INFO("Validity Check."); - if (aExtracting) { - Logger.INFO("Extracting."); - if (aInput != null && aFluidOutput != null) { - //Logger.INFO("Pass."); - aTempValidityCheck = true; - } - } - else { - //Logger.INFO("Canning."); - if (aInput != null && aOutput != null && (aFluidInput != null || aFluidOutput != null)) { - //Logger.INFO("Pass."); - aTempValidityCheck = true; - } - } - - - if (aTempValidityCheck) { - // Valid Recipe - recipe = aRecipe; - disableOptional = aExtracting; - isValid = true; - //Logger.INFO("Passed Validity Check. Hash: "+recipe.hashCode()); - //Logger.INFO("Mapped as: "+(disableOptional ? "Extracting" : "Canning")); - addRunnableToRecipeCache(this); - } - else { - //Logger.INFO("Failed Validity Check."); - isValid = false; - disableOptional = aExtracting; - aRecipe.mEnabled = false; - aRecipe.mHidden = true; - recipe = null; - } - } - - @Override - public void run() { - Logger.INFO("Processing Recipe with Hash: "+recipe.hashCode()); - generateRecipes(); - } - - private void generateRecipes() { - if (isValid && recipe != null) { - //Logger.INFO("Processing "+(disableOptional ? "Extracting" : "Canning")+" Recipe."); - if (this.disableOptional) { - addFluidExtractionRecipe(recipe); - } - else { - addFluidCannerRecipe(recipe); - } - } - } - - private final boolean addFluidExtractionRecipe(GT_Recipe aRecipe) { - boolean result = false; - CORE.crash(); - Logger.INFO("[FE-Debug] "+aRecipe.mFluidOutputs[0].amount+"L of "+aRecipe.mFluidOutputs[0].getLocalizedName()+" fluid extractor from 1 " + aRecipe.mInputs[0].getDisplayName() + " - Success. Time: "+aRecipe.mDuration+", Voltage: "+aRecipe.mEUt); - int aCount1 = GT_Recipe_Map.sFluidExtractionRecipes.mRecipeList.size(); - int aCount2 = aCount1; - GT_Recipe_Map.sFluidExtractionRecipes.addRecipe(aRecipe); - aCount1 = GT_Recipe_Map.sFluidExtractionRecipes.mRecipeList.size(); - result = aCount1 > aCount2; - if (result) { - //Logger.INFO("[FIND] Added Extraction recipe for "+ItemUtils.getArrayStackNames(aRecipe.mInputs)+", "+ItemUtils.getArrayStackNames(aRecipe.mOutputs)+", "+ItemUtils.getArrayStackNames(aRecipe.mFluidInputs)+", "+ItemUtils.getArrayStackNames(aRecipe.mFluidOutputs)); - } - else { - Logger.INFO("[ERROR] Failed adding Extraction recipe for "+ItemUtils.getArrayStackNames(aRecipe.mInputs)+", "+ItemUtils.getArrayStackNames(aRecipe.mOutputs)+", "+ItemUtils.getArrayStackNames(aRecipe.mFluidInputs)+", "+ItemUtils.getArrayStackNames(aRecipe.mFluidOutputs)); - dumpStack(); - } - return result; - } - - private final boolean addFluidCannerRecipe(GT_Recipe aRecipe) { - boolean result = false; - int aCount1 = GT_Recipe_Map.sFluidCannerRecipes.mRecipeList.size(); - int aCount2 = aCount1; - GT_Recipe_Map.sFluidCannerRecipes.addRecipe(aRecipe); - aCount1 = GT_Recipe_Map.sFluidCannerRecipes.mRecipeList.size(); - result = aCount1 > aCount2; - if (result) { - //Logger.INFO("[FIND] Added Canning recipe for "+ItemUtils.getArrayStackNames(aRecipe.mInputs)+", "+ItemUtils.getArrayStackNames(aRecipe.mOutputs)+", "+ItemUtils.getArrayStackNames(aRecipe.mFluidInputs)+", "+ItemUtils.getArrayStackNames(aRecipe.mFluidOutputs)); - } - else { - Logger.INFO("[ERROR] Failed adding Canning recipe for "+ItemUtils.getArrayStackNames(aRecipe.mInputs)+", "+ItemUtils.getArrayStackNames(aRecipe.mOutputs)+", "+ItemUtils.getArrayStackNames(aRecipe.mFluidInputs)+", "+ItemUtils.getArrayStackNames(aRecipe.mFluidOutputs)); - dumpStack(); - } - return result; - } - - private void dumpStack() { - int parents = 2; - for (int i=0;i<6;i++) { - Logger.INFO((disableOptional ? "EXTRACTING" : "CANNING")+" DEBUG | "+(i == 0 ? "Called from: " : "Parent: ")+ReflectionUtils.getMethodName(i+parents)); - } - - } - - private String buildLogString() { - int solidSize = getMapSize(GT_Recipe_Map.sCannerRecipes); - int fluidSize = getMapSize(GT_Recipe_Map.sFluidCannerRecipes); - return (disableOptional ? "EXTRACTING" : "CANNING")+" DEBUG | Solids: "+solidSize+" | Liquids: "+fluidSize+" | "; - } - - private final int getMapSize(GT_Recipe_Map aMap) { - return aMap.mRecipeList.size(); - } + public static void init() { + FluidCanningRunnableHandler x = new FluidCanningRunnableHandler(); + x.run(); + } + + private static class FluidCanningRunnableHandler implements RunnableWithInfo<String> { + + @Override + public void run() { + mHasRun = true; + for (RecipeGen_FluidCanning aRecipe : mCache) { + aRecipe.run(); + } + } + + @Override + public String getInfoData() { + return "Fluid Canning Recipes"; + } + } + + private static boolean mHasRun = false; + + private static HashSet<RecipeGen_FluidCanning> mCache = new HashSet<RecipeGen_FluidCanning>(); + + private static void addRunnableToRecipeCache(RecipeGen_FluidCanning r) { + if (mHasRun) { + CORE.crash(); + } + mCache.add(r); + } + + protected boolean disableOptional; + + private final GT_Recipe recipe; + private final boolean isValid; + + public boolean valid() { + return isValid; + } + + public RecipeGen_FluidCanning(boolean aExtracting, ItemStack aEmpty, ItemStack aFull, FluidStack aFluid) { + this(aExtracting, aEmpty, aFull, aFluid, GT_Values.NF, null, null); + } + + public RecipeGen_FluidCanning( + boolean aExtracting, ItemStack aEmpty, ItemStack aFull, FluidStack aFluidIn, FluidStack aFluidOut) { + this(aExtracting, aEmpty, aFull, aFluidIn, aFluidOut, null, null); + } + + public RecipeGen_FluidCanning( + boolean aExtracting, + ItemStack aEmpty, + ItemStack aFull, + FluidStack aFluid, + Integer aDuration, + Integer aEUt) { + this(aExtracting, aEmpty, aFull, aFluid, GT_Values.NF, aDuration, aEUt); + } + + // Alternative Constructor + public RecipeGen_FluidCanning( + boolean aExtracting, + ItemStack aEmpty, + ItemStack aFull, + FluidStack aFluidIn, + FluidStack aFluidOut, + Integer aDuration, + Integer aEUt) { + ItemStack aInput; + ItemStack aOutput; + FluidStack aFluidInput; + FluidStack aFluidOutput; + + // Safety check on the duration + if (aDuration == null || aDuration <= 0) { + aDuration = + (aFluidIn != null) ? (aFluidIn.amount / 62) : ((aFluidOut != null) ? (aFluidOut.amount / 62) : 10); + } + + // Safety check on the EU + if (aEUt == null || aEUt <= 0) { + if (aExtracting) { + aEUt = 2; + } else { + aEUt = 1; + } + } + + // Set Item stacks correctly, invert if extraction recipe. + if (aExtracting) { + aInput = aFull; + aOutput = aEmpty; + aFluidInput = GT_Values.NF; + aFluidOutput = aFluidIn; + } else { + aInput = aEmpty; + aOutput = aFull; + aFluidInput = aFluidIn; + aFluidOutput = aFluidOut != null ? aFluidOut : GT_Values.NF; + } + + // Check validity + + GTPP_Recipe aRecipe = new GTPP_Recipe( + true, + new ItemStack[] {aInput}, + new ItemStack[] {aOutput}, + null, + new int[] {10000}, + new FluidStack[] {aFluidInput}, + new FluidStack[] {aFluidOutput}, + aDuration, + aEUt, + 0); + + // Check Valid + boolean aTempValidityCheck = false; + // Logger.INFO("Validity Check."); + if (aExtracting) { + Logger.INFO("Extracting."); + if (aInput != null && aFluidOutput != null) { + // Logger.INFO("Pass."); + aTempValidityCheck = true; + } + } else { + // Logger.INFO("Canning."); + if (aInput != null && aOutput != null && (aFluidInput != null || aFluidOutput != null)) { + // Logger.INFO("Pass."); + aTempValidityCheck = true; + } + } + + if (aTempValidityCheck) { + // Valid Recipe + recipe = aRecipe; + disableOptional = aExtracting; + isValid = true; + // Logger.INFO("Passed Validity Check. Hash: "+recipe.hashCode()); + // Logger.INFO("Mapped as: "+(disableOptional ? "Extracting" : "Canning")); + addRunnableToRecipeCache(this); + } else { + // Logger.INFO("Failed Validity Check."); + isValid = false; + disableOptional = aExtracting; + aRecipe.mEnabled = false; + aRecipe.mHidden = true; + recipe = null; + } + } + + @Override + public void run() { + Logger.INFO("Processing Recipe with Hash: " + recipe.hashCode()); + generateRecipes(); + } + + private void generateRecipes() { + if (isValid && recipe != null) { + // Logger.INFO("Processing "+(disableOptional ? "Extracting" : "Canning")+" Recipe."); + if (this.disableOptional) { + addFluidExtractionRecipe(recipe); + } else { + addFluidCannerRecipe(recipe); + } + } + } + + private final boolean addFluidExtractionRecipe(GT_Recipe aRecipe) { + boolean result = false; + CORE.crash(); + Logger.INFO( + "[FE-Debug] " + aRecipe.mFluidOutputs[0].amount + "L of " + aRecipe.mFluidOutputs[0].getLocalizedName() + + " fluid extractor from 1 " + aRecipe.mInputs[0].getDisplayName() + " - Success. Time: " + + aRecipe.mDuration + ", Voltage: " + aRecipe.mEUt); + int aCount1 = GT_Recipe_Map.sFluidExtractionRecipes.mRecipeList.size(); + int aCount2 = aCount1; + GT_Recipe_Map.sFluidExtractionRecipes.addRecipe(aRecipe); + aCount1 = GT_Recipe_Map.sFluidExtractionRecipes.mRecipeList.size(); + result = aCount1 > aCount2; + if (result) { + // Logger.INFO("[FIND] Added Extraction recipe for "+ItemUtils.getArrayStackNames(aRecipe.mInputs)+", + // "+ItemUtils.getArrayStackNames(aRecipe.mOutputs)+", + // "+ItemUtils.getArrayStackNames(aRecipe.mFluidInputs)+", + // "+ItemUtils.getArrayStackNames(aRecipe.mFluidOutputs)); + } else { + Logger.INFO("[ERROR] Failed adding Extraction recipe for " + ItemUtils.getArrayStackNames(aRecipe.mInputs) + + ", " + ItemUtils.getArrayStackNames(aRecipe.mOutputs) + ", " + + ItemUtils.getArrayStackNames(aRecipe.mFluidInputs) + ", " + + ItemUtils.getArrayStackNames(aRecipe.mFluidOutputs)); + dumpStack(); + } + return result; + } + + private final boolean addFluidCannerRecipe(GT_Recipe aRecipe) { + boolean result = false; + int aCount1 = GT_Recipe_Map.sFluidCannerRecipes.mRecipeList.size(); + int aCount2 = aCount1; + GT_Recipe_Map.sFluidCannerRecipes.addRecipe(aRecipe); + aCount1 = GT_Recipe_Map.sFluidCannerRecipes.mRecipeList.size(); + result = aCount1 > aCount2; + if (result) { + // Logger.INFO("[FIND] Added Canning recipe for "+ItemUtils.getArrayStackNames(aRecipe.mInputs)+", + // "+ItemUtils.getArrayStackNames(aRecipe.mOutputs)+", + // "+ItemUtils.getArrayStackNames(aRecipe.mFluidInputs)+", + // "+ItemUtils.getArrayStackNames(aRecipe.mFluidOutputs)); + } else { + Logger.INFO("[ERROR] Failed adding Canning recipe for " + ItemUtils.getArrayStackNames(aRecipe.mInputs) + + ", " + ItemUtils.getArrayStackNames(aRecipe.mOutputs) + ", " + + ItemUtils.getArrayStackNames(aRecipe.mFluidInputs) + ", " + + ItemUtils.getArrayStackNames(aRecipe.mFluidOutputs)); + dumpStack(); + } + return result; + } + + private void dumpStack() { + int parents = 2; + for (int i = 0; i < 6; i++) { + Logger.INFO((disableOptional ? "EXTRACTING" : "CANNING") + " DEBUG | " + + (i == 0 ? "Called from: " : "Parent: ") + ReflectionUtils.getMethodName(i + parents)); + } + } + + private String buildLogString() { + int solidSize = getMapSize(GT_Recipe_Map.sCannerRecipes); + int fluidSize = getMapSize(GT_Recipe_Map.sFluidCannerRecipes); + return (disableOptional ? "EXTRACTING" : "CANNING") + " DEBUG | Solids: " + solidSize + " | Liquids: " + + fluidSize + " | "; + } + + private final int getMapSize(GT_Recipe_Map aMap) { + return aMap.mRecipeList.size(); + } } diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Fluids.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Fluids.java index 0661ea5ea4..50827ae39a 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Fluids.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Fluids.java @@ -1,240 +1,252 @@ package gtPlusPlus.xmod.gregtech.loaders; -import java.util.HashSet; -import java.util.Set; - import gregtech.api.enums.GT_Values; import gregtech.api.enums.ItemList; -import gregtech.api.enums.OrePrefixes; -import gregtech.api.util.GT_OreDictUnificator; import gtPlusPlus.api.interfaces.RunnableWithInfo; import gtPlusPlus.api.objects.Logger; import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.material.Material; import gtPlusPlus.core.material.MaterialGenerator; import gtPlusPlus.core.util.minecraft.ItemUtils; +import java.util.HashSet; +import java.util.Set; public class RecipeGen_Fluids extends RecipeGen_Base { - public final static Set<RunnableWithInfo<Material>> mRecipeGenMap = new HashSet<RunnableWithInfo<Material>>(); - private static boolean mRotorShapeEnabled = false; - static { - MaterialGenerator.mRecipeMapsToGenerate.put(mRecipeGenMap); - mRotorShapeEnabled = ItemUtils.doesItemListEntryExist("Shape_Extruder_Rotor"); - } - - public RecipeGen_Fluids(final Material M) { - this(M, false); - } - - public RecipeGen_Fluids(final Material M, final boolean dO) { - this.toGenerate = M; - this.disableOptional = dO; - mRecipeGenMap.add(this); - } - - @Override - public void run() { - generateRecipes(this.toGenerate, this.disableOptional); - } - - private void generateRecipes(final Material material, final boolean dO) { - - if (material == null) { - return; - } - - // Melting Shapes to fluid - if (material.getFluidStack(1) != null - && !material.getFluidStack(1).getUnlocalizedName().toLowerCase().contains("plasma")) { - - // Making Shapes from fluid - - // Ingot - if (ItemUtils.checkForInvalidItems(material.getIngot(1))) - if (GT_Values.RA.addFluidSolidifierRecipe(ItemList.Shape_Mold_Ingot.get(0), // Item Shape - material.getFluidStack(144), // Fluid Input - material.getIngot(1), // output - 32, // Duration - material.vVoltageMultiplier // Eu Tick - )) { - Logger.WARNING( - "144l fluid molder for 1 ingot Recipe: " + material.getLocalizedName() + " - Success"); - } else { - Logger.WARNING( - "144l fluid molder for 1 ingot Recipe: " + material.getLocalizedName() + " - Failed"); - } - - // Plate - if (ItemUtils.checkForInvalidItems(material.getPlate(1))) - if (GT_Values.RA.addFluidSolidifierRecipe(ItemList.Shape_Mold_Plate.get(0), // Item Shape - material.getFluidStack(144), // Fluid Input - material.getPlate(1), // output - 32, // Duration - material.vVoltageMultiplier // Eu Tick - )) { - Logger.WARNING( - "144l fluid molder for 1 plate Recipe: " + material.getLocalizedName() + " - Success"); - } else { - Logger.WARNING( - "144l fluid molder for 1 plate Recipe: " + material.getLocalizedName() + " - Failed"); - } - - // Nugget - if (ItemUtils.checkForInvalidItems(material.getNugget(1))) - if (GT_Values.RA.addFluidSolidifierRecipe(ItemList.Shape_Mold_Nugget.get(0), // Item Shape - material.getFluidStack(16), // Fluid Input - material.getNugget(1), // output - 16, // Duration - material.vVoltageMultiplier // Eu Tick - )) { - Logger.WARNING( - "16l fluid molder for 1 nugget Recipe: " + material.getLocalizedName() + " - Success"); - } else { - Logger.WARNING( - "16l fluid molder for 1 nugget Recipe: " + material.getLocalizedName() + " - Failed"); - } - - // Gears - if (ItemUtils.checkForInvalidItems(material.getGear(1))) - if (GT_Values.RA.addFluidSolidifierRecipe(ItemList.Shape_Mold_Gear.get(0), // Item Shape - material.getFluidStack(576), // Fluid Input - material.getGear(1), // output - 128, // Duration - material.vVoltageMultiplier // Eu Tick - )) { - Logger.WARNING( - "576l fluid molder for 1 gear Recipe: " + material.getLocalizedName() + " - Success"); - } else { - Logger.WARNING("576l fluid molder for 1 gear Recipe: " + material.getLocalizedName() + " - Failed"); - } - - // Blocks - if (ItemUtils.checkForInvalidItems(material.getBlock(1))) - if (GT_Values.RA.addFluidSolidifierRecipe(ItemList.Shape_Mold_Block.get(0), // Item Shape - material.getFluidStack(144 * 9), // Fluid Input - material.getBlock(1), // output - 288, // Duration - material.vVoltageMultiplier // Eu Tick - )) { - Logger.WARNING((144 * 9) + "l fluid molder from 1 block Recipe: " + material.getLocalizedName() - + " - Success"); - } else { - Logger.WARNING((144 * 9) + "l fluid molder from 1 block Recipe: " + material.getLocalizedName() - + " - Failed"); - } - - if (CORE.GTNH) { - - // GTNH - - // Shape_Mold_Rod - // Shape_Mold_Rod_Long - // Shape_Mold_Bolt, - // Shape_Mold_Screw, - // Shape_Mold_Ring, - - - ItemList mold_Rod = ItemUtils.getValueOfItemList("Shape_Mold_Rod", null); - ItemList mold_Rod_Long = ItemUtils.getValueOfItemList("Shape_Mold_Rod_Long", null); - ItemList mold_Bolt = ItemUtils.getValueOfItemList("Shape_Mold_Bolt", null); - ItemList mold_Screw = ItemUtils.getValueOfItemList("Shape_Mold_Screw", null); - ItemList mold_Ring = ItemUtils.getValueOfItemList("Shape_Mold_Ring", null); - ItemList mold_Rotor = ItemUtils.getValueOfItemList("Shape_Mold_Rotor", null); - - // Rod - if (ItemUtils.checkForInvalidItems(material.getRod(1))) - if (mold_Rod != null && GT_Values.RA.addFluidSolidifierRecipe(mold_Rod.get(0), // Item Shape - material.getFluidStack(72), // Fluid Input - material.getRod(1), // output - 150, // Duration - material.vVoltageMultiplier // Eu Tick - )) { - Logger.WARNING((144 * 9) + "l fluid molder from 1 rod Recipe: " + material.getLocalizedName() - + " - Success"); - } else { - Logger.WARNING((144 * 9) + "l fluid molder from 1 rod Recipe: " + material.getLocalizedName() - + " - Failed"); - } - - // Rod Long - if (ItemUtils.checkForInvalidItems(material.getLongRod(1))) - if (mold_Rod_Long != null && GT_Values.RA.addFluidSolidifierRecipe(mold_Rod_Long.get(0), // Item - // Shape - material.getFluidStack(144), // Fluid Input - material.getLongRod(1), // output - 300, // Duration - material.vVoltageMultiplier // Eu Tick - )) { - Logger.WARNING((144 * 9) + "l fluid molder from 1 rod long Recipe: " - + material.getLocalizedName() + " - Success"); - } else { - Logger.WARNING((144 * 9) + "l fluid molder from 1 rod long Recipe: " - + material.getLocalizedName() + " - Failed"); - } - - // Bolt - if (ItemUtils.checkForInvalidItems(material.getBolt(1))) - if (mold_Bolt != null && GT_Values.RA.addFluidSolidifierRecipe(mold_Bolt.get(0), // Item Shape - material.getFluidStack(18), // Fluid Input - material.getBolt(1), // output - 50, // Duration - material.vVoltageMultiplier // Eu Tick - )) { - Logger.WARNING((144 * 9) + "l fluid molder from 1 bolt Recipe: " + material.getLocalizedName() - + " - Success"); - } else { - Logger.WARNING((144 * 9) + "l fluid molder from 1 bolt Recipe: " + material.getLocalizedName() - + " - Failed"); - } - - // Screw - if (ItemUtils.checkForInvalidItems(material.getScrew(1))) - if (mold_Screw != null && GT_Values.RA.addFluidSolidifierRecipe(mold_Screw.get(0), // Item Shape - material.getFluidStack(18), // Fluid Input - material.getScrew(1), // output - 50, // Duration - material.vVoltageMultiplier // Eu Tick - )) { - Logger.WARNING((144 * 9) + "l fluid molder from 1 screw Recipe: " + material.getLocalizedName() - + " - Success"); - } else { - Logger.WARNING((144 * 9) + "l fluid molder from 1 screw Recipe: " + material.getLocalizedName() - + " - Failed"); - } - - // Ring - if (ItemUtils.checkForInvalidItems(material.getRing(1))) - if (mold_Ring != null && GT_Values.RA.addFluidSolidifierRecipe(mold_Ring.get(0), // Item Shape - material.getFluidStack(36), // Fluid Input - material.getRing(1), // output - 100, // Duration - material.vVoltageMultiplier // Eu Tick - )) { - Logger.WARNING((144 * 9) + "l fluid molder from 1 ring Recipe: " + material.getLocalizedName() - + " - Success"); - } else { - Logger.WARNING((144 * 9) + "l fluid molder from 1 ring Recipe: " + material.getLocalizedName() - + " - Failed"); - } - - // Rotor - if (ItemUtils.checkForInvalidItems(material.getRotor(1))) - if (mold_Rotor != null && GT_Values.RA.addFluidSolidifierRecipe(mold_Rotor.get(0), // Item Shape - material.getFluidStack(612), // Fluid Input - material.getRotor(1), // output - 100, // Duration - material.vVoltageMultiplier // Eu Tick - )) { - Logger.WARNING((144 * 9) + "l fluid molder from 1 rotor Recipe: " + material.getLocalizedName() - + " - Success"); - } else { - Logger.WARNING((144 * 9) + "l fluid molder from 1 rotor Recipe: " + material.getLocalizedName() - + " - Failed"); - } - - - } - } - } + public static final Set<RunnableWithInfo<Material>> mRecipeGenMap = new HashSet<RunnableWithInfo<Material>>(); + private static boolean mRotorShapeEnabled = false; + + static { + MaterialGenerator.mRecipeMapsToGenerate.put(mRecipeGenMap); + mRotorShapeEnabled = ItemUtils.doesItemListEntryExist("Shape_Extruder_Rotor"); + } + + public RecipeGen_Fluids(final Material M) { + this(M, false); + } + + public RecipeGen_Fluids(final Material M, final boolean dO) { + this.toGenerate = M; + this.disableOptional = dO; + mRecipeGenMap.add(this); + } + + @Override + public void run() { + generateRecipes(this.toGenerate, this.disableOptional); + } + + private void generateRecipes(final Material material, final boolean dO) { + + if (material == null) { + return; + } + + // Melting Shapes to fluid + if (material.getFluidStack(1) != null + && !material.getFluidStack(1).getUnlocalizedName().toLowerCase().contains("plasma")) { + + // Making Shapes from fluid + + // Ingot + if (ItemUtils.checkForInvalidItems(material.getIngot(1))) + if (GT_Values.RA.addFluidSolidifierRecipe( + ItemList.Shape_Mold_Ingot.get(0), // Item Shape + material.getFluidStack(144), // Fluid Input + material.getIngot(1), // output + 32, // Duration + material.vVoltageMultiplier // Eu Tick + )) { + Logger.WARNING( + "144l fluid molder for 1 ingot Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING( + "144l fluid molder for 1 ingot Recipe: " + material.getLocalizedName() + " - Failed"); + } + + // Plate + if (ItemUtils.checkForInvalidItems(material.getPlate(1))) + if (GT_Values.RA.addFluidSolidifierRecipe( + ItemList.Shape_Mold_Plate.get(0), // Item Shape + material.getFluidStack(144), // Fluid Input + material.getPlate(1), // output + 32, // Duration + material.vVoltageMultiplier // Eu Tick + )) { + Logger.WARNING( + "144l fluid molder for 1 plate Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING( + "144l fluid molder for 1 plate Recipe: " + material.getLocalizedName() + " - Failed"); + } + + // Nugget + if (ItemUtils.checkForInvalidItems(material.getNugget(1))) + if (GT_Values.RA.addFluidSolidifierRecipe( + ItemList.Shape_Mold_Nugget.get(0), // Item Shape + material.getFluidStack(16), // Fluid Input + material.getNugget(1), // output + 16, // Duration + material.vVoltageMultiplier // Eu Tick + )) { + Logger.WARNING( + "16l fluid molder for 1 nugget Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING( + "16l fluid molder for 1 nugget Recipe: " + material.getLocalizedName() + " - Failed"); + } + + // Gears + if (ItemUtils.checkForInvalidItems(material.getGear(1))) + if (GT_Values.RA.addFluidSolidifierRecipe( + ItemList.Shape_Mold_Gear.get(0), // Item Shape + material.getFluidStack(576), // Fluid Input + material.getGear(1), // output + 128, // Duration + material.vVoltageMultiplier // Eu Tick + )) { + Logger.WARNING( + "576l fluid molder for 1 gear Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING("576l fluid molder for 1 gear Recipe: " + material.getLocalizedName() + " - Failed"); + } + + // Blocks + if (ItemUtils.checkForInvalidItems(material.getBlock(1))) + if (GT_Values.RA.addFluidSolidifierRecipe( + ItemList.Shape_Mold_Block.get(0), // Item Shape + material.getFluidStack(144 * 9), // Fluid Input + material.getBlock(1), // output + 288, // Duration + material.vVoltageMultiplier // Eu Tick + )) { + Logger.WARNING((144 * 9) + "l fluid molder from 1 block Recipe: " + material.getLocalizedName() + + " - Success"); + } else { + Logger.WARNING((144 * 9) + "l fluid molder from 1 block Recipe: " + material.getLocalizedName() + + " - Failed"); + } + + if (CORE.GTNH) { + + // GTNH + + // Shape_Mold_Rod + // Shape_Mold_Rod_Long + // Shape_Mold_Bolt, + // Shape_Mold_Screw, + // Shape_Mold_Ring, + + ItemList mold_Rod = ItemUtils.getValueOfItemList("Shape_Mold_Rod", null); + ItemList mold_Rod_Long = ItemUtils.getValueOfItemList("Shape_Mold_Rod_Long", null); + ItemList mold_Bolt = ItemUtils.getValueOfItemList("Shape_Mold_Bolt", null); + ItemList mold_Screw = ItemUtils.getValueOfItemList("Shape_Mold_Screw", null); + ItemList mold_Ring = ItemUtils.getValueOfItemList("Shape_Mold_Ring", null); + ItemList mold_Rotor = ItemUtils.getValueOfItemList("Shape_Mold_Rotor", null); + + // Rod + if (ItemUtils.checkForInvalidItems(material.getRod(1))) + if (mold_Rod != null + && GT_Values.RA.addFluidSolidifierRecipe( + mold_Rod.get(0), // Item Shape + material.getFluidStack(72), // Fluid Input + material.getRod(1), // output + 150, // Duration + material.vVoltageMultiplier // Eu Tick + )) { + Logger.WARNING((144 * 9) + "l fluid molder from 1 rod Recipe: " + material.getLocalizedName() + + " - Success"); + } else { + Logger.WARNING((144 * 9) + "l fluid molder from 1 rod Recipe: " + material.getLocalizedName() + + " - Failed"); + } + + // Rod Long + if (ItemUtils.checkForInvalidItems(material.getLongRod(1))) + if (mold_Rod_Long != null + && GT_Values.RA.addFluidSolidifierRecipe( + mold_Rod_Long.get(0), // Item + // Shape + material.getFluidStack(144), // Fluid Input + material.getLongRod(1), // output + 300, // Duration + material.vVoltageMultiplier // Eu Tick + )) { + Logger.WARNING((144 * 9) + "l fluid molder from 1 rod long Recipe: " + + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING((144 * 9) + "l fluid molder from 1 rod long Recipe: " + + material.getLocalizedName() + " - Failed"); + } + + // Bolt + if (ItemUtils.checkForInvalidItems(material.getBolt(1))) + if (mold_Bolt != null + && GT_Values.RA.addFluidSolidifierRecipe( + mold_Bolt.get(0), // Item Shape + material.getFluidStack(18), // Fluid Input + material.getBolt(1), // output + 50, // Duration + material.vVoltageMultiplier // Eu Tick + )) { + Logger.WARNING((144 * 9) + "l fluid molder from 1 bolt Recipe: " + material.getLocalizedName() + + " - Success"); + } else { + Logger.WARNING((144 * 9) + "l fluid molder from 1 bolt Recipe: " + material.getLocalizedName() + + " - Failed"); + } + + // Screw + if (ItemUtils.checkForInvalidItems(material.getScrew(1))) + if (mold_Screw != null + && GT_Values.RA.addFluidSolidifierRecipe( + mold_Screw.get(0), // Item Shape + material.getFluidStack(18), // Fluid Input + material.getScrew(1), // output + 50, // Duration + material.vVoltageMultiplier // Eu Tick + )) { + Logger.WARNING((144 * 9) + "l fluid molder from 1 screw Recipe: " + material.getLocalizedName() + + " - Success"); + } else { + Logger.WARNING((144 * 9) + "l fluid molder from 1 screw Recipe: " + material.getLocalizedName() + + " - Failed"); + } + + // Ring + if (ItemUtils.checkForInvalidItems(material.getRing(1))) + if (mold_Ring != null + && GT_Values.RA.addFluidSolidifierRecipe( + mold_Ring.get(0), // Item Shape + material.getFluidStack(36), // Fluid Input + material.getRing(1), // output + 100, // Duration + material.vVoltageMultiplier // Eu Tick + )) { + Logger.WARNING((144 * 9) + "l fluid molder from 1 ring Recipe: " + material.getLocalizedName() + + " - Success"); + } else { + Logger.WARNING((144 * 9) + "l fluid molder from 1 ring Recipe: " + material.getLocalizedName() + + " - Failed"); + } + + // Rotor + if (ItemUtils.checkForInvalidItems(material.getRotor(1))) + if (mold_Rotor != null + && GT_Values.RA.addFluidSolidifierRecipe( + mold_Rotor.get(0), // Item Shape + material.getFluidStack(612), // Fluid Input + material.getRotor(1), // output + 100, // Duration + material.vVoltageMultiplier // Eu Tick + )) { + Logger.WARNING((144 * 9) + "l fluid molder from 1 rotor Recipe: " + material.getLocalizedName() + + " - Success"); + } else { + Logger.WARNING((144 * 9) + "l fluid molder from 1 rotor Recipe: " + material.getLocalizedName() + + " - Failed"); + } + } + } + } } diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Fluorite.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Fluorite.java index b285d41652..67819c8699 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Fluorite.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Fluorite.java @@ -1,224 +1,242 @@ package gtPlusPlus.xmod.gregtech.loaders; -import java.util.HashSet; -import java.util.Set; - import gregtech.api.enums.GT_Values; import gregtech.api.util.GT_ModHandler; import gtPlusPlus.api.interfaces.RunnableWithInfo; import gtPlusPlus.api.objects.Logger; -import gtPlusPlus.api.objects.data.AutoMap; -import gtPlusPlus.api.objects.data.Pair; import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.material.Material; import gtPlusPlus.core.material.MaterialGenerator; -import gtPlusPlus.core.material.MaterialStack; import gtPlusPlus.core.material.nuclear.FLUORIDES; -import gtPlusPlus.core.material.state.MaterialState; import gtPlusPlus.core.recipe.common.CI; import gtPlusPlus.core.util.minecraft.FluidUtils; import gtPlusPlus.core.util.minecraft.ItemUtils; import gtPlusPlus.core.util.minecraft.MaterialUtils; import gtPlusPlus.core.util.minecraft.RecipeUtils; +import java.util.HashSet; +import java.util.Set; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; public class RecipeGen_Fluorite extends RecipeGen_Base { - public final static Set<RunnableWithInfo<Material>> mRecipeGenMap = new HashSet<RunnableWithInfo<Material>>(); - - static { - MaterialGenerator.mRecipeMapsToGenerate.put(mRecipeGenMap); - } - - public RecipeGen_Fluorite(final Material material){ - this.toGenerate = material; - mRecipeGenMap.add(this); - - - /** - * Shaped Crafting - */ - RecipeUtils.addShapedRecipe( - CI.craftingToolHammer_Hard, null, null, - material.getCrushedPurified(1), null, null, - null, null, null, - material.getDustPurified(1)); - - RecipeUtils.addShapedRecipe( - CI.craftingToolHammer_Hard, null, null, - material.getCrushed(1), null, null, - null, null, null, - material.getDustImpure(1)); - - RecipeUtils.addShapedRecipe( - CI.craftingToolHammer_Hard, null, null, - material.getCrushedCentrifuged(1), null, null, - null, null, null, - material.getDust(1)); - - - - final ItemStack normalDust = material.getDust(1); - final ItemStack smallDust = material.getSmallDust(1); - final ItemStack tinyDust = material.getTinyDust(1); - - if (RecipeUtils.addShapedRecipe( - tinyDust, tinyDust, tinyDust, - tinyDust, tinyDust, tinyDust, - tinyDust, tinyDust, tinyDust, - normalDust)){ - Logger.WARNING("9 Tiny dust to 1 Dust Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Logger.WARNING("9 Tiny dust to 1 Dust Recipe: "+material.getLocalizedName()+" - Failed"); - } - - if (RecipeUtils.addShapedRecipe( - normalDust, null, null, - null, null, null, - null, null, null, - material.getTinyDust(9))){ - Logger.WARNING("9 Tiny dust from 1 Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Logger.WARNING("9 Tiny dust from 1 Recipe: "+material.getLocalizedName()+" - Failed"); - } - - if (RecipeUtils.addShapedRecipe( - smallDust, smallDust, null, - smallDust, smallDust, null, - null, null, null, - normalDust)){ - Logger.WARNING("4 Small dust to 1 Dust Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Logger.WARNING("4 Small dust to 1 Dust Recipe: "+material.getLocalizedName()+" - Failed"); - } - - if (RecipeUtils.addShapedRecipe( - null, normalDust, null, - null, null, null, - null, null, null, - material.getSmallDust(4))){ - Logger.WARNING("4 Small dust from 1 Dust Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Logger.WARNING("4 Small dust from 1 Dust Recipe: "+material.getLocalizedName()+" - Failed"); - } - } - - @Override - public void run() { - generateRecipes(this.toGenerate); - } - - public static void generateRecipes(final Material material){ - - int tVoltageMultiplier = MaterialUtils.getVoltageForTier(material.vTier); - - final ItemStack dustStone = ItemUtils.getItemStackOfAmountFromOreDict("dustStone", 1); - - - ItemStack tinyDustA = FLUORIDES.FLUORITE.getTinyDust(1); - ItemStack tinyDustB = FLUORIDES.FLUORITE.getTinyDust(1); - ItemStack matDust = FLUORIDES.FLUORITE.getDust(1); - ItemStack matDustA = FLUORIDES.FLUORITE.getDust(1); - - /** - * Package - */ - //Allow ore dusts to be packaged - if (ItemUtils.checkForInvalidItems(material.getSmallDust(1)) && ItemUtils.checkForInvalidItems(material.getTinyDust(1))) { - RecipeGen_DustGeneration.generatePackagerRecipes(material); - } - - - /** - * Macerate - */ - //Macerate ore to Crushed - if (GT_Values.RA.addPulveriserRecipe(material.getOre(1), new ItemStack[]{material.getCrushed(2)}, new int[]{10000}, 20*20, tVoltageMultiplier/2)){ - Logger.MATERIALS("[Macerator] Added Recipe: 'Macerate ore to Crushed ore'"); - } - //Macerate Centrifuged to Pure Dust - if (GT_Values.RA.addPulveriserRecipe(material.getCrushedCentrifuged(1), new ItemStack[]{matDust, matDustA}, new int[]{10000, 1000}, 20*20, tVoltageMultiplier/2)){ - Logger.MATERIALS("[Macerator] Added Recipe: 'Macerate Centrifuged ore to Pure Dust'"); - } - if (GT_ModHandler.addThermalCentrifugeRecipe(material.getCrushedPurified(1), (int) Math.min(5000L, Math.abs(material.getMass() * 20L)), material.getCrushedCentrifuged(1), tinyDustA, dustStone)){ - Logger.MATERIALS("[ThermalCentrifuge] Added Recipe: 'Washed ore to Centrifuged Ore' | Input: "+material.getCrushedPurified(1).getDisplayName()+" | Outputs: "+material.getCrushedCentrifuged(1).getDisplayName()+", "+tinyDustA.getDisplayName()+", "+dustStone.getDisplayName()+"."); - } - - GT_Values.RA.addChemicalBathRecipe( - FLUORIDES.FLUORITE.getCrushed(2), - FluidUtils.getFluidStack("hydrogen", 2000), - FLUORIDES.FLUORITE.getCrushedPurified(8), - FLUORIDES.FLUORITE.getDustImpure(4), - FLUORIDES.FLUORITE.getDustPurified(2), - new int[] { 10000, 5000, 1000 }, - 30 * 20, - 240); - - /** - * Forge Hammer - */ - if (GT_Values.RA.addForgeHammerRecipe(material.getCrushedCentrifuged(1), matDust, 10, tVoltageMultiplier/4)){ - Logger.MATERIALS("[ForgeHammer] Added Recipe: 'Crushed Centrifuged to Pure Dust'"); - } - - /** - * Centrifuge - */ - //Purified Dust to Clean - if (GT_Values.RA.addCentrifugeRecipe( - material.getDustPurified(1), null, - null, //In Fluid - null, //Out Fluid - matDust, tinyDustA,null, - null, null,null, - new int[]{10000, 10000}, //Chances - (int) Math.max(1L, material.getMass() * 8L), //Time - tVoltageMultiplier/2)){ //Eu - Logger.MATERIALS("[Centrifuge] Added Recipe: Purified Dust to Clean Dust"); - } - - //Impure Dust to Clean - if (GT_Values.RA.addCentrifugeRecipe( - material.getDustImpure(1), null, - null, //In Fluid - null, //Out Fluid - matDust, tinyDustB,null, - null, null,null, - new int[]{10000, 10000}, //Chances - (int) Math.max(1L, material.getMass() * 8L), //Time - tVoltageMultiplier/2)){ //Eu - Logger.MATERIALS("[Centrifuge] Added Recipe: Inpure Dust to Clean Dust"); - } - - // CaF2 + H2SO4 → CaSO4(solid) + 2 HF - FluidStack aGregtechHydro = FluidUtils.getFluidStack("hydrofluoricacid_gt5u", 16000); - if (aGregtechHydro == null) { - aGregtechHydro = FluidUtils.getFluidStack("hydrofluoricacid", 16000); - } - - CORE.RA.addDehydratorRecipe( - new ItemStack[] { - CI.getNumberedAdvancedCircuit(5), - FLUORIDES.FLUORITE.getDust(37), - }, - FluidUtils.getFluidStack("sulfuricacid", 8000), - aGregtechHydro, // Fluid output (slot 2) - new ItemStack[] { - ItemUtils.getItemStackOfAmountFromOreDict("dustCalciumSulfate", 15), - ItemUtils.getItemStackOfAmountFromOreDict("dustSilver", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustGold", 2), - ItemUtils.getItemStackOfAmountFromOreDict("dustTin", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustCopper", 2) - }, - new int[] { 10000, 1000, 1000, 3000, 2000 }, - 10 * 60 * 20, - 240); // EU - - } - + public static final Set<RunnableWithInfo<Material>> mRecipeGenMap = new HashSet<RunnableWithInfo<Material>>(); + + static { + MaterialGenerator.mRecipeMapsToGenerate.put(mRecipeGenMap); + } + + public RecipeGen_Fluorite(final Material material) { + this.toGenerate = material; + mRecipeGenMap.add(this); + + /** + * Shaped Crafting + */ + RecipeUtils.addShapedRecipe( + CI.craftingToolHammer_Hard, + null, + null, + material.getCrushedPurified(1), + null, + null, + null, + null, + null, + material.getDustPurified(1)); + + RecipeUtils.addShapedRecipe( + CI.craftingToolHammer_Hard, + null, + null, + material.getCrushed(1), + null, + null, + null, + null, + null, + material.getDustImpure(1)); + + RecipeUtils.addShapedRecipe( + CI.craftingToolHammer_Hard, + null, + null, + material.getCrushedCentrifuged(1), + null, + null, + null, + null, + null, + material.getDust(1)); + + final ItemStack normalDust = material.getDust(1); + final ItemStack smallDust = material.getSmallDust(1); + final ItemStack tinyDust = material.getTinyDust(1); + + if (RecipeUtils.addShapedRecipe( + tinyDust, tinyDust, tinyDust, tinyDust, tinyDust, tinyDust, tinyDust, tinyDust, tinyDust, normalDust)) { + Logger.WARNING("9 Tiny dust to 1 Dust Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING("9 Tiny dust to 1 Dust Recipe: " + material.getLocalizedName() + " - Failed"); + } + + if (RecipeUtils.addShapedRecipe( + normalDust, null, null, null, null, null, null, null, null, material.getTinyDust(9))) { + Logger.WARNING("9 Tiny dust from 1 Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING("9 Tiny dust from 1 Recipe: " + material.getLocalizedName() + " - Failed"); + } + + if (RecipeUtils.addShapedRecipe( + smallDust, smallDust, null, smallDust, smallDust, null, null, null, null, normalDust)) { + Logger.WARNING("4 Small dust to 1 Dust Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING("4 Small dust to 1 Dust Recipe: " + material.getLocalizedName() + " - Failed"); + } + + if (RecipeUtils.addShapedRecipe( + null, normalDust, null, null, null, null, null, null, null, material.getSmallDust(4))) { + Logger.WARNING("4 Small dust from 1 Dust Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING("4 Small dust from 1 Dust Recipe: " + material.getLocalizedName() + " - Failed"); + } + } + + @Override + public void run() { + generateRecipes(this.toGenerate); + } + + public static void generateRecipes(final Material material) { + + int tVoltageMultiplier = MaterialUtils.getVoltageForTier(material.vTier); + + final ItemStack dustStone = ItemUtils.getItemStackOfAmountFromOreDict("dustStone", 1); + + ItemStack tinyDustA = FLUORIDES.FLUORITE.getTinyDust(1); + ItemStack tinyDustB = FLUORIDES.FLUORITE.getTinyDust(1); + ItemStack matDust = FLUORIDES.FLUORITE.getDust(1); + ItemStack matDustA = FLUORIDES.FLUORITE.getDust(1); + + /** + * Package + */ + // Allow ore dusts to be packaged + if (ItemUtils.checkForInvalidItems(material.getSmallDust(1)) + && ItemUtils.checkForInvalidItems(material.getTinyDust(1))) { + RecipeGen_DustGeneration.generatePackagerRecipes(material); + } + + /** + * Macerate + */ + // Macerate ore to Crushed + if (GT_Values.RA.addPulveriserRecipe( + material.getOre(1), + new ItemStack[] {material.getCrushed(2)}, + new int[] {10000}, + 20 * 20, + tVoltageMultiplier / 2)) { + Logger.MATERIALS("[Macerator] Added Recipe: 'Macerate ore to Crushed ore'"); + } + // Macerate Centrifuged to Pure Dust + if (GT_Values.RA.addPulveriserRecipe( + material.getCrushedCentrifuged(1), + new ItemStack[] {matDust, matDustA}, + new int[] {10000, 1000}, + 20 * 20, + tVoltageMultiplier / 2)) { + Logger.MATERIALS("[Macerator] Added Recipe: 'Macerate Centrifuged ore to Pure Dust'"); + } + if (GT_ModHandler.addThermalCentrifugeRecipe( + material.getCrushedPurified(1), + (int) Math.min(5000L, Math.abs(material.getMass() * 20L)), + material.getCrushedCentrifuged(1), + tinyDustA, + dustStone)) { + Logger.MATERIALS("[ThermalCentrifuge] Added Recipe: 'Washed ore to Centrifuged Ore' | Input: " + + material.getCrushedPurified(1).getDisplayName() + " | Outputs: " + + material.getCrushedCentrifuged(1).getDisplayName() + ", " + tinyDustA.getDisplayName() + ", " + + dustStone.getDisplayName() + "."); + } + + GT_Values.RA.addChemicalBathRecipe( + FLUORIDES.FLUORITE.getCrushed(2), + FluidUtils.getFluidStack("hydrogen", 2000), + FLUORIDES.FLUORITE.getCrushedPurified(8), + FLUORIDES.FLUORITE.getDustImpure(4), + FLUORIDES.FLUORITE.getDustPurified(2), + new int[] {10000, 5000, 1000}, + 30 * 20, + 240); + + /** + * Forge Hammer + */ + if (GT_Values.RA.addForgeHammerRecipe(material.getCrushedCentrifuged(1), matDust, 10, tVoltageMultiplier / 4)) { + Logger.MATERIALS("[ForgeHammer] Added Recipe: 'Crushed Centrifuged to Pure Dust'"); + } + + /** + * Centrifuge + */ + // Purified Dust to Clean + if (GT_Values.RA.addCentrifugeRecipe( + material.getDustPurified(1), + null, + null, // In Fluid + null, // Out Fluid + matDust, + tinyDustA, + null, + null, + null, + null, + new int[] {10000, 10000}, // Chances + (int) Math.max(1L, material.getMass() * 8L), // Time + tVoltageMultiplier / 2)) { // Eu + Logger.MATERIALS("[Centrifuge] Added Recipe: Purified Dust to Clean Dust"); + } + + // Impure Dust to Clean + if (GT_Values.RA.addCentrifugeRecipe( + material.getDustImpure(1), + null, + null, // In Fluid + null, // Out Fluid + matDust, + tinyDustB, + null, + null, + null, + null, + new int[] {10000, 10000}, // Chances + (int) Math.max(1L, material.getMass() * 8L), // Time + tVoltageMultiplier / 2)) { // Eu + Logger.MATERIALS("[Centrifuge] Added Recipe: Inpure Dust to Clean Dust"); + } + + // CaF2 + H2SO4 → CaSO4(solid) + 2 HF + FluidStack aGregtechHydro = FluidUtils.getFluidStack("hydrofluoricacid_gt5u", 16000); + if (aGregtechHydro == null) { + aGregtechHydro = FluidUtils.getFluidStack("hydrofluoricacid", 16000); + } + + CORE.RA.addDehydratorRecipe( + new ItemStack[] { + CI.getNumberedAdvancedCircuit(5), FLUORIDES.FLUORITE.getDust(37), + }, + FluidUtils.getFluidStack("sulfuricacid", 8000), + aGregtechHydro, // Fluid output (slot 2) + new ItemStack[] { + ItemUtils.getItemStackOfAmountFromOreDict("dustCalciumSulfate", 15), + ItemUtils.getItemStackOfAmountFromOreDict("dustSilver", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustGold", 2), + ItemUtils.getItemStackOfAmountFromOreDict("dustTin", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustCopper", 2) + }, + new int[] {10000, 1000, 1000, 3000, 2000}, + 10 * 60 * 20, + 240); // EU + } } diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_MaterialProcessing.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_MaterialProcessing.java index 92d7f73ba4..958c97c652 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_MaterialProcessing.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_MaterialProcessing.java @@ -1,8 +1,5 @@ package gtPlusPlus.xmod.gregtech.loaders; -import java.util.HashSet; -import java.util.Set; - import gregtech.api.enums.GT_Values; import gtPlusPlus.api.interfaces.RunnableWithInfo; import gtPlusPlus.api.objects.Logger; @@ -15,246 +12,267 @@ import gtPlusPlus.core.material.MaterialStack; import gtPlusPlus.core.material.state.MaterialState; import gtPlusPlus.core.recipe.common.CI; import gtPlusPlus.core.util.minecraft.ItemUtils; +import java.util.HashSet; +import java.util.Set; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; public class RecipeGen_MaterialProcessing extends RecipeGen_Base { - public final static Set<RunnableWithInfo<Material>> mRecipeGenMap = new HashSet<RunnableWithInfo<Material>>(); - static { - MaterialGenerator.mRecipeMapsToGenerate.put(mRecipeGenMap); - } - - public RecipeGen_MaterialProcessing(final Material M){ - this(M, false); - } - - public RecipeGen_MaterialProcessing(final Material M, final boolean O){ - this.toGenerate = M; - this.disableOptional = O; - mRecipeGenMap.add(this); - } - - @Override - public void run() { - generateRecipes(this.toGenerate, this.disableOptional); - } - - private void generateRecipes(final Material material, final boolean disableOptional){ - if (disableOptional) { - return; - } - - if (material.getMaterialComposites().length > 1){ - Logger.MATERIALS("[Recipe Generator Debug] ["+material.getLocalizedName()+"]"); - final int tVoltageMultiplier = material.vVoltageMultiplier; - int[] partSizes = new int[99]; - if (material.vSmallestRatio != null) { - partSizes = new int[material.vSmallestRatio.length]; - for (int hu=0;hu<material.vSmallestRatio.length;hu++){ - partSizes[hu] = (int) material.vSmallestRatio[hu]; - } - } - AutoMap<Pair<Integer, Material>> componentMap = new AutoMap<Pair<Integer, Material>>(); - int alnsnfds = 0; - for (MaterialStack r : material.getComposites()){ - if (r != null){ - componentMap.put(new Pair<Integer, Material>(partSizes[alnsnfds], r.getStackMaterial())); - } - alnsnfds++; - } - - - - - - /** - * Centrifuge - */ - - //Process Dust - if (componentMap.size() > 0 && componentMap.size() <= 6){ - ItemStack mInternalOutputs[] = new ItemStack[6]; - int mChances[] = new int[6]; - int mCellCount = 0; - - int mTotalCount = 0; - - int mCounter = 0; - for (Pair<Integer, Material> f : componentMap){ - if (f.getValue().getState() != MaterialState.SOLID){ - Logger.MATERIALS("[Centrifuge] Found Fluid Component, adding "+f.getKey()+" cells of "+f.getValue().getLocalizedName()+"."); - mInternalOutputs[mCounter++] = f.getValue().getCell(f.getKey()); - mCellCount += f.getKey(); - mTotalCount += f.getKey(); - Logger.MATERIALS("[Centrifuge] In total, adding "+mCellCount+" cells for "+material.getLocalizedName()+" processing."); - } - else { - Logger.MATERIALS("[Centrifuge] Found Solid Component, adding "+f.getKey()+" dusts of "+f.getValue().getLocalizedName()+"."); - mInternalOutputs[mCounter++] = f.getValue().getDust(f.getKey()); - mTotalCount += f.getKey(); - } - } - - //Build Output Array - for (int g=0;g<mInternalOutputs.length;g++){ - Logger.MATERIALS("[Centrifuge] Is output["+g+"] valid with a chance? "+(mInternalOutputs[g] != null ? 10000 : 0)); - mChances[g] = (mInternalOutputs[g] != null ? 10000 : 0); - } - - ItemStack emptyCell = null; - if (mCellCount > 0){ - emptyCell = ItemUtils.getItemStackOfAmountFromOreDict("cellEmpty", mCellCount); - Logger.MATERIALS("[Centrifuge] Recipe now requires "+mCellCount+" empty cells as input."); - } - - ItemStack mainDust = material.getDust(material.smallestStackSizeWhenProcessing); - if (mainDust != null){ - Logger.MATERIALS("[Centrifuge] Recipe now requires "+material.smallestStackSizeWhenProcessing+"x "+mainDust.getDisplayName()+" as input."); - } - else { - mainDust = material.getDust(mTotalCount); - Logger.MATERIALS("[Centrifuge] Could not find valid input dust, trying alternative."); - if (mainDust != null){ - Logger.MATERIALS("[Centrifuge] Recipe now requires "+mTotalCount+"x "+mainDust.getDisplayName()+" as input."); - } - else { - Logger.MATERIALS("[Centrifuge] Could not find valid input dust, exiting."); - } - } - - for (int j=0;j<mInternalOutputs.length;j++){ - if (mInternalOutputs[j] == null){ - mInternalOutputs[j] = GT_Values.NI; - Logger.MATERIALS("[Centrifuge] Set slot "+j+" to null."); - } - else { - Logger.MATERIALS("[Centrifuge] Set slot "+j+" to "+mInternalOutputs[j].getDisplayName()+"."); - } - } - - try{ - if (addCentrifgeRecipe( - mainDust, - emptyCell, //input 2 - null, //Input fluid 1 - null, //Output fluid 1 - mInternalOutputs[0], - mInternalOutputs[1], - mInternalOutputs[2], - mInternalOutputs[3], - mInternalOutputs[4], - mInternalOutputs[5], - mChances, - 20*1*(tVoltageMultiplier/10), - tVoltageMultiplier)){ - Logger.MATERIALS("[Centrifuge] Generated Centrifuge recipe for "+material.getDust(1).getDisplayName()); - } - else { - Logger.MATERIALS("[Centrifuge] Failed to generate Centrifuge recipe for "+material.getDust(1).getDisplayName()); - } - } - catch(Throwable t){ - t.printStackTrace(); - } - } - else if (componentMap.size() > 6 && componentMap.size() <= 9){ - Logger.MATERIALS("[Issue][Electrolyzer] "+material.getLocalizedName()+" is composed of over 6 materials, so an electrolyzer recipe for processing cannot be generated. Trying to create one for the Dehydrator instead."); - - ItemStack mInternalOutputs[] = new ItemStack[9]; - int mChances[] = new int[9]; - int mCellCount = 0; - - int mTotalCount = 0; - - int mCounter = 0; - for (Pair<Integer, Material> f : componentMap){ - if (f.getValue().getState() != MaterialState.SOLID){ - Logger.MATERIALS("[Dehydrator] Found Fluid Component, adding "+f.getKey()+" cells of "+f.getValue().getLocalizedName()+"."); - mInternalOutputs[mCounter++] = f.getValue().getCell(f.getKey()); - mCellCount += f.getKey(); - mTotalCount += f.getKey(); - Logger.MATERIALS("[Dehydrator] In total, adding "+mCellCount+" cells for "+material.getLocalizedName()+" processing."); - } - else { - Logger.MATERIALS("[Dehydrator] Found Solid Component, adding "+f.getKey()+" dusts of "+f.getValue().getLocalizedName()+"."); - mInternalOutputs[mCounter++] = f.getValue().getDust(f.getKey()); - mTotalCount += f.getKey(); - } - } - - //Build Output Array - for (int g=0;g<mInternalOutputs.length;g++){ - Logger.MATERIALS("[Dehydrator] Is output["+g+"] valid with a chance? "+(mInternalOutputs[g] != null ? 10000 : 0)); - mChances[g] = (mInternalOutputs[g] != null ? 10000 : 0); - } - - ItemStack emptyCell = null; - if (mCellCount > 0){ - emptyCell = CI.emptyCells(mCellCount); - Logger.MATERIALS("[Dehydrator] Recipe now requires "+mCellCount+" empty cells as input."); - } - - ItemStack mainDust = material.getDust(material.smallestStackSizeWhenProcessing); - if (mainDust != null){ - Logger.MATERIALS("[Dehydrator] Recipe now requires "+material.smallestStackSizeWhenProcessing+"x "+mainDust.getDisplayName()+" as input."); - } - else { - mainDust = material.getDust(mTotalCount); - Logger.MATERIALS("[Dehydrator] Could not find valid input dust, trying alternative."); - if (mainDust != null){ - Logger.MATERIALS("[Dehydrator] Recipe now requires "+mTotalCount+"x "+mainDust.getDisplayName()+" as input."); - } - else { - Logger.MATERIALS("[Dehydrator] Could not find valid input dust, exiting."); - } - } - - for (int j=0;j<mInternalOutputs.length;j++){ - if (mInternalOutputs[j] == null){ - mInternalOutputs[j] = GT_Values.NI; - Logger.MATERIALS("[Dehydrator] Set slot "+j+" to null."); - } - else { - Logger.MATERIALS("[Dehydrator] Set slot "+j+" to "+mInternalOutputs[j].getDisplayName()+"."); - } - } - - try{ - - - if (CORE.RA.addDehydratorRecipe( - new ItemStack[]{mainDust, emptyCell}, - null, - null, - mInternalOutputs, - mChances, - 20*1*(tVoltageMultiplier/10), - tVoltageMultiplier)){ - Logger.MATERIALS("[Dehydrator] Generated Dehydrator recipe for "+material.getDust(1).getDisplayName()); - } - else { - Logger.MATERIALS("[Dehydrator] Failed to generate Dehydrator recipe for "+material.getDust(1).getDisplayName()); - } - } - catch(Throwable t){ - t.printStackTrace(); - } - - - } - - - - - - - - } - } - - public static boolean addCentrifgeRecipe(ItemStack aInput1, ItemStack aInput2, FluidStack aFluidInput, FluidStack aFluidOutput, ItemStack aOutput1, ItemStack aOutput2, ItemStack aOutput3, ItemStack aOutput4, ItemStack aOutput5, ItemStack aOutput6, int[] aChances, int aDuration, int aEUt) { - return GT_Values.RA.addCentrifugeRecipe(aInput1, aInput2, aFluidInput, aFluidOutput, aOutput1, aOutput2, aOutput3, aOutput4, aOutput5, aOutput6, aChances, aDuration, aEUt); - } - + public static final Set<RunnableWithInfo<Material>> mRecipeGenMap = new HashSet<RunnableWithInfo<Material>>(); + + static { + MaterialGenerator.mRecipeMapsToGenerate.put(mRecipeGenMap); + } + + public RecipeGen_MaterialProcessing(final Material M) { + this(M, false); + } + + public RecipeGen_MaterialProcessing(final Material M, final boolean O) { + this.toGenerate = M; + this.disableOptional = O; + mRecipeGenMap.add(this); + } + + @Override + public void run() { + generateRecipes(this.toGenerate, this.disableOptional); + } + + private void generateRecipes(final Material material, final boolean disableOptional) { + if (disableOptional) { + return; + } + + if (material.getMaterialComposites().length > 1) { + Logger.MATERIALS("[Recipe Generator Debug] [" + material.getLocalizedName() + "]"); + final int tVoltageMultiplier = material.vVoltageMultiplier; + int[] partSizes = new int[99]; + if (material.vSmallestRatio != null) { + partSizes = new int[material.vSmallestRatio.length]; + for (int hu = 0; hu < material.vSmallestRatio.length; hu++) { + partSizes[hu] = (int) material.vSmallestRatio[hu]; + } + } + AutoMap<Pair<Integer, Material>> componentMap = new AutoMap<Pair<Integer, Material>>(); + int alnsnfds = 0; + for (MaterialStack r : material.getComposites()) { + if (r != null) { + componentMap.put(new Pair<Integer, Material>(partSizes[alnsnfds], r.getStackMaterial())); + } + alnsnfds++; + } + + /** + * Centrifuge + */ + + // Process Dust + if (componentMap.size() > 0 && componentMap.size() <= 6) { + ItemStack mInternalOutputs[] = new ItemStack[6]; + int mChances[] = new int[6]; + int mCellCount = 0; + + int mTotalCount = 0; + + int mCounter = 0; + for (Pair<Integer, Material> f : componentMap) { + if (f.getValue().getState() != MaterialState.SOLID) { + Logger.MATERIALS("[Centrifuge] Found Fluid Component, adding " + f.getKey() + " cells of " + + f.getValue().getLocalizedName() + "."); + mInternalOutputs[mCounter++] = f.getValue().getCell(f.getKey()); + mCellCount += f.getKey(); + mTotalCount += f.getKey(); + Logger.MATERIALS("[Centrifuge] In total, adding " + mCellCount + " cells for " + + material.getLocalizedName() + " processing."); + } else { + Logger.MATERIALS("[Centrifuge] Found Solid Component, adding " + f.getKey() + " dusts of " + + f.getValue().getLocalizedName() + "."); + mInternalOutputs[mCounter++] = f.getValue().getDust(f.getKey()); + mTotalCount += f.getKey(); + } + } + + // Build Output Array + for (int g = 0; g < mInternalOutputs.length; g++) { + Logger.MATERIALS("[Centrifuge] Is output[" + g + "] valid with a chance? " + + (mInternalOutputs[g] != null ? 10000 : 0)); + mChances[g] = (mInternalOutputs[g] != null ? 10000 : 0); + } + + ItemStack emptyCell = null; + if (mCellCount > 0) { + emptyCell = ItemUtils.getItemStackOfAmountFromOreDict("cellEmpty", mCellCount); + Logger.MATERIALS("[Centrifuge] Recipe now requires " + mCellCount + " empty cells as input."); + } + + ItemStack mainDust = material.getDust(material.smallestStackSizeWhenProcessing); + if (mainDust != null) { + Logger.MATERIALS("[Centrifuge] Recipe now requires " + material.smallestStackSizeWhenProcessing + + "x " + mainDust.getDisplayName() + " as input."); + } else { + mainDust = material.getDust(mTotalCount); + Logger.MATERIALS("[Centrifuge] Could not find valid input dust, trying alternative."); + if (mainDust != null) { + Logger.MATERIALS("[Centrifuge] Recipe now requires " + mTotalCount + "x " + + mainDust.getDisplayName() + " as input."); + } else { + Logger.MATERIALS("[Centrifuge] Could not find valid input dust, exiting."); + } + } + + for (int j = 0; j < mInternalOutputs.length; j++) { + if (mInternalOutputs[j] == null) { + mInternalOutputs[j] = GT_Values.NI; + Logger.MATERIALS("[Centrifuge] Set slot " + j + " to null."); + } else { + Logger.MATERIALS( + "[Centrifuge] Set slot " + j + " to " + mInternalOutputs[j].getDisplayName() + "."); + } + } + + try { + if (addCentrifgeRecipe( + mainDust, + emptyCell, // input 2 + null, // Input fluid 1 + null, // Output fluid 1 + mInternalOutputs[0], + mInternalOutputs[1], + mInternalOutputs[2], + mInternalOutputs[3], + mInternalOutputs[4], + mInternalOutputs[5], + mChances, + 20 * 1 * (tVoltageMultiplier / 10), + tVoltageMultiplier)) { + Logger.MATERIALS("[Centrifuge] Generated Centrifuge recipe for " + + material.getDust(1).getDisplayName()); + } else { + Logger.MATERIALS("[Centrifuge] Failed to generate Centrifuge recipe for " + + material.getDust(1).getDisplayName()); + } + } catch (Throwable t) { + t.printStackTrace(); + } + } else if (componentMap.size() > 6 && componentMap.size() <= 9) { + Logger.MATERIALS( + "[Issue][Electrolyzer] " + material.getLocalizedName() + + " is composed of over 6 materials, so an electrolyzer recipe for processing cannot be generated. Trying to create one for the Dehydrator instead."); + + ItemStack mInternalOutputs[] = new ItemStack[9]; + int mChances[] = new int[9]; + int mCellCount = 0; + + int mTotalCount = 0; + + int mCounter = 0; + for (Pair<Integer, Material> f : componentMap) { + if (f.getValue().getState() != MaterialState.SOLID) { + Logger.MATERIALS("[Dehydrator] Found Fluid Component, adding " + f.getKey() + " cells of " + + f.getValue().getLocalizedName() + "."); + mInternalOutputs[mCounter++] = f.getValue().getCell(f.getKey()); + mCellCount += f.getKey(); + mTotalCount += f.getKey(); + Logger.MATERIALS("[Dehydrator] In total, adding " + mCellCount + " cells for " + + material.getLocalizedName() + " processing."); + } else { + Logger.MATERIALS("[Dehydrator] Found Solid Component, adding " + f.getKey() + " dusts of " + + f.getValue().getLocalizedName() + "."); + mInternalOutputs[mCounter++] = f.getValue().getDust(f.getKey()); + mTotalCount += f.getKey(); + } + } + + // Build Output Array + for (int g = 0; g < mInternalOutputs.length; g++) { + Logger.MATERIALS("[Dehydrator] Is output[" + g + "] valid with a chance? " + + (mInternalOutputs[g] != null ? 10000 : 0)); + mChances[g] = (mInternalOutputs[g] != null ? 10000 : 0); + } + + ItemStack emptyCell = null; + if (mCellCount > 0) { + emptyCell = CI.emptyCells(mCellCount); + Logger.MATERIALS("[Dehydrator] Recipe now requires " + mCellCount + " empty cells as input."); + } + + ItemStack mainDust = material.getDust(material.smallestStackSizeWhenProcessing); + if (mainDust != null) { + Logger.MATERIALS("[Dehydrator] Recipe now requires " + material.smallestStackSizeWhenProcessing + + "x " + mainDust.getDisplayName() + " as input."); + } else { + mainDust = material.getDust(mTotalCount); + Logger.MATERIALS("[Dehydrator] Could not find valid input dust, trying alternative."); + if (mainDust != null) { + Logger.MATERIALS("[Dehydrator] Recipe now requires " + mTotalCount + "x " + + mainDust.getDisplayName() + " as input."); + } else { + Logger.MATERIALS("[Dehydrator] Could not find valid input dust, exiting."); + } + } + + for (int j = 0; j < mInternalOutputs.length; j++) { + if (mInternalOutputs[j] == null) { + mInternalOutputs[j] = GT_Values.NI; + Logger.MATERIALS("[Dehydrator] Set slot " + j + " to null."); + } else { + Logger.MATERIALS( + "[Dehydrator] Set slot " + j + " to " + mInternalOutputs[j].getDisplayName() + "."); + } + } + + try { + + if (CORE.RA.addDehydratorRecipe( + new ItemStack[] {mainDust, emptyCell}, + null, + null, + mInternalOutputs, + mChances, + 20 * 1 * (tVoltageMultiplier / 10), + tVoltageMultiplier)) { + Logger.MATERIALS("[Dehydrator] Generated Dehydrator recipe for " + + material.getDust(1).getDisplayName()); + } else { + Logger.MATERIALS("[Dehydrator] Failed to generate Dehydrator recipe for " + + material.getDust(1).getDisplayName()); + } + } catch (Throwable t) { + t.printStackTrace(); + } + } + } + } + + public static boolean addCentrifgeRecipe( + ItemStack aInput1, + ItemStack aInput2, + FluidStack aFluidInput, + FluidStack aFluidOutput, + ItemStack aOutput1, + ItemStack aOutput2, + ItemStack aOutput3, + ItemStack aOutput4, + ItemStack aOutput5, + ItemStack aOutput6, + int[] aChances, + int aDuration, + int aEUt) { + return GT_Values.RA.addCentrifugeRecipe( + aInput1, + aInput2, + aFluidInput, + aFluidOutput, + aOutput1, + aOutput2, + aOutput3, + aOutput4, + aOutput5, + aOutput6, + aChances, + aDuration, + aEUt); + } } diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_MetalRecipe.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_MetalRecipe.java index bcf3ef1f9f..b08daa7d9a 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_MetalRecipe.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_MetalRecipe.java @@ -1,28 +1,25 @@ package gtPlusPlus.xmod.gregtech.loaders; import gregtech.api.enums.GT_Values; -import gregtech.api.enums.OrePrefixes; import gregtech.api.util.GT_ModHandler; -import gregtech.api.util.GT_OreDictUnificator; -import gregtech.api.util.GT_Utility; import gtPlusPlus.api.interfaces.RunnableWithInfo; import gtPlusPlus.api.objects.Logger; import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.material.Material; import gtPlusPlus.core.material.MaterialGenerator; import gtPlusPlus.core.util.minecraft.ItemUtils; - import java.util.HashSet; import java.util.Set; public class RecipeGen_MetalRecipe extends RecipeGen_Base { - public final static Set<RunnableWithInfo<Material>> mRecipeGenMap = new HashSet<RunnableWithInfo<Material>>(); + public static final Set<RunnableWithInfo<Material>> mRecipeGenMap = new HashSet<RunnableWithInfo<Material>>(); + static { MaterialGenerator.mRecipeMapsToGenerate.put(mRecipeGenMap); } - public RecipeGen_MetalRecipe(final Material M){ + public RecipeGen_MetalRecipe(final Material M) { this.toGenerate = M; mRecipeGenMap.add(this); } @@ -34,16 +31,13 @@ public class RecipeGen_MetalRecipe extends RecipeGen_Base { private void generateRecipes(final Material material) { - Logger.WARNING("Generating Metal recipes for "+material.getLocalizedName()); - if (ItemUtils.checkForInvalidItems(material.getIngot(1)) && ItemUtils.checkForInvalidItems(material.getBlock(1))) - if (GT_ModHandler.addCompressionRecipe( - material.getIngot(9), - material.getBlock(1) - )){ - Logger.WARNING("Compress Block Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Logger.WARNING("Compress Block Recipe: "+material.getLocalizedName()+" - Failed"); + Logger.WARNING("Generating Metal recipes for " + material.getLocalizedName()); + if (ItemUtils.checkForInvalidItems(material.getIngot(1)) + && ItemUtils.checkForInvalidItems(material.getBlock(1))) + if (GT_ModHandler.addCompressionRecipe(material.getIngot(9), material.getBlock(1))) { + Logger.WARNING("Compress Block Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING("Compress Block Recipe: " + material.getLocalizedName() + " - Failed"); } if (ItemUtils.checkForInvalidItems(material.getIngot(1)) && ItemUtils.checkForInvalidItems(material.getRod(1))) @@ -52,11 +46,10 @@ public class RecipeGen_MetalRecipe extends RecipeGen_Base { material.getRod(1), material.getSmallDust(2), (int) Math.max(material.getMass() / 8L, 1L), - material.vVoltageMultiplier)){ - Logger.WARNING("Lathe Rod Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Logger.WARNING("Lathe Rod Recipe: "+material.getLocalizedName()+" - Failed"); + material.vVoltageMultiplier)) { + Logger.WARNING("Lathe Rod Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING("Lathe Rod Recipe: " + material.getLocalizedName() + " - Failed"); } if (ItemUtils.checkForInvalidItems(material.getRod(1)) && ItemUtils.checkForInvalidItems(material.getBolt(1))) @@ -65,84 +58,68 @@ public class RecipeGen_MetalRecipe extends RecipeGen_Base { material.getBolt(4), null, (int) Math.max(material.getMass() * 2L, 1L), - material.vVoltageMultiplier)){ - Logger.WARNING("Cut Bolt Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Logger.WARNING("Cut Bolt Recipe: "+material.getLocalizedName()+" - Failed"); + material.vVoltageMultiplier)) { + Logger.WARNING("Cut Bolt Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING("Cut Bolt Recipe: " + material.getLocalizedName() + " - Failed"); } - if (ItemUtils.checkForInvalidItems(material.getIngot(1)) && ItemUtils.checkForInvalidItems(material.getHotIngot(1))) + if (ItemUtils.checkForInvalidItems(material.getIngot(1)) + && ItemUtils.checkForInvalidItems(material.getHotIngot(1))) if (CORE.RA.addVacuumFreezerRecipe( - material.getHotIngot(1), - material.getIngot(1), - (int) Math.max(material.getMass() * 3L, 1L), - material.vVoltageMultiplier) - ){ - Logger.WARNING("Cool Hot Ingot Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Logger.WARNING("Cool Hot Ingot Recipe: "+material.getLocalizedName()+" - Failed"); + material.getHotIngot(1), + material.getIngot(1), + (int) Math.max(material.getMass() * 3L, 1L), + material.vVoltageMultiplier)) { + Logger.WARNING("Cool Hot Ingot Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING("Cool Hot Ingot Recipe: " + material.getLocalizedName() + " - Failed"); } - if (ItemUtils.checkForInvalidItems(material.getRod(1)) && ItemUtils.checkForInvalidItems(material.getLongRod(1))) { + if (ItemUtils.checkForInvalidItems(material.getRod(1)) + && ItemUtils.checkForInvalidItems(material.getLongRod(1))) { if (GT_Values.RA.addForgeHammerRecipe( - material.getRod(2), - material.getLongRod(1), - (int) Math.max(material.getMass(), 1L), - 16)){ - Logger.WARNING("Hammer Long Rod Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Logger.WARNING("Hammer Long Rod Recipe: "+material.getLocalizedName()+" - Failed"); + material.getRod(2), material.getLongRod(1), (int) Math.max(material.getMass(), 1L), 16)) { + Logger.WARNING("Hammer Long Rod Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING("Hammer Long Rod Recipe: " + material.getLocalizedName() + " - Failed"); } GT_Values.RA.addCutterRecipe( - material.getLongRod(1), - material.getRod(2), - null, - (int) Math.max(material.getMass(), 1L), - 4); + material.getLongRod(1), material.getRod(2), null, (int) Math.max(material.getMass(), 1L), 4); } if (ItemUtils.checkForInvalidItems(material.getBolt(1)) && ItemUtils.checkForInvalidItems(material.getScrew(1))) if (GT_Values.RA.addLatheRecipe( - material.getBolt(1), - material.getScrew(1), - null, - (int) Math.max(material.getMass() / 8L, 1L), - 4)){ - Logger.WARNING("Lathe Screw Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Logger.WARNING("Lathe Screw Recipe: "+material.getLocalizedName()+" - Failed"); + material.getBolt(1), material.getScrew(1), null, (int) Math.max(material.getMass() / 8L, 1L), 4)) { + Logger.WARNING("Lathe Screw Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING("Lathe Screw Recipe: " + material.getLocalizedName() + " - Failed"); } - + // Fine Wire - if (ItemUtils.checkForInvalidItems(material.getFineWire(1)) && (ItemUtils.checkForInvalidItems(material.getIngot(1)) || ItemUtils.checkForInvalidItems(material.getWire01(1)))) + if (ItemUtils.checkForInvalidItems(material.getFineWire(1)) + && (ItemUtils.checkForInvalidItems(material.getIngot(1)) + || ItemUtils.checkForInvalidItems(material.getWire01(1)))) if (GT_Values.RA.addWiremillRecipe( - ItemUtils.checkForInvalidItems(material.getWire01(1)) ? material.getWire01(1) : material.getIngot(1), - material.getFineWire(ItemUtils.checkForInvalidItems(material.getWire01(1)) ? 4 : 8), - 100, - 4)){ - Logger.WARNING("Wiremill Fine Wire Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Logger.WARNING("Wiremill Fine Wire Recipe: "+material.getLocalizedName()+" - Failed"); + ItemUtils.checkForInvalidItems(material.getWire01(1)) + ? material.getWire01(1) + : material.getIngot(1), + material.getFineWire(ItemUtils.checkForInvalidItems(material.getWire01(1)) ? 4 : 8), + 100, + 4)) { + Logger.WARNING("Wiremill Fine Wire Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING("Wiremill Fine Wire Recipe: " + material.getLocalizedName() + " - Failed"); } // Fine Wire - if (ItemUtils.checkForInvalidItems(material.getFineWire(1)) && (ItemUtils.checkForInvalidItems(material.getRod(1)))) - if (GT_Values.RA.addWiremillRecipe( - material.getRod(1), - material.getFineWire(4), - 50, - 4)){ - Logger.WARNING("Wiremill Fine Wire Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Logger.WARNING("Wiremill Fine Wire Recipe: "+material.getLocalizedName()+" - Failed"); + if (ItemUtils.checkForInvalidItems(material.getFineWire(1)) + && (ItemUtils.checkForInvalidItems(material.getRod(1)))) + if (GT_Values.RA.addWiremillRecipe(material.getRod(1), material.getFineWire(4), 50, 4)) { + Logger.WARNING("Wiremill Fine Wire Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING("Wiremill Fine Wire Recipe: " + material.getLocalizedName() + " - Failed"); } - } -}
\ No newline at end of file +} diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_MultisUsingFluidInsteadOfCells.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_MultisUsingFluidInsteadOfCells.java index 1b6e623e91..1b0324545d 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_MultisUsingFluidInsteadOfCells.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_MultisUsingFluidInsteadOfCells.java @@ -9,182 +9,178 @@ import gtPlusPlus.api.objects.Logger; import gtPlusPlus.api.objects.data.AutoMap; import gtPlusPlus.core.recipe.common.CI; import gtPlusPlus.core.util.minecraft.ItemUtils; +import java.util.ArrayList; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; -import java.util.ArrayList; - public class RecipeGen_MultisUsingFluidInsteadOfCells { - - private static ItemStack mEmptyCell; - private static AutoMap<ItemStack> mItemsToIgnore = new AutoMap<ItemStack>(); - private static boolean mInit = false; - - private static void init() { - if (!mInit) { - mInit = true; - mItemsToIgnore.add(ItemUtils.simpleMetaStack(CI.emptyCells(1).getItem(), 8, 1)); - - - } - } - - private static boolean doesItemMatchIgnoringStackSize(ItemStack a, ItemStack b) { - if (a == null || b == null) { - return false; - } - if (a.getItem() == b.getItem()) { - if (a.getItemDamage() == b.getItemDamage()) { - return true; - } - } - return false; - } - - private static boolean isEmptyCell(ItemStack aCell) { - if (aCell == null) { - return false; - } - if (mEmptyCell == null) { - mEmptyCell = CI.emptyCells(1); - } - if (mEmptyCell != null) { - ItemStack aTempStack = mEmptyCell.copy(); - aTempStack.stackSize = aCell.stackSize; - if (GT_Utility.areStacksEqual(aTempStack, aCell)) { - return true; - } - } - return false; - } - - private synchronized static FluidStack getFluidFromItemStack(final ItemStack ingot) { - if (ingot == null) { - return null; - } - FluidStack aFluid = GT_Utility.getFluidForFilledItem(ingot, true); - if (aFluid != null) { - return aFluid; - } - return null; - } - - public synchronized static int generateRecipesNotUsingCells(GT_Recipe_Map aInputs, GTPP_Recipe_Map_Internal aOutputs) { - init(); - int aRecipesHandled = 0; - int aInvalidRecipesToConvert = 0; - int aOriginalCount = aInputs.mRecipeList.size(); - - recipe : for (GT_Recipe x : aInputs.mRecipeList) { - if (x != null) { - - ItemStack[] aInputItems = x.mInputs.clone(); - ItemStack[] aOutputItems = x.mOutputs.clone(); - FluidStack[] aInputFluids = x.mFluidInputs.clone(); - FluidStack[] aOutputFluids = x.mFluidOutputs.clone(); - - AutoMap<ItemStack> aInputItemsMap = new AutoMap<ItemStack>(); - AutoMap<ItemStack> aOutputItemsMap = new AutoMap<ItemStack>(); - AutoMap<FluidStack> aInputFluidsMap = new AutoMap<FluidStack>(); - AutoMap<FluidStack> aOutputFluidsMap = new AutoMap<FluidStack>(); - - // Iterate Inputs, Convert valid items into fluids - inputs : for (ItemStack aInputStack : aInputItems) { - FluidStack aFoundFluid = getFluidFromItemStack(aInputStack); - if (aFoundFluid == null) { - for (ItemStack aBadStack : mItemsToIgnore) { - if (doesItemMatchIgnoringStackSize(aInputStack, aBadStack)) { - continue recipe; // Skip this recipe entirely if we find an item we don't like - } - } - if (!isEmptyCell(aInputStack)) { - aInputItemsMap.add(aInputStack); - } - } - else { - aFoundFluid.amount = aFoundFluid.amount * aInputStack.stackSize; - aInputFluidsMap.add(aFoundFluid); - } - } - // Iterate Outputs, Convert valid items into fluids - outputs: for (ItemStack aOutputStack : aOutputItems) { - FluidStack aFoundFluid = getFluidFromItemStack(aOutputStack); - if (aFoundFluid == null) { - for (ItemStack aBadStack : mItemsToIgnore) { - if (doesItemMatchIgnoringStackSize(aOutputStack, aBadStack)) { - continue recipe; // Skip this recipe entirely if we find an item we don't like - } - } - if (!isEmptyCell(aOutputStack)) { - aOutputItemsMap.add(aOutputStack); - } - } - else { - aFoundFluid.amount = aFoundFluid.amount * aOutputStack.stackSize; - aOutputFluidsMap.add(aFoundFluid); - } - } - // Add Input fluids second - for (FluidStack aInputFluid : aInputFluids) { - aInputFluidsMap.add(aInputFluid); - } - // Add Output fluids second - for (FluidStack aOutputFluid : aOutputFluids) { - aOutputFluidsMap.add(aOutputFluid); - } - - // Make some new Arrays - ItemStack[] aNewItemInputs = new ItemStack[aInputItemsMap.size()]; - ItemStack[] aNewItemOutputs = new ItemStack[aOutputItemsMap.size()]; - FluidStack[] aNewFluidInputs = new FluidStack[aInputFluidsMap.size()]; - FluidStack[] aNewFluidOutputs = new FluidStack[aOutputFluidsMap.size()]; - - // Add AutoMap contents to Arrays - for (int i = 0; i < aInputItemsMap.size(); i++) { - aNewItemInputs[i] = aInputItemsMap.get(i); - } - for (int i = 0; i < aOutputItemsMap.size(); i++) { - aNewItemOutputs[i] = aOutputItemsMap.get(i); - } - for (int i = 0; i < aInputFluidsMap.size(); i++) { - aNewFluidInputs[i] = aInputFluidsMap.get(i); - } - for (int i = 0; i < aOutputFluidsMap.size(); i++) { - aNewFluidOutputs[i] = aOutputFluidsMap.get(i); - } - - if (!ItemUtils.checkForInvalidItems(aNewItemInputs, aNewItemOutputs)) { - aInvalidRecipesToConvert++; - continue recipe; // Skip this recipe entirely if we find an item we don't like - } - - // Add Recipe to map - GT_Recipe aNewRecipe = new GTPP_Recipe.GTPP_Recipe_Map_MultiNoCell.GTPP_Recipe_MultiNoCell( - false, - aNewItemInputs, - aNewItemOutputs, - x.mSpecialItems, - x.mChances, - aNewFluidInputs, - aNewFluidOutputs, - x.mDuration, - x.mEUt, - x.mSpecialValue); - aNewRecipe.owners = new ArrayList<>(x.owners); - aOutputs.add(aNewRecipe); - aRecipesHandled++; - } - else { - aInvalidRecipesToConvert++; - } - } - - Logger.INFO("Generated Recipes for "+aOutputs.mNEIName); - Logger.INFO("Original Map contains "+aOriginalCount+" recipes."); - Logger.INFO("Output Map contains "+aRecipesHandled+" recipes."); - Logger.INFO("There were "+aInvalidRecipesToConvert+" invalid recipes."); - return aRecipesHandled; - } - + private static ItemStack mEmptyCell; + private static AutoMap<ItemStack> mItemsToIgnore = new AutoMap<ItemStack>(); + private static boolean mInit = false; + + private static void init() { + if (!mInit) { + mInit = true; + mItemsToIgnore.add(ItemUtils.simpleMetaStack(CI.emptyCells(1).getItem(), 8, 1)); + } + } + + private static boolean doesItemMatchIgnoringStackSize(ItemStack a, ItemStack b) { + if (a == null || b == null) { + return false; + } + if (a.getItem() == b.getItem()) { + if (a.getItemDamage() == b.getItemDamage()) { + return true; + } + } + return false; + } + + private static boolean isEmptyCell(ItemStack aCell) { + if (aCell == null) { + return false; + } + if (mEmptyCell == null) { + mEmptyCell = CI.emptyCells(1); + } + if (mEmptyCell != null) { + ItemStack aTempStack = mEmptyCell.copy(); + aTempStack.stackSize = aCell.stackSize; + if (GT_Utility.areStacksEqual(aTempStack, aCell)) { + return true; + } + } + return false; + } + + private static synchronized FluidStack getFluidFromItemStack(final ItemStack ingot) { + if (ingot == null) { + return null; + } + FluidStack aFluid = GT_Utility.getFluidForFilledItem(ingot, true); + if (aFluid != null) { + return aFluid; + } + return null; + } + + public static synchronized int generateRecipesNotUsingCells( + GT_Recipe_Map aInputs, GTPP_Recipe_Map_Internal aOutputs) { + init(); + int aRecipesHandled = 0; + int aInvalidRecipesToConvert = 0; + int aOriginalCount = aInputs.mRecipeList.size(); + + recipe: + for (GT_Recipe x : aInputs.mRecipeList) { + if (x != null) { + + ItemStack[] aInputItems = x.mInputs.clone(); + ItemStack[] aOutputItems = x.mOutputs.clone(); + FluidStack[] aInputFluids = x.mFluidInputs.clone(); + FluidStack[] aOutputFluids = x.mFluidOutputs.clone(); + + AutoMap<ItemStack> aInputItemsMap = new AutoMap<ItemStack>(); + AutoMap<ItemStack> aOutputItemsMap = new AutoMap<ItemStack>(); + AutoMap<FluidStack> aInputFluidsMap = new AutoMap<FluidStack>(); + AutoMap<FluidStack> aOutputFluidsMap = new AutoMap<FluidStack>(); + + // Iterate Inputs, Convert valid items into fluids + inputs: + for (ItemStack aInputStack : aInputItems) { + FluidStack aFoundFluid = getFluidFromItemStack(aInputStack); + if (aFoundFluid == null) { + for (ItemStack aBadStack : mItemsToIgnore) { + if (doesItemMatchIgnoringStackSize(aInputStack, aBadStack)) { + continue recipe; // Skip this recipe entirely if we find an item we don't like + } + } + if (!isEmptyCell(aInputStack)) { + aInputItemsMap.add(aInputStack); + } + } else { + aFoundFluid.amount = aFoundFluid.amount * aInputStack.stackSize; + aInputFluidsMap.add(aFoundFluid); + } + } + // Iterate Outputs, Convert valid items into fluids + outputs: + for (ItemStack aOutputStack : aOutputItems) { + FluidStack aFoundFluid = getFluidFromItemStack(aOutputStack); + if (aFoundFluid == null) { + for (ItemStack aBadStack : mItemsToIgnore) { + if (doesItemMatchIgnoringStackSize(aOutputStack, aBadStack)) { + continue recipe; // Skip this recipe entirely if we find an item we don't like + } + } + if (!isEmptyCell(aOutputStack)) { + aOutputItemsMap.add(aOutputStack); + } + } else { + aFoundFluid.amount = aFoundFluid.amount * aOutputStack.stackSize; + aOutputFluidsMap.add(aFoundFluid); + } + } + // Add Input fluids second + for (FluidStack aInputFluid : aInputFluids) { + aInputFluidsMap.add(aInputFluid); + } + // Add Output fluids second + for (FluidStack aOutputFluid : aOutputFluids) { + aOutputFluidsMap.add(aOutputFluid); + } + + // Make some new Arrays + ItemStack[] aNewItemInputs = new ItemStack[aInputItemsMap.size()]; + ItemStack[] aNewItemOutputs = new ItemStack[aOutputItemsMap.size()]; + FluidStack[] aNewFluidInputs = new FluidStack[aInputFluidsMap.size()]; + FluidStack[] aNewFluidOutputs = new FluidStack[aOutputFluidsMap.size()]; + + // Add AutoMap contents to Arrays + for (int i = 0; i < aInputItemsMap.size(); i++) { + aNewItemInputs[i] = aInputItemsMap.get(i); + } + for (int i = 0; i < aOutputItemsMap.size(); i++) { + aNewItemOutputs[i] = aOutputItemsMap.get(i); + } + for (int i = 0; i < aInputFluidsMap.size(); i++) { + aNewFluidInputs[i] = aInputFluidsMap.get(i); + } + for (int i = 0; i < aOutputFluidsMap.size(); i++) { + aNewFluidOutputs[i] = aOutputFluidsMap.get(i); + } + + if (!ItemUtils.checkForInvalidItems(aNewItemInputs, aNewItemOutputs)) { + aInvalidRecipesToConvert++; + continue recipe; // Skip this recipe entirely if we find an item we don't like + } + + // Add Recipe to map + GT_Recipe aNewRecipe = new GTPP_Recipe.GTPP_Recipe_Map_MultiNoCell.GTPP_Recipe_MultiNoCell( + false, + aNewItemInputs, + aNewItemOutputs, + x.mSpecialItems, + x.mChances, + aNewFluidInputs, + aNewFluidOutputs, + x.mDuration, + x.mEUt, + x.mSpecialValue); + aNewRecipe.owners = new ArrayList<>(x.owners); + aOutputs.add(aNewRecipe); + aRecipesHandled++; + } else { + aInvalidRecipesToConvert++; + } + } + + Logger.INFO("Generated Recipes for " + aOutputs.mNEIName); + Logger.INFO("Original Map contains " + aOriginalCount + " recipes."); + Logger.INFO("Output Map contains " + aRecipesHandled + " recipes."); + Logger.INFO("There were " + aInvalidRecipesToConvert + " invalid recipes."); + return aRecipesHandled; + } } diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Ore.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Ore.java index 67620fd7e0..e210ae00ef 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Ore.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Ore.java @@ -1,11 +1,5 @@ package gtPlusPlus.xmod.gregtech.loaders; -import net.minecraft.item.ItemStack; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.Set; - import gregtech.api.GregTech_API; import gregtech.api.enums.GT_Values; import gregtech.api.enums.Materials; @@ -24,557 +18,641 @@ import gtPlusPlus.core.recipe.common.CI; import gtPlusPlus.core.util.minecraft.ItemUtils; import gtPlusPlus.core.util.minecraft.MaterialUtils; import gtPlusPlus.core.util.minecraft.RecipeUtils; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.Set; +import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; public class RecipeGen_Ore extends RecipeGen_Base { - public final static Set<RunnableWithInfo<Material>> mRecipeGenMap = new HashSet<RunnableWithInfo<Material>>(); - - static { - MaterialGenerator.mRecipeMapsToGenerate.put(mRecipeGenMap); - } - - public RecipeGen_Ore(final Material M){ - this(M, false); - } - - public RecipeGen_Ore(final Material M, final boolean O){ - this.toGenerate = M; - this.disableOptional = O; - mRecipeGenMap.add(this); - } - - @Override - public void run() { - generateRecipes(this.toGenerate, this.disableOptional); - } - - private static Material mStone; - - private void generateRecipes(final Material material, final boolean disableOptional){ - - if (mStone == null) { - mStone = MaterialUtils.generateMaterialFromGtENUM(Materials.Stone); - } - - //if (material.getMaterialComposites().length > 1){ - Logger.MATERIALS("[Recipe Generator Debug] ["+material.getLocalizedName()+"]"); - int tVoltageMultiplier = MaterialUtils.getVoltageForTier(material.vTier); - - final ItemStack dustStone = ItemUtils.getItemStackOfAmountFromOreDict("dustStone", 1); - Material bonusA = null; //Ni - Material bonusB = null; //Tin - - if (material.getComposites().size() >= 1 && material.getComposites().get(0) != null){ - bonusA = material.getComposites().get(0).getStackMaterial(); - } - else { - bonusA = material; - } - - boolean allFailed = false; - - - //Setup Bonuses - ArrayList<Material> aMatComp = new ArrayList<Material>(); - for (Material j : MaterialUtils.getCompoundMaterialsRecursively(material)) { - aMatComp.add(j); - } - - if (aMatComp.size() < 3) { - while (aMatComp.size() < 3) { - aMatComp.add(material); - } - } - - AutoMap<Material> amJ = new AutoMap<Material>(); - int aIndexCounter = 0; - for (Material g : aMatComp) { - if (g.hasSolidForm()) { - if (getDust(g) != null && getTinyDust(g) != null) { - amJ.put(g); - } - } - } - - if (amJ.size() < 2) { - if (material.getComposites().size() >= 2 && material.getComposites().get(1) != null){ - bonusB = material.getComposites().get(1).getStackMaterial(); - //If Secondary Output has no solid output, try the third (If it exists) - if (!bonusB.hasSolidForm() && material.getComposites().size() >= 3 && material.getComposites().get(2) != null) { - bonusB = material.getComposites().get(2).getStackMaterial(); - //If Third Output has no solid output, try the Fourth (If it exists) - if (!bonusB.hasSolidForm() && material.getComposites().size() >= 4 && material.getComposites().get(3) != null) { - bonusB = material.getComposites().get(3).getStackMaterial(); - //If Fourth Output has no solid output, try the Fifth (If it exists) - if (!bonusB.hasSolidForm() && material.getComposites().size() >= 5 && material.getComposites().get(4) != null) { - bonusB = material.getComposites().get(4).getStackMaterial(); - //If Fifth Output has no solid output, default out to Stone dust. - if (!bonusB.hasSolidForm()) { - allFailed = true; - bonusB = mStone; - } - } - } - } - } - else { - allFailed = true; - } - } - else { - bonusA = amJ.get(0); - bonusB = amJ.get(1); - } - - //Default out if it's made of fluids or some shit. - if (bonusA == null) { - bonusA = tVoltageMultiplier > 100 ? material : mStone; - } - //Default out if it's made of fluids or some shit. - if (allFailed || bonusB == null) { - bonusB = tVoltageMultiplier > 100 ? material : mStone; - } - - AutoMap<Pair<Integer, Material>> componentMap = new AutoMap<Pair<Integer, Material>>(); - for (MaterialStack r : material.getComposites()){ - if (r != null){ - componentMap.put(new Pair<Integer, Material>(r.getPartsPerOneHundred(), r.getStackMaterial())); - } - } - - //Need two valid outputs - if (bonusA == null || bonusB == null || !bonusA.hasSolidForm() || !bonusB.hasSolidForm()) { - if (bonusA == null) { - bonusA = mStone; - } - if (bonusB == null) { - bonusB = mStone; - } - if (!bonusA.hasSolidForm()) { - bonusA = mStone; - } - if (!bonusB.hasSolidForm()) { - bonusB = mStone; - } - } - - ItemStack matDust = getDust(material); - ItemStack matDustA = getDust(bonusA); - ItemStack matDustB = getDust(bonusB); - - /** - * Package - */ - //Allow ore dusts to be packaged - if (ItemUtils.checkForInvalidItems(material.getSmallDust(1)) && ItemUtils.checkForInvalidItems(material.getTinyDust(1))) { - RecipeGen_DustGeneration.generatePackagerRecipes(material); - } - - - /** - * Macerate - */ - //Macerate ore to Crushed - if (GT_Values.RA.addPulveriserRecipe(material.getOre(1), new ItemStack[]{material.getCrushed(2)}, new int[]{10000}, 20*20, tVoltageMultiplier/2)){ - Logger.MATERIALS("[Macerator] Added Recipe: 'Macerate ore to Crushed ore'"); - } - //Macerate Crushed to Impure Dust - if (GT_Values.RA.addPulveriserRecipe(material.getCrushed(1), new ItemStack[]{material.getDustImpure(1), matDustA}, new int[]{10000, 1000}, 20*20, tVoltageMultiplier/2)){ - Logger.MATERIALS("[Macerator] Added Recipe: 'Macerate Crushed ore to Impure Dust'"); - } - //Macerate Washed to Purified Dust - if (GT_Values.RA.addPulveriserRecipe(material.getCrushedPurified(1), new ItemStack[]{material.getDustPurified(1), matDustA}, new int[]{10000, 1000}, 20*20, tVoltageMultiplier/2)){ - Logger.MATERIALS("[Macerator] Added Recipe: 'Macerate Washed ore to Purified Dust'"); - } - //Macerate Centrifuged to Pure Dust - if (GT_Values.RA.addPulveriserRecipe(material.getCrushedCentrifuged(1), new ItemStack[]{matDust, matDustA}, new int[]{10000, 1000}, 20*20, tVoltageMultiplier/2)){ - Logger.MATERIALS("[Macerator] Added Recipe: 'Macerate Centrifuged ore to Pure Dust'"); - } - - /** - * Wash - */ - //Wash into Purified Crushed - /*if (GT_Values.RA.addOreWasherRecipe(material.getCrushed(1), material.getCrushedPurified(1), bonusA.getTinyDust(1), dustStone, FluidUtils.getWater(1000), 25*20, 16)){ - Logger.MATERIALS("[OreWasher] Added Recipe: 'Wash Crushed ore into Purified Crushed ore'"); - }*/ - //.08 compat method - if (GT_ModHandler.addOreWasherRecipe(material.getCrushed(1), new int[]{10000, 1111, 10000}, 1000, material.getCrushedPurified(1), matDustA, dustStone)){ - Logger.MATERIALS("[OreWasher] Added Recipe: 'Wash Crushed ore into Purified Crushed ore'"); - } - - - - - - /** - * Thermal Centrifuge - */ - /*//Crushed ore to Centrifuged Ore - if (GT_Values.RA.addThermalCentrifugeRecipe(material.getCrushed(1), material.getCrushedCentrifuged(1), tinyDustB, dustStone, 25*20, 24)){ - Logger.MATERIALS("[ThermalCentrifuge] Added Recipe: 'Crushed ore to Centrifuged Ore'"); - } - //Washed ore to Centrifuged Ore - if (GT_Values.RA.addThermalCentrifugeRecipe(material.getCrushedPurified(1), material.getCrushedCentrifuged(1), bonusA.getTinyDust(1), dustStone, 25*20, 24)){ - Logger.MATERIALS("[ThermalCentrifuge] Added Recipe: 'Washed ore to Centrifuged Ore'"); - }*/ - - Logger.MATERIALS("material.getCrushed(1): "+(material.getCrushed(1) != null)); - Logger.MATERIALS("material.getCrushedPurified(1): "+(material.getCrushedPurified(1) != null)); - - Logger.MATERIALS("material.getTinyDust(1): "+(ItemUtils.getItemName(bonusA.getCrushed(1)))); - Logger.MATERIALS("material.getTinyDust(1): "+(ItemUtils.getItemName(bonusB.getCrushed(1)))); - - try { - //.08 compat - if (GT_ModHandler.addThermalCentrifugeRecipe(material.getCrushed(1), new int[]{10000, 1111, 10000}, (int) Math.min(5000L, Math.abs(material.getMass() * 20L)), material.getCrushedCentrifuged(1), matDustB, dustStone)){ - Logger.MATERIALS("[ThermalCentrifuge] Added Recipe: 'Crushed ore to Centrifuged Ore' | Input: "+material.getCrushed(1).getDisplayName()+" | Outputs: "+material.getCrushedCentrifuged(1).getDisplayName()+", "+matDustB.getDisplayName()+", "+dustStone.getDisplayName()+"."); - } - } - catch (Throwable t) {} - try { - if (GT_ModHandler.addThermalCentrifugeRecipe(material.getCrushedPurified(1), new int[]{10000, 1111, 10000}, (int) Math.min(5000L, Math.abs(material.getMass() * 20L)), material.getCrushedCentrifuged(1), matDustA, dustStone)){ - Logger.MATERIALS("[ThermalCentrifuge] Added Recipe: 'Washed ore to Centrifuged Ore' | Input: "+material.getCrushedPurified(1).getDisplayName()+" | Outputs: "+material.getCrushedCentrifuged(1).getDisplayName()+", "+matDustA.getDisplayName()+", "+dustStone.getDisplayName()+"."); - } - } - catch (Throwable t) {} - - - /** - * Forge Hammer - */ - if (GT_Values.RA.addForgeHammerRecipe(material.getCrushedCentrifuged(1), matDust, 10, tVoltageMultiplier/4)){ - Logger.MATERIALS("[ForgeHammer] Added Recipe: 'Crushed Centrifuged to Pure Dust'"); - } - if (GT_Values.RA.addForgeHammerRecipe(material.getCrushedPurified(1), material.getDustPurified(1), 10, tVoltageMultiplier/4)){ - Logger.MATERIALS("[ForgeHammer] Added Recipe: 'Crushed Purified to Purified Dust'"); - } - if (GT_Values.RA.addForgeHammerRecipe(material.getOre(1), material.getCrushed(1), 10, tVoltageMultiplier/4)){ - Logger.MATERIALS("[ForgeHammer] Added Recipe: 'Ore to Crushed'"); - } - - /** - * Centrifuge - */ - //Purified Dust to Clean - if (GT_Values.RA.addCentrifugeRecipe( - material.getDustPurified(1), null, - null, //In Fluid - null, //Out Fluid - matDust, matDustA,null, - null, null,null, - new int[]{10000, 1111}, //Chances - (int) Math.max(1L, material.getMass() * 8L), //Time - tVoltageMultiplier/2)){ //Eu - Logger.MATERIALS("[Centrifuge] Added Recipe: Purified Dust to Clean Dust"); - } - - //Impure Dust to Clean - if (GT_Values.RA.addCentrifugeRecipe( - material.getDustImpure(1), null, - null, //In Fluid - null, //Out Fluid - matDust, matDustB,null, - null, null,null, - new int[]{10000, 1111}, //Chances - (int) Math.max(1L, material.getMass() * 8L), //Time - tVoltageMultiplier/2)){ //Eu - Logger.MATERIALS("[Centrifuge] Added Recipe: Inpure Dust to Clean Dust"); - } - - - /** - * Electrolyzer - */ - - if (!disableOptional) { - //Process Dust - if (componentMap.size() > 0 && componentMap.size() <= 6){ - - ItemStack mInternalOutputs[] = new ItemStack[6]; - int mChances[] = new int[6]; - int mCellCount = 0; - - int mTotalCount = 0; - - int mCounter = 0; - for (Pair<Integer, Material> f : componentMap){ - if (f.getValue().getState() != MaterialState.SOLID){ - Logger.MATERIALS("[Electrolyzer] Found Fluid Component, adding "+f.getKey()+" cells of "+f.getValue().getLocalizedName()+"."); - mInternalOutputs[mCounter++] = f.getValue().getCell(f.getKey()); - mCellCount += f.getKey(); - mTotalCount += f.getKey(); - Logger.MATERIALS("[Electrolyzer] In total, adding "+mCellCount+" cells for "+material.getLocalizedName()+" processing."); - } - else { - Logger.MATERIALS("[Electrolyzer] Found Solid Component, adding "+f.getKey()+" dusts of "+f.getValue().getLocalizedName()+"."); - mInternalOutputs[mCounter++] = f.getValue().getDust(f.getKey()); - mTotalCount += f.getKey(); - } - } - - //Build Output Array - for (int g=0;g<mInternalOutputs.length;g++){ - Logger.MATERIALS("[Electrolyzer] Is output["+g+"] valid with a chance? "+(mInternalOutputs[g] != null ? 10000 : 0)); - mChances[g] = (mInternalOutputs[g] != null ? 10000 : 0); - } - - ItemStack emptyCell = null; - if (mCellCount > 0){ - emptyCell = ItemUtils.getItemStackOfAmountFromOreDict("cellEmpty", mCellCount); - Logger.MATERIALS("[Electrolyzer] Recipe now requires "+mCellCount+" empty cells as input."); - } - - ItemStack mainDust = material.getDust(material.smallestStackSizeWhenProcessing); - if (mainDust != null){ - Logger.MATERIALS("[Electrolyzer] Recipe now requires "+material.smallestStackSizeWhenProcessing+"x "+mainDust.getDisplayName()+" as input."); - } - else { - mainDust = material.getDust(mTotalCount); - Logger.MATERIALS("[Electrolyzer] Could not find valid input dust, trying alternative."); - if (mainDust != null){ - Logger.MATERIALS("[Electrolyzer] Recipe now requires "+mTotalCount+"x "+mainDust.getDisplayName()+" as input."); - } - else { - Logger.MATERIALS("[Electrolyzer] Could not find valid input dust, exiting."); - } - } - - for (int j=0;j<mInternalOutputs.length;j++){ - if (mInternalOutputs[j] == null){ - mInternalOutputs[j] = GT_Values.NI; - Logger.MATERIALS("[Electrolyzer] Set slot "+j+" to null."); - } - else { - Logger.MATERIALS("[Electrolyzer] Set slot "+j+" to "+mInternalOutputs[j].getDisplayName()+"."); - } - } - - try{ - if (addElectrolyzerRecipe( - mainDust, - emptyCell, //input 2 - null, //Input fluid 1 - null, //Output fluid 1 - mInternalOutputs[0], - mInternalOutputs[1], - mInternalOutputs[2], - mInternalOutputs[3], - mInternalOutputs[4], - mInternalOutputs[5], - mChances, - (int) Math.max(material.getMass() * 3L * 1, 1), - tVoltageMultiplier)){ - Logger.MATERIALS("[Electrolyzer] Generated Electrolyzer recipe for "+matDust.getDisplayName()); - } - else { - Logger.MATERIALS("[Electrolyzer] Failed to generate Electrolyzer recipe for "+matDust.getDisplayName()); - } - } - catch(Throwable t){ - t.printStackTrace(); - } - } - else if (componentMap.size() > 6 && componentMap.size() <= 9){ - Logger.MATERIALS("[Issue][Electrolyzer] "+material.getLocalizedName()+" is composed of over 6 materials, so an electrolyzer recipe for processing cannot be generated. Trying to create one for the Dehydrator instead."); - - ItemStack mInternalOutputs[] = new ItemStack[9]; - int mChances[] = new int[9]; - int mCellCount = 0; - - int mTotalCount = 0; - - int mCounter = 0; - for (Pair<Integer, Material> f : componentMap){ - if (f.getValue().getState() != MaterialState.SOLID && f.getValue().getState() != MaterialState.ORE){ - Logger.MATERIALS("[Dehydrator] Found Fluid Component, adding "+f.getKey()+" cells of "+f.getValue().getLocalizedName()+"."); - mInternalOutputs[mCounter++] = f.getValue().getCell(f.getKey()); - mCellCount += f.getKey(); - mTotalCount += f.getKey(); - Logger.MATERIALS("[Dehydrator] In total, adding "+mCellCount+" cells for "+material.getLocalizedName()+" processing."); - } - else { - Logger.MATERIALS("[Dehydrator] Found Solid Component, adding "+f.getKey()+" dusts of "+f.getValue().getLocalizedName()+"."); - mInternalOutputs[mCounter++] = f.getValue().getDust(f.getKey()); - mTotalCount += f.getKey(); - } - } - - //Build Output Array - for (int g=0;g<mInternalOutputs.length;g++){ - Logger.MATERIALS("[Dehydrator] Is output["+g+"] valid with a chance? "+(mInternalOutputs[g] != null ? 10000 : 0)); - mChances[g] = (mInternalOutputs[g] != null ? 10000 : 0); - } - - ItemStack emptyCell = null; - if (mCellCount > 0){ - emptyCell = ItemUtils.getItemStackOfAmountFromOreDict("cellEmpty", mCellCount); - Logger.MATERIALS("[Dehydrator] Recipe now requires "+mCellCount+" empty cells as input."); - } - - ItemStack mainDust = material.getDust(material.smallestStackSizeWhenProcessing); - if (mainDust != null){ - Logger.MATERIALS("[Dehydrator] Recipe now requires "+material.smallestStackSizeWhenProcessing+"x "+mainDust.getDisplayName()+" as input."); - } - else { - mainDust = material.getDust(mTotalCount); - Logger.MATERIALS("[Dehydrator] Could not find valid input dust, trying alternative."); - if (mainDust != null){ - Logger.MATERIALS("[Dehydrator] Recipe now requires "+mTotalCount+"x "+mainDust.getDisplayName()+" as input."); - } - else { - Logger.MATERIALS("[Dehydrator] Could not find valid input dust, exiting."); - } - } - - for (int j=0;j<mInternalOutputs.length;j++){ - if (mInternalOutputs[j] == null){ - mInternalOutputs[j] = GT_Values.NI; - Logger.MATERIALS("[Dehydrator] Set slot "+j+" to null."); - } - else { - Logger.MATERIALS("[Dehydrator] Set slot "+j+" to "+mInternalOutputs[j].getDisplayName()+"."); - } - } - - try{ - if (CORE.RA.addDehydratorRecipe( - new ItemStack[]{mainDust, emptyCell}, - null, - null, - mInternalOutputs, - mChances, - (int) Math.max(material.getMass() * 4L * 1, 1), - tVoltageMultiplier)){ - Logger.MATERIALS("[Dehydrator] Generated Dehydrator recipe for "+matDust.getDisplayName()); - Logger.MATERIALS("Inputs: "+mainDust.getDisplayName()+" x"+mainDust.stackSize+", "+(emptyCell == null ? "No Cells" : ""+emptyCell.getDisplayName()+" x"+emptyCell.stackSize)); - Logger.MATERIALS("Outputs "+ItemUtils.getArrayStackNames(mInternalOutputs)); - Logger.MATERIALS("Time: "+((int) Math.max(material.getMass() * 4L * 1, 1))); - Logger.MATERIALS("EU: "+tVoltageMultiplier); - } - else { - Logger.MATERIALS("[Dehydrator] Failed to generate Dehydrator recipe for "+matDust.getDisplayName()); - } - } - catch(Throwable t){ - t.printStackTrace(); - } - - - } - } - - - /** - * Shaped Crafting - */ - RecipeUtils.addShapedRecipe( - CI.craftingToolHammer_Hard, null, null, - material.getCrushedPurified(1), null, null, - null, null, null, - material.getDustPurified(1)); - - RecipeUtils.addShapedRecipe( - CI.craftingToolHammer_Hard, null, null, - material.getCrushed(1), null, null, - null, null, null, - material.getDustImpure(1)); - - RecipeUtils.addShapedRecipe( - CI.craftingToolHammer_Hard, null, null, - material.getCrushedCentrifuged(1), null, null, - null, null, null, - matDust); - - - - final ItemStack normalDust = matDust; - final ItemStack smallDust = material.getSmallDust(1); - final ItemStack tinyDust = material.getTinyDust(1); - - if (RecipeUtils.addShapedRecipe( - tinyDust, tinyDust, tinyDust, - tinyDust, tinyDust, tinyDust, - tinyDust, tinyDust, tinyDust, - normalDust)){ - Logger.WARNING("9 Tiny dust to 1 Dust Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Logger.WARNING("9 Tiny dust to 1 Dust Recipe: "+material.getLocalizedName()+" - Failed"); - } - - if (RecipeUtils.addShapedRecipe( - normalDust, null, null, - null, null, null, - null, null, null, - material.getTinyDust(9))){ - Logger.WARNING("9 Tiny dust from 1 Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Logger.WARNING("9 Tiny dust from 1 Recipe: "+material.getLocalizedName()+" - Failed"); - } - - - if (RecipeUtils.addShapedRecipe( - smallDust, smallDust, null, - smallDust, smallDust, null, - null, null, null, - normalDust)){ - Logger.WARNING("4 Small dust to 1 Dust Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Logger.WARNING("4 Small dust to 1 Dust Recipe: "+material.getLocalizedName()+" - Failed"); - } - - - if (RecipeUtils.addShapedRecipe( - null, normalDust, null, - null, null, null, - null, null, null, - material.getSmallDust(4))){ - Logger.WARNING("4 Small dust from 1 Dust Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Logger.WARNING("4 Small dust from 1 Dust Recipe: "+material.getLocalizedName()+" - Failed"); - } - - //} - } - - - public static boolean addElectrolyzerRecipe(ItemStack aInput1, ItemStack aInput2, FluidStack aFluidInput, FluidStack aFluidOutput, ItemStack aOutput1, ItemStack aOutput2, ItemStack aOutput3, ItemStack aOutput4, ItemStack aOutput5, ItemStack aOutput6, int[] aChances, int aDuration, int aEUt) { - if (((aInput1 == null) && (aFluidInput == null)) || ((aOutput1 == null) && (aFluidOutput == null))) { - Logger.MATERIALS("[Electrolyzer] Either both inputs or outputs are null."); - return false; - } - if ((aInput1 != null) && ((aDuration = GregTech_API.sRecipeFile.get("electrolyzer", aInput1, aDuration)) <= 0)) { - Logger.MATERIALS("[Electrolyzer] Fail 1."); - return false; - } - if ((aFluidInput != null) && ((aDuration = GregTech_API.sRecipeFile.get("electrolyzer", aFluidInput.getFluid().getName(), aDuration)) <= 0)) { - Logger.MATERIALS("[Electrolyzer] Fail 2."); - return false; - } - GT_Recipe.GT_Recipe_Map.sElectrolyzerRecipes.addRecipe(true, new ItemStack[]{aInput1, aInput2}, new ItemStack[]{aOutput1, aOutput2, aOutput3, aOutput4, aOutput5, aOutput6}, null, aChances, new FluidStack[]{aFluidInput}, new FluidStack[]{aFluidOutput}, aDuration, aEUt, 0); - Logger.MATERIALS("[Electrolyzer] Recipe added."); - return true; - } - - public static ItemStack getTinyDust(Material m) { - ItemStack x = m.getTinyDust(1); - if (x == null) { - x = mStone.getDust(1); - } - return x; - } - - public static ItemStack getDust(Material m) { - ItemStack x = m.getDust(1); - if (x == null) { - x = mStone.getDust(1); - } - return x; - } - + public static final Set<RunnableWithInfo<Material>> mRecipeGenMap = new HashSet<RunnableWithInfo<Material>>(); + + static { + MaterialGenerator.mRecipeMapsToGenerate.put(mRecipeGenMap); + } + + public RecipeGen_Ore(final Material M) { + this(M, false); + } + + public RecipeGen_Ore(final Material M, final boolean O) { + this.toGenerate = M; + this.disableOptional = O; + mRecipeGenMap.add(this); + } + + @Override + public void run() { + generateRecipes(this.toGenerate, this.disableOptional); + } + + private static Material mStone; + + private void generateRecipes(final Material material, final boolean disableOptional) { + + if (mStone == null) { + mStone = MaterialUtils.generateMaterialFromGtENUM(Materials.Stone); + } + + // if (material.getMaterialComposites().length > 1){ + Logger.MATERIALS("[Recipe Generator Debug] [" + material.getLocalizedName() + "]"); + int tVoltageMultiplier = MaterialUtils.getVoltageForTier(material.vTier); + + final ItemStack dustStone = ItemUtils.getItemStackOfAmountFromOreDict("dustStone", 1); + Material bonusA = null; // Ni + Material bonusB = null; // Tin + + if (material.getComposites().size() >= 1 && material.getComposites().get(0) != null) { + bonusA = material.getComposites().get(0).getStackMaterial(); + } else { + bonusA = material; + } + + boolean allFailed = false; + + // Setup Bonuses + ArrayList<Material> aMatComp = new ArrayList<Material>(); + for (Material j : MaterialUtils.getCompoundMaterialsRecursively(material)) { + aMatComp.add(j); + } + + if (aMatComp.size() < 3) { + while (aMatComp.size() < 3) { + aMatComp.add(material); + } + } + + AutoMap<Material> amJ = new AutoMap<Material>(); + int aIndexCounter = 0; + for (Material g : aMatComp) { + if (g.hasSolidForm()) { + if (getDust(g) != null && getTinyDust(g) != null) { + amJ.put(g); + } + } + } + + if (amJ.size() < 2) { + if (material.getComposites().size() >= 2 && material.getComposites().get(1) != null) { + bonusB = material.getComposites().get(1).getStackMaterial(); + // If Secondary Output has no solid output, try the third (If it exists) + if (!bonusB.hasSolidForm() + && material.getComposites().size() >= 3 + && material.getComposites().get(2) != null) { + bonusB = material.getComposites().get(2).getStackMaterial(); + // If Third Output has no solid output, try the Fourth (If it exists) + if (!bonusB.hasSolidForm() + && material.getComposites().size() >= 4 + && material.getComposites().get(3) != null) { + bonusB = material.getComposites().get(3).getStackMaterial(); + // If Fourth Output has no solid output, try the Fifth (If it exists) + if (!bonusB.hasSolidForm() + && material.getComposites().size() >= 5 + && material.getComposites().get(4) != null) { + bonusB = material.getComposites().get(4).getStackMaterial(); + // If Fifth Output has no solid output, default out to Stone dust. + if (!bonusB.hasSolidForm()) { + allFailed = true; + bonusB = mStone; + } + } + } + } + } else { + allFailed = true; + } + } else { + bonusA = amJ.get(0); + bonusB = amJ.get(1); + } + + // Default out if it's made of fluids or some shit. + if (bonusA == null) { + bonusA = tVoltageMultiplier > 100 ? material : mStone; + } + // Default out if it's made of fluids or some shit. + if (allFailed || bonusB == null) { + bonusB = tVoltageMultiplier > 100 ? material : mStone; + } + + AutoMap<Pair<Integer, Material>> componentMap = new AutoMap<Pair<Integer, Material>>(); + for (MaterialStack r : material.getComposites()) { + if (r != null) { + componentMap.put(new Pair<Integer, Material>(r.getPartsPerOneHundred(), r.getStackMaterial())); + } + } + + // Need two valid outputs + if (bonusA == null || bonusB == null || !bonusA.hasSolidForm() || !bonusB.hasSolidForm()) { + if (bonusA == null) { + bonusA = mStone; + } + if (bonusB == null) { + bonusB = mStone; + } + if (!bonusA.hasSolidForm()) { + bonusA = mStone; + } + if (!bonusB.hasSolidForm()) { + bonusB = mStone; + } + } + + ItemStack matDust = getDust(material); + ItemStack matDustA = getDust(bonusA); + ItemStack matDustB = getDust(bonusB); + + /** + * Package + */ + // Allow ore dusts to be packaged + if (ItemUtils.checkForInvalidItems(material.getSmallDust(1)) + && ItemUtils.checkForInvalidItems(material.getTinyDust(1))) { + RecipeGen_DustGeneration.generatePackagerRecipes(material); + } + + /** + * Macerate + */ + // Macerate ore to Crushed + if (GT_Values.RA.addPulveriserRecipe( + material.getOre(1), + new ItemStack[] {material.getCrushed(2)}, + new int[] {10000}, + 20 * 20, + tVoltageMultiplier / 2)) { + Logger.MATERIALS("[Macerator] Added Recipe: 'Macerate ore to Crushed ore'"); + } + // Macerate Crushed to Impure Dust + if (GT_Values.RA.addPulveriserRecipe( + material.getCrushed(1), + new ItemStack[] {material.getDustImpure(1), matDustA}, + new int[] {10000, 1000}, + 20 * 20, + tVoltageMultiplier / 2)) { + Logger.MATERIALS("[Macerator] Added Recipe: 'Macerate Crushed ore to Impure Dust'"); + } + // Macerate Washed to Purified Dust + if (GT_Values.RA.addPulveriserRecipe( + material.getCrushedPurified(1), + new ItemStack[] {material.getDustPurified(1), matDustA}, + new int[] {10000, 1000}, + 20 * 20, + tVoltageMultiplier / 2)) { + Logger.MATERIALS("[Macerator] Added Recipe: 'Macerate Washed ore to Purified Dust'"); + } + // Macerate Centrifuged to Pure Dust + if (GT_Values.RA.addPulveriserRecipe( + material.getCrushedCentrifuged(1), + new ItemStack[] {matDust, matDustA}, + new int[] {10000, 1000}, + 20 * 20, + tVoltageMultiplier / 2)) { + Logger.MATERIALS("[Macerator] Added Recipe: 'Macerate Centrifuged ore to Pure Dust'"); + } + + /** + * Wash + */ + // Wash into Purified Crushed + /*if (GT_Values.RA.addOreWasherRecipe(material.getCrushed(1), material.getCrushedPurified(1), bonusA.getTinyDust(1), dustStone, FluidUtils.getWater(1000), 25*20, 16)){ + Logger.MATERIALS("[OreWasher] Added Recipe: 'Wash Crushed ore into Purified Crushed ore'"); + }*/ + // .08 compat method + if (GT_ModHandler.addOreWasherRecipe( + material.getCrushed(1), + new int[] {10000, 1111, 10000}, + 1000, + material.getCrushedPurified(1), + matDustA, + dustStone)) { + Logger.MATERIALS("[OreWasher] Added Recipe: 'Wash Crushed ore into Purified Crushed ore'"); + } + + /** + * Thermal Centrifuge + */ + /*//Crushed ore to Centrifuged Ore + if (GT_Values.RA.addThermalCentrifugeRecipe(material.getCrushed(1), material.getCrushedCentrifuged(1), tinyDustB, dustStone, 25*20, 24)){ + Logger.MATERIALS("[ThermalCentrifuge] Added Recipe: 'Crushed ore to Centrifuged Ore'"); + } + //Washed ore to Centrifuged Ore + if (GT_Values.RA.addThermalCentrifugeRecipe(material.getCrushedPurified(1), material.getCrushedCentrifuged(1), bonusA.getTinyDust(1), dustStone, 25*20, 24)){ + Logger.MATERIALS("[ThermalCentrifuge] Added Recipe: 'Washed ore to Centrifuged Ore'"); + }*/ + + Logger.MATERIALS("material.getCrushed(1): " + (material.getCrushed(1) != null)); + Logger.MATERIALS("material.getCrushedPurified(1): " + (material.getCrushedPurified(1) != null)); + + Logger.MATERIALS("material.getTinyDust(1): " + (ItemUtils.getItemName(bonusA.getCrushed(1)))); + Logger.MATERIALS("material.getTinyDust(1): " + (ItemUtils.getItemName(bonusB.getCrushed(1)))); + + try { + // .08 compat + if (GT_ModHandler.addThermalCentrifugeRecipe( + material.getCrushed(1), + new int[] {10000, 1111, 10000}, + (int) Math.min(5000L, Math.abs(material.getMass() * 20L)), + material.getCrushedCentrifuged(1), + matDustB, + dustStone)) { + Logger.MATERIALS("[ThermalCentrifuge] Added Recipe: 'Crushed ore to Centrifuged Ore' | Input: " + + material.getCrushed(1).getDisplayName() + " | Outputs: " + + material.getCrushedCentrifuged(1).getDisplayName() + ", " + matDustB.getDisplayName() + ", " + + dustStone.getDisplayName() + "."); + } + } catch (Throwable t) { + } + try { + if (GT_ModHandler.addThermalCentrifugeRecipe( + material.getCrushedPurified(1), + new int[] {10000, 1111, 10000}, + (int) Math.min(5000L, Math.abs(material.getMass() * 20L)), + material.getCrushedCentrifuged(1), + matDustA, + dustStone)) { + Logger.MATERIALS("[ThermalCentrifuge] Added Recipe: 'Washed ore to Centrifuged Ore' | Input: " + + material.getCrushedPurified(1).getDisplayName() + " | Outputs: " + + material.getCrushedCentrifuged(1).getDisplayName() + ", " + matDustA.getDisplayName() + ", " + + dustStone.getDisplayName() + "."); + } + } catch (Throwable t) { + } + + /** + * Forge Hammer + */ + if (GT_Values.RA.addForgeHammerRecipe(material.getCrushedCentrifuged(1), matDust, 10, tVoltageMultiplier / 4)) { + Logger.MATERIALS("[ForgeHammer] Added Recipe: 'Crushed Centrifuged to Pure Dust'"); + } + if (GT_Values.RA.addForgeHammerRecipe( + material.getCrushedPurified(1), material.getDustPurified(1), 10, tVoltageMultiplier / 4)) { + Logger.MATERIALS("[ForgeHammer] Added Recipe: 'Crushed Purified to Purified Dust'"); + } + if (GT_Values.RA.addForgeHammerRecipe(material.getOre(1), material.getCrushed(1), 10, tVoltageMultiplier / 4)) { + Logger.MATERIALS("[ForgeHammer] Added Recipe: 'Ore to Crushed'"); + } + + /** + * Centrifuge + */ + // Purified Dust to Clean + if (GT_Values.RA.addCentrifugeRecipe( + material.getDustPurified(1), + null, + null, // In Fluid + null, // Out Fluid + matDust, + matDustA, + null, + null, + null, + null, + new int[] {10000, 1111}, // Chances + (int) Math.max(1L, material.getMass() * 8L), // Time + tVoltageMultiplier / 2)) { // Eu + Logger.MATERIALS("[Centrifuge] Added Recipe: Purified Dust to Clean Dust"); + } + + // Impure Dust to Clean + if (GT_Values.RA.addCentrifugeRecipe( + material.getDustImpure(1), + null, + null, // In Fluid + null, // Out Fluid + matDust, + matDustB, + null, + null, + null, + null, + new int[] {10000, 1111}, // Chances + (int) Math.max(1L, material.getMass() * 8L), // Time + tVoltageMultiplier / 2)) { // Eu + Logger.MATERIALS("[Centrifuge] Added Recipe: Inpure Dust to Clean Dust"); + } + + /** + * Electrolyzer + */ + if (!disableOptional) { + // Process Dust + if (componentMap.size() > 0 && componentMap.size() <= 6) { + + ItemStack mInternalOutputs[] = new ItemStack[6]; + int mChances[] = new int[6]; + int mCellCount = 0; + + int mTotalCount = 0; + + int mCounter = 0; + for (Pair<Integer, Material> f : componentMap) { + if (f.getValue().getState() != MaterialState.SOLID) { + Logger.MATERIALS("[Electrolyzer] Found Fluid Component, adding " + f.getKey() + " cells of " + + f.getValue().getLocalizedName() + "."); + mInternalOutputs[mCounter++] = f.getValue().getCell(f.getKey()); + mCellCount += f.getKey(); + mTotalCount += f.getKey(); + Logger.MATERIALS("[Electrolyzer] In total, adding " + mCellCount + " cells for " + + material.getLocalizedName() + " processing."); + } else { + Logger.MATERIALS("[Electrolyzer] Found Solid Component, adding " + f.getKey() + " dusts of " + + f.getValue().getLocalizedName() + "."); + mInternalOutputs[mCounter++] = f.getValue().getDust(f.getKey()); + mTotalCount += f.getKey(); + } + } + + // Build Output Array + for (int g = 0; g < mInternalOutputs.length; g++) { + Logger.MATERIALS("[Electrolyzer] Is output[" + g + "] valid with a chance? " + + (mInternalOutputs[g] != null ? 10000 : 0)); + mChances[g] = (mInternalOutputs[g] != null ? 10000 : 0); + } + + ItemStack emptyCell = null; + if (mCellCount > 0) { + emptyCell = ItemUtils.getItemStackOfAmountFromOreDict("cellEmpty", mCellCount); + Logger.MATERIALS("[Electrolyzer] Recipe now requires " + mCellCount + " empty cells as input."); + } + + ItemStack mainDust = material.getDust(material.smallestStackSizeWhenProcessing); + if (mainDust != null) { + Logger.MATERIALS("[Electrolyzer] Recipe now requires " + material.smallestStackSizeWhenProcessing + + "x " + mainDust.getDisplayName() + " as input."); + } else { + mainDust = material.getDust(mTotalCount); + Logger.MATERIALS("[Electrolyzer] Could not find valid input dust, trying alternative."); + if (mainDust != null) { + Logger.MATERIALS("[Electrolyzer] Recipe now requires " + mTotalCount + "x " + + mainDust.getDisplayName() + " as input."); + } else { + Logger.MATERIALS("[Electrolyzer] Could not find valid input dust, exiting."); + } + } + + for (int j = 0; j < mInternalOutputs.length; j++) { + if (mInternalOutputs[j] == null) { + mInternalOutputs[j] = GT_Values.NI; + Logger.MATERIALS("[Electrolyzer] Set slot " + j + " to null."); + } else { + Logger.MATERIALS( + "[Electrolyzer] Set slot " + j + " to " + mInternalOutputs[j].getDisplayName() + "."); + } + } + + try { + if (addElectrolyzerRecipe( + mainDust, + emptyCell, // input 2 + null, // Input fluid 1 + null, // Output fluid 1 + mInternalOutputs[0], + mInternalOutputs[1], + mInternalOutputs[2], + mInternalOutputs[3], + mInternalOutputs[4], + mInternalOutputs[5], + mChances, + (int) Math.max(material.getMass() * 3L * 1, 1), + tVoltageMultiplier)) { + Logger.MATERIALS( + "[Electrolyzer] Generated Electrolyzer recipe for " + matDust.getDisplayName()); + } else { + Logger.MATERIALS("[Electrolyzer] Failed to generate Electrolyzer recipe for " + + matDust.getDisplayName()); + } + } catch (Throwable t) { + t.printStackTrace(); + } + } else if (componentMap.size() > 6 && componentMap.size() <= 9) { + Logger.MATERIALS( + "[Issue][Electrolyzer] " + material.getLocalizedName() + + " is composed of over 6 materials, so an electrolyzer recipe for processing cannot be generated. Trying to create one for the Dehydrator instead."); + + ItemStack mInternalOutputs[] = new ItemStack[9]; + int mChances[] = new int[9]; + int mCellCount = 0; + + int mTotalCount = 0; + + int mCounter = 0; + for (Pair<Integer, Material> f : componentMap) { + if (f.getValue().getState() != MaterialState.SOLID + && f.getValue().getState() != MaterialState.ORE) { + Logger.MATERIALS("[Dehydrator] Found Fluid Component, adding " + f.getKey() + " cells of " + + f.getValue().getLocalizedName() + "."); + mInternalOutputs[mCounter++] = f.getValue().getCell(f.getKey()); + mCellCount += f.getKey(); + mTotalCount += f.getKey(); + Logger.MATERIALS("[Dehydrator] In total, adding " + mCellCount + " cells for " + + material.getLocalizedName() + " processing."); + } else { + Logger.MATERIALS("[Dehydrator] Found Solid Component, adding " + f.getKey() + " dusts of " + + f.getValue().getLocalizedName() + "."); + mInternalOutputs[mCounter++] = f.getValue().getDust(f.getKey()); + mTotalCount += f.getKey(); + } + } + + // Build Output Array + for (int g = 0; g < mInternalOutputs.length; g++) { + Logger.MATERIALS("[Dehydrator] Is output[" + g + "] valid with a chance? " + + (mInternalOutputs[g] != null ? 10000 : 0)); + mChances[g] = (mInternalOutputs[g] != null ? 10000 : 0); + } + + ItemStack emptyCell = null; + if (mCellCount > 0) { + emptyCell = ItemUtils.getItemStackOfAmountFromOreDict("cellEmpty", mCellCount); + Logger.MATERIALS("[Dehydrator] Recipe now requires " + mCellCount + " empty cells as input."); + } + + ItemStack mainDust = material.getDust(material.smallestStackSizeWhenProcessing); + if (mainDust != null) { + Logger.MATERIALS("[Dehydrator] Recipe now requires " + material.smallestStackSizeWhenProcessing + + "x " + mainDust.getDisplayName() + " as input."); + } else { + mainDust = material.getDust(mTotalCount); + Logger.MATERIALS("[Dehydrator] Could not find valid input dust, trying alternative."); + if (mainDust != null) { + Logger.MATERIALS("[Dehydrator] Recipe now requires " + mTotalCount + "x " + + mainDust.getDisplayName() + " as input."); + } else { + Logger.MATERIALS("[Dehydrator] Could not find valid input dust, exiting."); + } + } + + for (int j = 0; j < mInternalOutputs.length; j++) { + if (mInternalOutputs[j] == null) { + mInternalOutputs[j] = GT_Values.NI; + Logger.MATERIALS("[Dehydrator] Set slot " + j + " to null."); + } else { + Logger.MATERIALS( + "[Dehydrator] Set slot " + j + " to " + mInternalOutputs[j].getDisplayName() + "."); + } + } + + try { + if (CORE.RA.addDehydratorRecipe( + new ItemStack[] {mainDust, emptyCell}, + null, + null, + mInternalOutputs, + mChances, + (int) Math.max(material.getMass() * 4L * 1, 1), + tVoltageMultiplier)) { + Logger.MATERIALS("[Dehydrator] Generated Dehydrator recipe for " + matDust.getDisplayName()); + Logger.MATERIALS("Inputs: " + mainDust.getDisplayName() + " x" + mainDust.stackSize + ", " + + (emptyCell == null + ? "No Cells" + : "" + emptyCell.getDisplayName() + " x" + emptyCell.stackSize)); + Logger.MATERIALS("Outputs " + ItemUtils.getArrayStackNames(mInternalOutputs)); + Logger.MATERIALS("Time: " + ((int) Math.max(material.getMass() * 4L * 1, 1))); + Logger.MATERIALS("EU: " + tVoltageMultiplier); + } else { + Logger.MATERIALS( + "[Dehydrator] Failed to generate Dehydrator recipe for " + matDust.getDisplayName()); + } + } catch (Throwable t) { + t.printStackTrace(); + } + } + } + + /** + * Shaped Crafting + */ + RecipeUtils.addShapedRecipe( + CI.craftingToolHammer_Hard, + null, + null, + material.getCrushedPurified(1), + null, + null, + null, + null, + null, + material.getDustPurified(1)); + + RecipeUtils.addShapedRecipe( + CI.craftingToolHammer_Hard, + null, + null, + material.getCrushed(1), + null, + null, + null, + null, + null, + material.getDustImpure(1)); + + RecipeUtils.addShapedRecipe( + CI.craftingToolHammer_Hard, + null, + null, + material.getCrushedCentrifuged(1), + null, + null, + null, + null, + null, + matDust); + + final ItemStack normalDust = matDust; + final ItemStack smallDust = material.getSmallDust(1); + final ItemStack tinyDust = material.getTinyDust(1); + + if (RecipeUtils.addShapedRecipe( + tinyDust, tinyDust, tinyDust, tinyDust, tinyDust, tinyDust, tinyDust, tinyDust, tinyDust, normalDust)) { + Logger.WARNING("9 Tiny dust to 1 Dust Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING("9 Tiny dust to 1 Dust Recipe: " + material.getLocalizedName() + " - Failed"); + } + + if (RecipeUtils.addShapedRecipe( + normalDust, null, null, null, null, null, null, null, null, material.getTinyDust(9))) { + Logger.WARNING("9 Tiny dust from 1 Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING("9 Tiny dust from 1 Recipe: " + material.getLocalizedName() + " - Failed"); + } + + if (RecipeUtils.addShapedRecipe( + smallDust, smallDust, null, smallDust, smallDust, null, null, null, null, normalDust)) { + Logger.WARNING("4 Small dust to 1 Dust Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING("4 Small dust to 1 Dust Recipe: " + material.getLocalizedName() + " - Failed"); + } + + if (RecipeUtils.addShapedRecipe( + null, normalDust, null, null, null, null, null, null, null, material.getSmallDust(4))) { + Logger.WARNING("4 Small dust from 1 Dust Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING("4 Small dust from 1 Dust Recipe: " + material.getLocalizedName() + " - Failed"); + } + + // } + } + + public static boolean addElectrolyzerRecipe( + ItemStack aInput1, + ItemStack aInput2, + FluidStack aFluidInput, + FluidStack aFluidOutput, + ItemStack aOutput1, + ItemStack aOutput2, + ItemStack aOutput3, + ItemStack aOutput4, + ItemStack aOutput5, + ItemStack aOutput6, + int[] aChances, + int aDuration, + int aEUt) { + if (((aInput1 == null) && (aFluidInput == null)) || ((aOutput1 == null) && (aFluidOutput == null))) { + Logger.MATERIALS("[Electrolyzer] Either both inputs or outputs are null."); + return false; + } + if ((aInput1 != null) + && ((aDuration = GregTech_API.sRecipeFile.get("electrolyzer", aInput1, aDuration)) <= 0)) { + Logger.MATERIALS("[Electrolyzer] Fail 1."); + return false; + } + if ((aFluidInput != null) + && ((aDuration = GregTech_API.sRecipeFile.get( + "electrolyzer", aFluidInput.getFluid().getName(), aDuration)) + <= 0)) { + Logger.MATERIALS("[Electrolyzer] Fail 2."); + return false; + } + GT_Recipe.GT_Recipe_Map.sElectrolyzerRecipes.addRecipe( + true, + new ItemStack[] {aInput1, aInput2}, + new ItemStack[] {aOutput1, aOutput2, aOutput3, aOutput4, aOutput5, aOutput6}, + null, + aChances, + new FluidStack[] {aFluidInput}, + new FluidStack[] {aFluidOutput}, + aDuration, + aEUt, + 0); + Logger.MATERIALS("[Electrolyzer] Recipe added."); + return true; + } + + public static ItemStack getTinyDust(Material m) { + ItemStack x = m.getTinyDust(1); + if (x == null) { + x = mStone.getDust(1); + } + return x; + } + + public static ItemStack getDust(Material m) { + ItemStack x = m.getDust(1); + if (x == null) { + x = mStone.getDust(1); + } + return x; + } } diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Plasma.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Plasma.java index 7355ac7dc0..bf9ef18720 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Plasma.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Plasma.java @@ -1,8 +1,5 @@ package gtPlusPlus.xmod.gregtech.loaders; -import java.util.HashSet; -import java.util.Set; - import gregtech.api.enums.GT_Values; import gregtech.api.util.GT_Utility; import gtPlusPlus.api.interfaces.RunnableWithInfo; @@ -10,38 +7,46 @@ import gtPlusPlus.core.material.Material; import gtPlusPlus.core.material.MaterialGenerator; import gtPlusPlus.core.recipe.common.CI; import gtPlusPlus.core.util.minecraft.ItemUtils; +import java.util.HashSet; +import java.util.Set; import net.minecraft.item.ItemStack; public class RecipeGen_Plasma extends RecipeGen_Base { - public final static Set<RunnableWithInfo<Material>> mRecipeGenMap = new HashSet<RunnableWithInfo<Material>>(); - static { - MaterialGenerator.mRecipeMapsToGenerate.put(mRecipeGenMap); - } - - public RecipeGen_Plasma(final Material M){ - this.toGenerate = M; - mRecipeGenMap.add(this); - } - - @Override - public void run() { - generateRecipes(this.toGenerate); - } - - private void generateRecipes(final Material material) { - if (material.getPlasma() != null) { - // Cool Plasma - ItemStack aPlasmaCell = material.getPlasmaCell(1); - ItemStack aCell = material.getCell(1); - ItemStack aContainerItem = GT_Utility.getFluidForFilledItem(aPlasmaCell, true) == null ? GT_Utility.getContainerItem(aPlasmaCell, true) : CI.emptyCells(1); - if (ItemUtils.checkForInvalidItems(new ItemStack[] {aPlasmaCell, aContainerItem})){ - GT_Values.RA.addFuel(GT_Utility.copyAmount(1L, aPlasmaCell), aContainerItem, (int) Math.max(1024L, 1024L * material.getMass()), 4); - } - if (ItemUtils.checkForInvalidItems(new ItemStack[] {aCell, aPlasmaCell})){ - GT_Values.RA.addVacuumFreezerRecipe(aPlasmaCell, aCell, (int) Math.max(material.getMass() * 2L, 1L)); - } - } - } - + public static final Set<RunnableWithInfo<Material>> mRecipeGenMap = new HashSet<RunnableWithInfo<Material>>(); + + static { + MaterialGenerator.mRecipeMapsToGenerate.put(mRecipeGenMap); + } + + public RecipeGen_Plasma(final Material M) { + this.toGenerate = M; + mRecipeGenMap.add(this); + } + + @Override + public void run() { + generateRecipes(this.toGenerate); + } + + private void generateRecipes(final Material material) { + if (material.getPlasma() != null) { + // Cool Plasma + ItemStack aPlasmaCell = material.getPlasmaCell(1); + ItemStack aCell = material.getCell(1); + ItemStack aContainerItem = GT_Utility.getFluidForFilledItem(aPlasmaCell, true) == null + ? GT_Utility.getContainerItem(aPlasmaCell, true) + : CI.emptyCells(1); + if (ItemUtils.checkForInvalidItems(new ItemStack[] {aPlasmaCell, aContainerItem})) { + GT_Values.RA.addFuel( + GT_Utility.copyAmount(1L, aPlasmaCell), + aContainerItem, + (int) Math.max(1024L, 1024L * material.getMass()), + 4); + } + if (ItemUtils.checkForInvalidItems(new ItemStack[] {aCell, aPlasmaCell})) { + GT_Values.RA.addVacuumFreezerRecipe(aPlasmaCell, aCell, (int) Math.max(material.getMass() * 2L, 1L)); + } + } + } } diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Plates.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Plates.java index 6b512f4b3a..d33c1d4ad6 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Plates.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Plates.java @@ -1,170 +1,171 @@ package gtPlusPlus.xmod.gregtech.loaders; -import java.util.HashSet; -import java.util.Set; - import gregtech.api.GregTech_API; import gregtech.api.enums.GT_Values; import gregtech.api.enums.ItemList; import gregtech.api.objects.GT_RenderedTexture; -import gregtech.api.render.TextureFactory; import gregtech.api.util.GT_Recipe; import gtPlusPlus.api.interfaces.RunnableWithInfo; import gtPlusPlus.api.objects.Logger; import gtPlusPlus.core.material.Material; import gtPlusPlus.core.material.MaterialGenerator; import gtPlusPlus.core.util.minecraft.ItemUtils; +import java.util.HashSet; +import java.util.Set; import net.minecraft.item.ItemStack; public class RecipeGen_Plates extends RecipeGen_Base { - public final static Set<RunnableWithInfo<Material>> mRecipeGenMap = new HashSet<RunnableWithInfo<Material>>(); - static { - MaterialGenerator.mRecipeMapsToGenerate.put(mRecipeGenMap); - } - - public RecipeGen_Plates(final Material M){ - this.toGenerate = M; - mRecipeGenMap.add(this); - } - - @Override - public void run() { - generateRecipes(this.toGenerate); - } - - private void generateRecipes(final Material material){ - - final int tVoltageMultiplier = material.getMeltingPointK() >= 2800 ? 60 : 15; - final ItemStack ingotStackOne = material.getIngot(1); - final ItemStack ingotStackTwo = material.getIngot(2); - final ItemStack shape_Mold = ItemList.Shape_Mold_Plate.get(0); - final ItemStack plate_Single = material.getPlate(1); - final ItemStack plate_SingleTwo = material.getPlate(2); - final ItemStack plate_SingleNine = material.getPlate(9); - final ItemStack plate_Double = material.getPlateDouble(1); - final ItemStack block = material.getBlock(1); - - Logger.WARNING("Generating Plate recipes for "+material.getLocalizedName()); - - //Forge Hammer - if (ItemUtils.checkForInvalidItems(ingotStackTwo) && ItemUtils.checkForInvalidItems(plate_Single)) - if (addForgeHammerRecipe( - ingotStackTwo, - plate_Single, - (int) Math.max(material.getMass(), 1L), - material.vVoltageMultiplier)){ - Logger.WARNING("Forge Hammer Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Logger.WARNING("Forge Hammer Recipe: "+material.getLocalizedName()+" - Failed"); - } - //Bender - if (ItemUtils.checkForInvalidItems(ingotStackOne) && ItemUtils.checkForInvalidItems(plate_Single)) - if (addBenderRecipe( - ingotStackOne, - plate_Single, - (int) Math.max(material.getMass() * 1L, 1L), - material.vVoltageMultiplier)){ - Logger.WARNING("Bender Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Logger.WARNING("Bender Recipe: "+material.getLocalizedName()+" - Failed"); - } - //Alloy Smelter - if (ItemUtils.checkForInvalidItems(ingotStackTwo) && ItemUtils.checkForInvalidItems(plate_Single)) - if (GT_Values.RA.addAlloySmelterRecipe( - ingotStackTwo, - shape_Mold, - plate_Single, - (int) Math.max(material.getMass() * 2L, 1L), - material.vVoltageMultiplier)){ - Logger.WARNING("Alloy Smelter Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Logger.WARNING("Alloy Smelter Recipe: "+material.getLocalizedName()+" - Failed"); - } - //Cutting Machine - if (ItemUtils.checkForInvalidItems(block) && ItemUtils.checkForInvalidItems(plate_Single)) - if (GT_Values.RA.addCutterRecipe( - block, - null, - plate_SingleNine, - (int) Math.max(material.getMass() * 10L, 1L), - material.vVoltageMultiplier)){ - Logger.WARNING("Cutting Machine Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Logger.WARNING("Cutting Machine Recipe: "+material.getLocalizedName()+" - Failed"); - } - - - //Making Double Plates - if (ItemUtils.checkForInvalidItems(ingotStackTwo) && ItemUtils.checkForInvalidItems(plate_Double)) - if (addBenderRecipe( - ingotStackTwo, - plate_Double, - (int) Math.max(material.getMass() * 2L, 1L), - material.vVoltageMultiplier)){ - Logger.WARNING("Bender Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Logger.WARNING("Bender Recipe: "+material.getLocalizedName()+" - Failed"); - } - - if (ItemUtils.checkForInvalidItems(plate_SingleTwo) && ItemUtils.checkForInvalidItems(plate_Double)) - if (addBenderRecipe( - plate_SingleTwo, - plate_Double, - (int) Math.max(material.getMass() * 2L, 1L), - material.vVoltageMultiplier)){ - Logger.WARNING("Bender Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Logger.WARNING("Bender Recipe: "+material.getLocalizedName()+" - Failed"); - } - - //Bender - if (ItemUtils.checkForInvalidItems(material.getPlate(1)) && ItemUtils.checkForInvalidItems(material.getFoil(1))) - if (addBenderRecipe( - material.getPlate(1), - material.getFoil(4), - (int) Math.max(material.getMass(), 1L), - material.vVoltageMultiplier)){ - GregTech_API.registerCover(material.getFoil(1), new GT_RenderedTexture(material.getTextureSet().mTextures[70], material.getRGBA(), false), null); - Logger.WARNING("Bender Foil Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Logger.WARNING("Bender Foil Recipe: "+material.getLocalizedName()+" - Failed"); - } - } - - public static boolean addBenderRecipe(final ItemStack aInput1, final ItemStack aOutput1, int aDuration, final int aEUt) { - return GT_Values.RA.addBenderRecipe(aInput1, aOutput1, aDuration, aEUt); - } - - public static boolean addExtruderRecipe(final ItemStack aInput, final ItemStack aShape, final ItemStack aOutput, int aDuration, final int aEUt) { - if ((aInput == null) || (aShape == null) || (aOutput == null)) { - return false; - } - if ((aDuration = GregTech_API.sRecipeFile.get("extruder", aOutput, aDuration)) <= 0) { - return false; - } - GT_Recipe.GT_Recipe_Map.sExtruderRecipes.addRecipe(true, new ItemStack[]{aInput, aShape}, new ItemStack[]{aOutput}, null, null, null, aDuration, aEUt, 0); - return true; - } - - public static boolean addForgeHammerRecipe(final ItemStack aInput1, final ItemStack aOutput1, final int aDuration, final int aEUt) { - if ((aInput1 == null) || (aOutput1 == null)) { - return false; - } - if (!GregTech_API.sRecipeFile.get("forgehammer", aOutput1, true)) { - return false; - } - GT_Recipe.GT_Recipe_Map.sHammerRecipes.addRecipe(true, new ItemStack[]{aInput1}, new ItemStack[]{aOutput1}, null, null, null, aDuration, aEUt, 0); - return true; - } - - - + public static final Set<RunnableWithInfo<Material>> mRecipeGenMap = new HashSet<RunnableWithInfo<Material>>(); + + static { + MaterialGenerator.mRecipeMapsToGenerate.put(mRecipeGenMap); + } + + public RecipeGen_Plates(final Material M) { + this.toGenerate = M; + mRecipeGenMap.add(this); + } + + @Override + public void run() { + generateRecipes(this.toGenerate); + } + + private void generateRecipes(final Material material) { + + final int tVoltageMultiplier = material.getMeltingPointK() >= 2800 ? 60 : 15; + final ItemStack ingotStackOne = material.getIngot(1); + final ItemStack ingotStackTwo = material.getIngot(2); + final ItemStack shape_Mold = ItemList.Shape_Mold_Plate.get(0); + final ItemStack plate_Single = material.getPlate(1); + final ItemStack plate_SingleTwo = material.getPlate(2); + final ItemStack plate_SingleNine = material.getPlate(9); + final ItemStack plate_Double = material.getPlateDouble(1); + final ItemStack block = material.getBlock(1); + + Logger.WARNING("Generating Plate recipes for " + material.getLocalizedName()); + + // Forge Hammer + if (ItemUtils.checkForInvalidItems(ingotStackTwo) && ItemUtils.checkForInvalidItems(plate_Single)) + if (addForgeHammerRecipe( + ingotStackTwo, plate_Single, (int) Math.max(material.getMass(), 1L), material.vVoltageMultiplier)) { + Logger.WARNING("Forge Hammer Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING("Forge Hammer Recipe: " + material.getLocalizedName() + " - Failed"); + } + // Bender + if (ItemUtils.checkForInvalidItems(ingotStackOne) && ItemUtils.checkForInvalidItems(plate_Single)) + if (addBenderRecipe( + ingotStackOne, + plate_Single, + (int) Math.max(material.getMass() * 1L, 1L), + material.vVoltageMultiplier)) { + Logger.WARNING("Bender Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING("Bender Recipe: " + material.getLocalizedName() + " - Failed"); + } + // Alloy Smelter + if (ItemUtils.checkForInvalidItems(ingotStackTwo) && ItemUtils.checkForInvalidItems(plate_Single)) + if (GT_Values.RA.addAlloySmelterRecipe( + ingotStackTwo, + shape_Mold, + plate_Single, + (int) Math.max(material.getMass() * 2L, 1L), + material.vVoltageMultiplier)) { + Logger.WARNING("Alloy Smelter Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING("Alloy Smelter Recipe: " + material.getLocalizedName() + " - Failed"); + } + // Cutting Machine + if (ItemUtils.checkForInvalidItems(block) && ItemUtils.checkForInvalidItems(plate_Single)) + if (GT_Values.RA.addCutterRecipe( + block, + null, + plate_SingleNine, + (int) Math.max(material.getMass() * 10L, 1L), + material.vVoltageMultiplier)) { + Logger.WARNING("Cutting Machine Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING("Cutting Machine Recipe: " + material.getLocalizedName() + " - Failed"); + } + + // Making Double Plates + if (ItemUtils.checkForInvalidItems(ingotStackTwo) && ItemUtils.checkForInvalidItems(plate_Double)) + if (addBenderRecipe( + ingotStackTwo, + plate_Double, + (int) Math.max(material.getMass() * 2L, 1L), + material.vVoltageMultiplier)) { + Logger.WARNING("Bender Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING("Bender Recipe: " + material.getLocalizedName() + " - Failed"); + } + + if (ItemUtils.checkForInvalidItems(plate_SingleTwo) && ItemUtils.checkForInvalidItems(plate_Double)) + if (addBenderRecipe( + plate_SingleTwo, + plate_Double, + (int) Math.max(material.getMass() * 2L, 1L), + material.vVoltageMultiplier)) { + Logger.WARNING("Bender Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING("Bender Recipe: " + material.getLocalizedName() + " - Failed"); + } + + // Bender + if (ItemUtils.checkForInvalidItems(material.getPlate(1)) && ItemUtils.checkForInvalidItems(material.getFoil(1))) + if (addBenderRecipe( + material.getPlate(1), + material.getFoil(4), + (int) Math.max(material.getMass(), 1L), + material.vVoltageMultiplier)) { + GregTech_API.registerCover( + material.getFoil(1), + new GT_RenderedTexture(material.getTextureSet().mTextures[70], material.getRGBA(), false), + null); + Logger.WARNING("Bender Foil Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING("Bender Foil Recipe: " + material.getLocalizedName() + " - Failed"); + } + } + + public static boolean addBenderRecipe( + final ItemStack aInput1, final ItemStack aOutput1, int aDuration, final int aEUt) { + return GT_Values.RA.addBenderRecipe(aInput1, aOutput1, aDuration, aEUt); + } + + public static boolean addExtruderRecipe( + final ItemStack aInput, final ItemStack aShape, final ItemStack aOutput, int aDuration, final int aEUt) { + if ((aInput == null) || (aShape == null) || (aOutput == null)) { + return false; + } + if ((aDuration = GregTech_API.sRecipeFile.get("extruder", aOutput, aDuration)) <= 0) { + return false; + } + GT_Recipe.GT_Recipe_Map.sExtruderRecipes.addRecipe( + true, + new ItemStack[] {aInput, aShape}, + new ItemStack[] {aOutput}, + null, + null, + null, + aDuration, + aEUt, + 0); + return true; + } + + public static boolean addForgeHammerRecipe( + final ItemStack aInput1, final ItemStack aOutput1, final int aDuration, final int aEUt) { + if ((aInput1 == null) || (aOutput1 == null)) { + return false; + } + if (!GregTech_API.sRecipeFile.get("forgehammer", aOutput1, true)) { + return false; + } + GT_Recipe.GT_Recipe_Map.sHammerRecipes.addRecipe( + true, new ItemStack[] {aInput1}, new ItemStack[] {aOutput1}, null, null, null, aDuration, aEUt, 0); + return true; + } } diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Recycling.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Recycling.java index ed9203fe34..18391d170f 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Recycling.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Recycling.java @@ -2,16 +2,9 @@ package gtPlusPlus.xmod.gregtech.loaders; import static gregtech.api.enums.GT_Values.L; import static gregtech.api.enums.GT_Values.M; -import static gregtech.api.enums.GT_Values.RA; - -import java.util.ArrayList; -import java.util.Map; - -import org.apache.commons.lang3.reflect.FieldUtils; import gregtech.api.enums.Materials; import gregtech.api.enums.OrePrefixes; -import gregtech.api.enums.SubTag; import gregtech.api.util.GT_ModHandler; import gregtech.api.util.GT_OreDictUnificator; import gregtech.api.util.GT_Utility; @@ -24,357 +17,402 @@ import gtPlusPlus.core.material.state.MaterialState; import gtPlusPlus.core.util.Utils; import gtPlusPlus.core.util.minecraft.ItemUtils; import gtPlusPlus.core.util.reflect.ReflectionUtils; +import java.util.ArrayList; +import java.util.Map; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraftforge.oredict.OreDictionary; +import org.apache.commons.lang3.reflect.FieldUtils; public class RecipeGen_Recycling implements Runnable { - public static AutoMap<Runnable> mQueuedRecyclingGenerators = new AutoMap<Runnable>(); - - public static void executeGenerators() { - if (mQueuedRecyclingGenerators.size() > 0) { - for (Runnable R : mQueuedRecyclingGenerators.values()) { - R.run(); - } - } - } - - final Material toGenerate; - public static Map<String, ItemStack> mNameMap; - - public RecipeGen_Recycling(final Material M) { - this.toGenerate = M; - if (mNameMap == null){ - mNameMap = this.getNameMap(); - } - mQueuedRecyclingGenerators.put(this); - } - - @Override - public void run() { - if (mNameMap != null){ - generateRecipes(this.toGenerate); - } - } - - public static void generateRecipes(final Material material) { - - if (material != null) - Logger.WARNING("Generating Recycling recipes for " + material.getLocalizedName()); - - final OrePrefixes[] mValidPrefixesAsString = { OrePrefixes.ingot, OrePrefixes.ingotHot, OrePrefixes.nugget, - OrePrefixes.plate, OrePrefixes.plateDense, OrePrefixes.plateDouble, OrePrefixes.plateTriple, - OrePrefixes.plateQuadruple, OrePrefixes.plateQuintuple, OrePrefixes.stick, OrePrefixes.stickLong, - OrePrefixes.bolt, OrePrefixes.screw, OrePrefixes.ring, OrePrefixes.rotor, OrePrefixes.gearGt, - OrePrefixes.gearGtSmall, OrePrefixes.gear, OrePrefixes.block, OrePrefixes.cableGt01, OrePrefixes.cableGt02, - OrePrefixes.cableGt04, OrePrefixes.cableGt08, OrePrefixes.cableGt12, OrePrefixes.wireFine, OrePrefixes.wireGt01, - OrePrefixes.wireGt02, OrePrefixes.wireGt04, OrePrefixes.wireGt08, OrePrefixes.wireGt12, OrePrefixes.wireGt16, - OrePrefixes.foil, OrePrefixes.frameGt, OrePrefixes.pipeHuge, OrePrefixes.pipeLarge, OrePrefixes.pipeMedium, OrePrefixes.pipeSmall, OrePrefixes.pipeTiny, - }; - - int mSlotIndex = 0; - Pair<OrePrefixes, ItemStack>[] mValidPairs = new Pair[mValidPrefixesAsString.length]; - - for (int r=0;r<mValidPairs.length;r++){ - ItemStack temp = getItemStackOfAmountFromOreDictNoBroken(mValidPrefixesAsString[r].name()+Utils.sanitizeString(material.getLocalizedName()), 1); - if (temp != null){ - mValidPairs[mSlotIndex++] = new Pair<OrePrefixes, ItemStack>(mValidPrefixesAsString[r], temp.copy()); - } - } - - if (mValidPairs.length > 0){ - int validCounter = 0; - Pair<OrePrefixes, ItemStack>[] temp = mValidPairs; - for (Pair<OrePrefixes, ItemStack> temp2 : mValidPairs){ - if (temp2 != null){ - Logger.WARNING("Valid: "+temp2.getValue().getDisplayName()); - validCounter++; - } - } - Pair<OrePrefixes, ItemStack> temp3[] = new Pair[validCounter]; - int temp4 = 0; - for (Pair<OrePrefixes, ItemStack> r : mValidPairs){ - if (r != null){ - temp3[temp4++] = r; - } - } - if (temp3.length > 0){ - mValidPairs = temp3.clone(); - } - } - - if (mValidPrefixesAsString.length >= 1) { - for (final Pair<OrePrefixes, ItemStack> validPrefix : mValidPairs) { - try { - - if (material == null || validPrefix == null || (material.getState() != MaterialState.SOLID && material.getState() != MaterialState.LIQUID) || validPrefix.getKey() == OrePrefixes.ingotHot) { - continue; - } - - final ItemStack tempStack = validPrefix.getValue(); - final ItemStack mDust = getDust(material, validPrefix.getKey()); - final Pair<OrePrefixes, ItemStack> mData = getDustData(material, validPrefix.getKey()); - int mFluidAmount = (int) GT_Utility.translateMaterialToFluidAmount(validPrefix.getKey().mMaterialAmount, true); - - //Maceration - if (ItemUtils.checkForInvalidItems(tempStack)) { - // mValidItems[mSlotIndex++] = tempStack; - if ((mDust != null) && GT_ModHandler.addPulverisationRecipe(tempStack, mDust)) { - Logger.WARNING("Recycle Recipe: " + material.getLocalizedName() + " - Success - Recycle " - + tempStack.getDisplayName() + " and obtain " + mDust.getDisplayName()); - } - else { - Logger.WARNING("Recycle Recipe: " + material.getLocalizedName() + " - Failed"); - if (mDust == null) { - Logger.WARNING("Invalid Dust output."); - } - } - } - - //Arc Furnace - if (ItemUtils.checkForInvalidItems(tempStack)) { - - } - - //Fluid Extractor - if (ItemUtils.checkForInvalidItems(tempStack)) { - // mValidItems[mSlotIndex++] = tempStack; - - int aFluidAmount = (int) ((L * validPrefix.getKey().mMaterialAmount) / (M * tempStack.stackSize)); - int aDuration = (int) Math.max(1, (24 * validPrefix.getKey().mMaterialAmount) / M); - boolean aGenFluidExtraction = CORE.RA.addFluidExtractionRecipe(tempStack, material.getFluidStack(aFluidAmount), aDuration, material.vVoltageMultiplier); - if (aGenFluidExtraction/*(mDust != null) && CORE.RA.addFluidExtractionRecipe(tempStack, material.getFluidStack(mFluidAmount), 30, material.vVoltageMultiplier)*/) { - Logger.WARNING("Fluid Recycle Recipe: " + material.getLocalizedName() + " - Success - Recycle " - + tempStack.getDisplayName() + " and obtain " + aFluidAmount+"mb of "+material.getFluidStack(1).getLocalizedName()+". Time: "+aDuration+", Voltage: "+material.vVoltageMultiplier); - } - else { - Logger.WARNING("Fluid Recycle Recipe: " + material.getLocalizedName() + " - Failed"); - if (mDust == null) { - Logger.WARNING("Invalid Dust output."); - } - } - } - - } - catch (final Throwable t) { - t.printStackTrace(); - // Utils.LOG_WARNING("Returning Null. Throwable Info: - // "+t.getMessage()); - // Utils.LOG_WARNING("Throwable Info: "+t.toString()); - // Utils.LOG_WARNING("Throwable Info: - // "+t.getCause().toString()); - } - - } - } - } - - public static Pair<OrePrefixes, ItemStack> getDustData(final Material aMaterial, final OrePrefixes aPrefix) { - return getDustData(aMaterial, aPrefix.mMaterialAmount); - } - - public static Pair<OrePrefixes, ItemStack> getDustData(final Material aMaterial, final long aMaterialAmount) { - ItemStack mDust = null; - OrePrefixes mPrefix = null; - - if (aMaterial == null || aMaterialAmount <= 0) { - return null; - } - if ((((aMaterialAmount % M) == 0) || (aMaterialAmount >= (M * 16)))) { - mDust = get(OrePrefixes.dust, aMaterial, aMaterialAmount / M); - mPrefix = OrePrefixes.dust; - } - if ((mDust == null) && ((((aMaterialAmount * 4) % M) == 0) || (aMaterialAmount >= (M * 8)))) { - mDust = get(OrePrefixes.dustSmall, aMaterial, (aMaterialAmount * 4) / M); - mPrefix = OrePrefixes.dustSmall; - } - if ((mDust == null) && (((aMaterialAmount * 9) >= M))) { - mDust = get(OrePrefixes.dustTiny, aMaterial, (aMaterialAmount * 9) / M); - mPrefix = OrePrefixes.dustTiny; - } - - if (mPrefix != null && mDust != null){ - Logger.WARNING("Built valid dust pair."); - return new Pair<OrePrefixes, ItemStack>(mPrefix, mDust); - } - else { - Logger.WARNING("mPrefix: "+(mPrefix!=null)); - Logger.WARNING("mDust: "+(mDust!=null)); - } - Logger.WARNING("Failed to build valid dust pair."); - return null; - } - - public static ItemStack getDust(final Material aMaterial, final OrePrefixes aPrefix) { - return aMaterial == null ? null : getDust(aMaterial, aPrefix.mMaterialAmount); - } - - public static ItemStack getDust(final Material aMaterial, final long aMaterialAmount) { - if (aMaterialAmount <= 0) { - return null; - } - ItemStack rStack = null; - if ((((aMaterialAmount % M) == 0) || (aMaterialAmount >= (M * 16)))) { - Logger.WARNING("Trying to get a Dust"); - rStack = get(OrePrefixes.dust, aMaterial, aMaterialAmount / M); - } - if ((rStack == null) && ((((aMaterialAmount * 4) % M) == 0) || (aMaterialAmount >= (M * 8)))) { - Logger.WARNING("Trying to get a Small Dust"); - rStack = get(OrePrefixes.dustSmall, aMaterial, (aMaterialAmount * 4) / M); - } - if ((rStack == null) && (((aMaterialAmount * 9) >= M))) { - Logger.WARNING("Trying to get a Tiny Dust"); - rStack = get(OrePrefixes.dustTiny, aMaterial, (aMaterialAmount * 9) / M); - } - return rStack; - } - - public static ItemStack get(final Object aName, final long aAmount) { - return get(aName, null, aAmount, true, true); - } - - public static ItemStack get(final Object aName, final ItemStack aReplacement, final long aAmount) { - return get(aName, aReplacement, aAmount, true, true); - } - - public static ItemStack get(final OrePrefixes aPrefix, final Material aMaterial, final long aAmount) { - return get(aPrefix, aMaterial, null, aAmount); - } - - public static ItemStack get(final OrePrefixes aPrefix, final Material aMaterial, final ItemStack aReplacement, - final long aAmount) { - return get(aPrefix.name()+Utils.sanitizeString(aMaterial.getLocalizedName()), aReplacement, aAmount, false, true); - } - - public static ItemStack get(final Object aName, final ItemStack aReplacement, final long aAmount, - final boolean aMentionPossibleTypos, final boolean aNoInvalidAmounts) { - if (aNoInvalidAmounts && (aAmount < 1L)) { - Logger.WARNING("Returning Null. Method: " + ReflectionUtils.getMethodName(0)); - Logger.WARNING("Called from method: " + ReflectionUtils.getMethodName(1)); - Logger.WARNING("Called from method: " + ReflectionUtils.getMethodName(2)); - Logger.WARNING("Called from method: " + ReflectionUtils.getMethodName(3)); - Logger.WARNING("Called from method: " + ReflectionUtils.getMethodName(4)); - return null; - } - if (!mNameMap.containsKey(aName.toString()) && aMentionPossibleTypos) { - Logger.WARNING("Unknown Key for Unification, Typo? " + aName); - } - return GT_Utility.copyAmount(aAmount, - new Object[] { mNameMap.get(aName.toString()), getFirstOre(aName, aAmount), aReplacement }); - } - - public static ItemStack getFirstOre(final Object aName, final long aAmount) { - if (GT_Utility.isStringInvalid(aName)) { - Logger.WARNING("Returning Null. Method: " + ReflectionUtils.getMethodName(0)); - Logger.WARNING("Called from method: " + ReflectionUtils.getMethodName(1)); - Logger.WARNING("Called from method: " + ReflectionUtils.getMethodName(2)); - Logger.WARNING("Called from method: " + ReflectionUtils.getMethodName(3)); - Logger.WARNING("Called from method: " + ReflectionUtils.getMethodName(4)); - return null; - } - final ItemStack tStack = mNameMap.get(aName.toString()); - if (GT_Utility.isStackValid(tStack)) { - Logger.WARNING("Found valid stack."); - return GT_Utility.copyAmount(aAmount, new Object[] { tStack }); - } - return GT_Utility.copyAmount(aAmount, getOres(aName).toArray()); - } - - public static ArrayList<ItemStack> getOres(final Object aOreName) { - final String aName = (aOreName == null) ? "" : aOreName.toString(); - final ArrayList<ItemStack> rList = new ArrayList<ItemStack>(); - if (GT_Utility.isStringValid(aName)) { - Logger.WARNING("Making a list of all OreDict entries for "+aOreName+"."); - if (rList.addAll(OreDictionary.getOres(aName))){ - Logger.WARNING("Added "+rList.size()+" elements to list."); - } - else { - Logger.WARNING("Failed to Add Collection from oreDictionary, forcing an entry."); - rList.add(ItemUtils.getItemStackOfAmountFromOreDict((String) aOreName, 1)); - } - } - return rList; - } - - @SuppressWarnings("unchecked") - public Map<String, ItemStack> getNameMap() { - Map<String, ItemStack> tempMap; - try { - tempMap = (Map<String, ItemStack>) FieldUtils.readStaticField(GT_OreDictUnificator.class, "sName2StackMap", - true); - if (tempMap != null) { - Logger.WARNING("Found 'sName2StackMap' in GT_OreDictUnificator.class."); - return tempMap; - } - } - catch (final IllegalAccessException e) { - e.printStackTrace(); - } - Logger.WARNING("Invalid map stored in GT_OreDictUnificator.class, unable to find sName2StackMap field."); - return null; - } - - public static ItemStack getItemStackOfAmountFromOreDictNoBroken(String oredictName, final int amount) { - - try { - - if (oredictName.contains("-") || oredictName.contains("_")) { - oredictName = Utils.sanitizeString(oredictName, new char[] {'-', '_'}); - } - else { - oredictName = Utils.sanitizeString(oredictName); - } - - // Adds a check to grab dusts using GT methodology if possible. - ItemStack returnValue = null; - if (oredictName.toLowerCase().contains("dust")) { - final String MaterialName = oredictName.toLowerCase().replace("dust", ""); - final Materials m = Materials.get(MaterialName); - if (m != null && m != Materials._NULL) { - returnValue = ItemUtils.getGregtechDust(m, amount); - if (ItemUtils.checkForInvalidItems(returnValue)) { - return returnValue; - } - } - } - if (returnValue == null) { - returnValue = getItemStackOfAmountFromOreDict(oredictName, amount); - if (ItemUtils.checkForInvalidItems(returnValue)) { - return returnValue.copy(); - } - } - return null; - } catch (final Throwable t) { - return null; - } - } - - public static ItemStack getItemStackOfAmountFromOreDict(String oredictName, final int amount) { - String mTemp = oredictName; - - // Banned Materials and replacements for GT5.8 compat. - - if (oredictName.toLowerCase().contains("ingotclay")) { - return ItemUtils.getSimpleStack(Items.clay_ball, amount); - } - - if (!CORE.MAIN_GREGTECH_5U_EXPERIMENTAL_FORK) { - if (oredictName.toLowerCase().contains("rutile")) { - mTemp = oredictName.replace("Rutile", "Titanium"); - } - if (oredictName.toLowerCase().contains("vanadiumsteel")) { - mTemp = oredictName.replace("VanadiumSteel", "StainlessSteel"); - } - } - final ArrayList<ItemStack> oreDictList = OreDictionary.getOres(mTemp); - if (!oreDictList.isEmpty()) { - final ItemStack returnValue = oreDictList.get(0).copy(); - returnValue.stackSize = amount; - return returnValue; - } - return null; - //return getItemStackOfAmountFromOreDictNoBroken(mTemp, amount); - } + public static AutoMap<Runnable> mQueuedRecyclingGenerators = new AutoMap<Runnable>(); + + public static void executeGenerators() { + if (mQueuedRecyclingGenerators.size() > 0) { + for (Runnable R : mQueuedRecyclingGenerators.values()) { + R.run(); + } + } + } + + final Material toGenerate; + public static Map<String, ItemStack> mNameMap; + + public RecipeGen_Recycling(final Material M) { + this.toGenerate = M; + if (mNameMap == null) { + mNameMap = this.getNameMap(); + } + mQueuedRecyclingGenerators.put(this); + } + + @Override + public void run() { + if (mNameMap != null) { + generateRecipes(this.toGenerate); + } + } + + public static void generateRecipes(final Material material) { + + if (material != null) Logger.WARNING("Generating Recycling recipes for " + material.getLocalizedName()); + + final OrePrefixes[] mValidPrefixesAsString = { + OrePrefixes.ingot, + OrePrefixes.ingotHot, + OrePrefixes.nugget, + OrePrefixes.plate, + OrePrefixes.plateDense, + OrePrefixes.plateDouble, + OrePrefixes.plateTriple, + OrePrefixes.plateQuadruple, + OrePrefixes.plateQuintuple, + OrePrefixes.stick, + OrePrefixes.stickLong, + OrePrefixes.bolt, + OrePrefixes.screw, + OrePrefixes.ring, + OrePrefixes.rotor, + OrePrefixes.gearGt, + OrePrefixes.gearGtSmall, + OrePrefixes.gear, + OrePrefixes.block, + OrePrefixes.cableGt01, + OrePrefixes.cableGt02, + OrePrefixes.cableGt04, + OrePrefixes.cableGt08, + OrePrefixes.cableGt12, + OrePrefixes.wireFine, + OrePrefixes.wireGt01, + OrePrefixes.wireGt02, + OrePrefixes.wireGt04, + OrePrefixes.wireGt08, + OrePrefixes.wireGt12, + OrePrefixes.wireGt16, + OrePrefixes.foil, + OrePrefixes.frameGt, + OrePrefixes.pipeHuge, + OrePrefixes.pipeLarge, + OrePrefixes.pipeMedium, + OrePrefixes.pipeSmall, + OrePrefixes.pipeTiny, + }; + + int mSlotIndex = 0; + Pair<OrePrefixes, ItemStack>[] mValidPairs = new Pair[mValidPrefixesAsString.length]; + + for (int r = 0; r < mValidPairs.length; r++) { + ItemStack temp = getItemStackOfAmountFromOreDictNoBroken( + mValidPrefixesAsString[r].name() + Utils.sanitizeString(material.getLocalizedName()), 1); + if (temp != null) { + mValidPairs[mSlotIndex++] = new Pair<OrePrefixes, ItemStack>(mValidPrefixesAsString[r], temp.copy()); + } + } + + if (mValidPairs.length > 0) { + int validCounter = 0; + Pair<OrePrefixes, ItemStack>[] temp = mValidPairs; + for (Pair<OrePrefixes, ItemStack> temp2 : mValidPairs) { + if (temp2 != null) { + Logger.WARNING("Valid: " + temp2.getValue().getDisplayName()); + validCounter++; + } + } + Pair<OrePrefixes, ItemStack> temp3[] = new Pair[validCounter]; + int temp4 = 0; + for (Pair<OrePrefixes, ItemStack> r : mValidPairs) { + if (r != null) { + temp3[temp4++] = r; + } + } + if (temp3.length > 0) { + mValidPairs = temp3.clone(); + } + } + + if (mValidPrefixesAsString.length >= 1) { + for (final Pair<OrePrefixes, ItemStack> validPrefix : mValidPairs) { + try { + + if (material == null + || validPrefix == null + || (material.getState() != MaterialState.SOLID + && material.getState() != MaterialState.LIQUID) + || validPrefix.getKey() == OrePrefixes.ingotHot) { + continue; + } + + final ItemStack tempStack = validPrefix.getValue(); + final ItemStack mDust = getDust(material, validPrefix.getKey()); + final Pair<OrePrefixes, ItemStack> mData = getDustData(material, validPrefix.getKey()); + int mFluidAmount = + (int) GT_Utility.translateMaterialToFluidAmount(validPrefix.getKey().mMaterialAmount, true); + + // Maceration + if (ItemUtils.checkForInvalidItems(tempStack)) { + // mValidItems[mSlotIndex++] = tempStack; + if ((mDust != null) && GT_ModHandler.addPulverisationRecipe(tempStack, mDust)) { + Logger.WARNING("Recycle Recipe: " + material.getLocalizedName() + " - Success - Recycle " + + tempStack.getDisplayName() + " and obtain " + mDust.getDisplayName()); + } else { + Logger.WARNING("Recycle Recipe: " + material.getLocalizedName() + " - Failed"); + if (mDust == null) { + Logger.WARNING("Invalid Dust output."); + } + } + } + + // Arc Furnace + if (ItemUtils.checkForInvalidItems(tempStack)) {} + + // Fluid Extractor + if (ItemUtils.checkForInvalidItems(tempStack)) { + // mValidItems[mSlotIndex++] = tempStack; + + int aFluidAmount = + (int) ((L * validPrefix.getKey().mMaterialAmount) / (M * tempStack.stackSize)); + int aDuration = (int) Math.max(1, (24 * validPrefix.getKey().mMaterialAmount) / M); + boolean aGenFluidExtraction = CORE.RA.addFluidExtractionRecipe( + tempStack, + material.getFluidStack(aFluidAmount), + aDuration, + material.vVoltageMultiplier); + if (aGenFluidExtraction /*(mDust != null) && CORE.RA.addFluidExtractionRecipe(tempStack, material.getFluidStack(mFluidAmount), 30, material.vVoltageMultiplier)*/) { + Logger.WARNING( + "Fluid Recycle Recipe: " + material.getLocalizedName() + " - Success - Recycle " + + tempStack.getDisplayName() + " and obtain " + aFluidAmount + "mb of " + + material.getFluidStack(1).getLocalizedName() + ". Time: " + aDuration + + ", Voltage: " + material.vVoltageMultiplier); + } else { + Logger.WARNING("Fluid Recycle Recipe: " + material.getLocalizedName() + " - Failed"); + if (mDust == null) { + Logger.WARNING("Invalid Dust output."); + } + } + } + + } catch (final Throwable t) { + t.printStackTrace(); + // Utils.LOG_WARNING("Returning Null. Throwable Info: + // "+t.getMessage()); + // Utils.LOG_WARNING("Throwable Info: "+t.toString()); + // Utils.LOG_WARNING("Throwable Info: + // "+t.getCause().toString()); + } + } + } + } + + public static Pair<OrePrefixes, ItemStack> getDustData(final Material aMaterial, final OrePrefixes aPrefix) { + return getDustData(aMaterial, aPrefix.mMaterialAmount); + } + + public static Pair<OrePrefixes, ItemStack> getDustData(final Material aMaterial, final long aMaterialAmount) { + ItemStack mDust = null; + OrePrefixes mPrefix = null; + + if (aMaterial == null || aMaterialAmount <= 0) { + return null; + } + if ((((aMaterialAmount % M) == 0) || (aMaterialAmount >= (M * 16)))) { + mDust = get(OrePrefixes.dust, aMaterial, aMaterialAmount / M); + mPrefix = OrePrefixes.dust; + } + if ((mDust == null) && ((((aMaterialAmount * 4) % M) == 0) || (aMaterialAmount >= (M * 8)))) { + mDust = get(OrePrefixes.dustSmall, aMaterial, (aMaterialAmount * 4) / M); + mPrefix = OrePrefixes.dustSmall; + } + if ((mDust == null) && (((aMaterialAmount * 9) >= M))) { + mDust = get(OrePrefixes.dustTiny, aMaterial, (aMaterialAmount * 9) / M); + mPrefix = OrePrefixes.dustTiny; + } + + if (mPrefix != null && mDust != null) { + Logger.WARNING("Built valid dust pair."); + return new Pair<OrePrefixes, ItemStack>(mPrefix, mDust); + } else { + Logger.WARNING("mPrefix: " + (mPrefix != null)); + Logger.WARNING("mDust: " + (mDust != null)); + } + Logger.WARNING("Failed to build valid dust pair."); + return null; + } + + public static ItemStack getDust(final Material aMaterial, final OrePrefixes aPrefix) { + return aMaterial == null ? null : getDust(aMaterial, aPrefix.mMaterialAmount); + } + + public static ItemStack getDust(final Material aMaterial, final long aMaterialAmount) { + if (aMaterialAmount <= 0) { + return null; + } + ItemStack rStack = null; + if ((((aMaterialAmount % M) == 0) || (aMaterialAmount >= (M * 16)))) { + Logger.WARNING("Trying to get a Dust"); + rStack = get(OrePrefixes.dust, aMaterial, aMaterialAmount / M); + } + if ((rStack == null) && ((((aMaterialAmount * 4) % M) == 0) || (aMaterialAmount >= (M * 8)))) { + Logger.WARNING("Trying to get a Small Dust"); + rStack = get(OrePrefixes.dustSmall, aMaterial, (aMaterialAmount * 4) / M); + } + if ((rStack == null) && (((aMaterialAmount * 9) >= M))) { + Logger.WARNING("Trying to get a Tiny Dust"); + rStack = get(OrePrefixes.dustTiny, aMaterial, (aMaterialAmount * 9) / M); + } + return rStack; + } + + public static ItemStack get(final Object aName, final long aAmount) { + return get(aName, null, aAmount, true, true); + } + + public static ItemStack get(final Object aName, final ItemStack aReplacement, final long aAmount) { + return get(aName, aReplacement, aAmount, true, true); + } + + public static ItemStack get(final OrePrefixes aPrefix, final Material aMaterial, final long aAmount) { + return get(aPrefix, aMaterial, null, aAmount); + } + + public static ItemStack get( + final OrePrefixes aPrefix, final Material aMaterial, final ItemStack aReplacement, final long aAmount) { + return get( + aPrefix.name() + Utils.sanitizeString(aMaterial.getLocalizedName()), + aReplacement, + aAmount, + false, + true); + } + + public static ItemStack get( + final Object aName, + final ItemStack aReplacement, + final long aAmount, + final boolean aMentionPossibleTypos, + final boolean aNoInvalidAmounts) { + if (aNoInvalidAmounts && (aAmount < 1L)) { + Logger.WARNING("Returning Null. Method: " + ReflectionUtils.getMethodName(0)); + Logger.WARNING("Called from method: " + ReflectionUtils.getMethodName(1)); + Logger.WARNING("Called from method: " + ReflectionUtils.getMethodName(2)); + Logger.WARNING("Called from method: " + ReflectionUtils.getMethodName(3)); + Logger.WARNING("Called from method: " + ReflectionUtils.getMethodName(4)); + return null; + } + if (!mNameMap.containsKey(aName.toString()) && aMentionPossibleTypos) { + Logger.WARNING("Unknown Key for Unification, Typo? " + aName); + } + return GT_Utility.copyAmount( + aAmount, new Object[] {mNameMap.get(aName.toString()), getFirstOre(aName, aAmount), aReplacement}); + } + + public static ItemStack getFirstOre(final Object aName, final long aAmount) { + if (GT_Utility.isStringInvalid(aName)) { + Logger.WARNING("Returning Null. Method: " + ReflectionUtils.getMethodName(0)); + Logger.WARNING("Called from method: " + ReflectionUtils.getMethodName(1)); + Logger.WARNING("Called from method: " + ReflectionUtils.getMethodName(2)); + Logger.WARNING("Called from method: " + ReflectionUtils.getMethodName(3)); + Logger.WARNING("Called from method: " + ReflectionUtils.getMethodName(4)); + return null; + } + final ItemStack tStack = mNameMap.get(aName.toString()); + if (GT_Utility.isStackValid(tStack)) { + Logger.WARNING("Found valid stack."); + return GT_Utility.copyAmount(aAmount, new Object[] {tStack}); + } + return GT_Utility.copyAmount(aAmount, getOres(aName).toArray()); + } + + public static ArrayList<ItemStack> getOres(final Object aOreName) { + final String aName = (aOreName == null) ? "" : aOreName.toString(); + final ArrayList<ItemStack> rList = new ArrayList<ItemStack>(); + if (GT_Utility.isStringValid(aName)) { + Logger.WARNING("Making a list of all OreDict entries for " + aOreName + "."); + if (rList.addAll(OreDictionary.getOres(aName))) { + Logger.WARNING("Added " + rList.size() + " elements to list."); + } else { + Logger.WARNING("Failed to Add Collection from oreDictionary, forcing an entry."); + rList.add(ItemUtils.getItemStackOfAmountFromOreDict((String) aOreName, 1)); + } + } + return rList; + } + + @SuppressWarnings("unchecked") + public Map<String, ItemStack> getNameMap() { + Map<String, ItemStack> tempMap; + try { + tempMap = (Map<String, ItemStack>) + FieldUtils.readStaticField(GT_OreDictUnificator.class, "sName2StackMap", true); + if (tempMap != null) { + Logger.WARNING("Found 'sName2StackMap' in GT_OreDictUnificator.class."); + return tempMap; + } + } catch (final IllegalAccessException e) { + e.printStackTrace(); + } + Logger.WARNING("Invalid map stored in GT_OreDictUnificator.class, unable to find sName2StackMap field."); + return null; + } + + public static ItemStack getItemStackOfAmountFromOreDictNoBroken(String oredictName, final int amount) { + + try { + + if (oredictName.contains("-") || oredictName.contains("_")) { + oredictName = Utils.sanitizeString(oredictName, new char[] {'-', '_'}); + } else { + oredictName = Utils.sanitizeString(oredictName); + } + + // Adds a check to grab dusts using GT methodology if possible. + ItemStack returnValue = null; + if (oredictName.toLowerCase().contains("dust")) { + final String MaterialName = oredictName.toLowerCase().replace("dust", ""); + final Materials m = Materials.get(MaterialName); + if (m != null && m != Materials._NULL) { + returnValue = ItemUtils.getGregtechDust(m, amount); + if (ItemUtils.checkForInvalidItems(returnValue)) { + return returnValue; + } + } + } + if (returnValue == null) { + returnValue = getItemStackOfAmountFromOreDict(oredictName, amount); + if (ItemUtils.checkForInvalidItems(returnValue)) { + return returnValue.copy(); + } + } + return null; + } catch (final Throwable t) { + return null; + } + } + + public static ItemStack getItemStackOfAmountFromOreDict(String oredictName, final int amount) { + String mTemp = oredictName; + + // Banned Materials and replacements for GT5.8 compat. + + if (oredictName.toLowerCase().contains("ingotclay")) { + return ItemUtils.getSimpleStack(Items.clay_ball, amount); + } + if (!CORE.MAIN_GREGTECH_5U_EXPERIMENTAL_FORK) { + if (oredictName.toLowerCase().contains("rutile")) { + mTemp = oredictName.replace("Rutile", "Titanium"); + } + if (oredictName.toLowerCase().contains("vanadiumsteel")) { + mTemp = oredictName.replace("VanadiumSteel", "StainlessSteel"); + } + } + final ArrayList<ItemStack> oreDictList = OreDictionary.getOres(mTemp); + if (!oreDictList.isEmpty()) { + final ItemStack returnValue = oreDictList.get(0).copy(); + returnValue.stackSize = amount; + return returnValue; + } + return null; + // return getItemStackOfAmountFromOreDictNoBroken(mTemp, amount); + } } diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_ShapedCrafting.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_ShapedCrafting.java index 1a6221b09e..c55cc31525 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_ShapedCrafting.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_ShapedCrafting.java @@ -1,8 +1,5 @@ package gtPlusPlus.xmod.gregtech.loaders; -import java.util.HashSet; -import java.util.Set; - import gregtech.api.util.GT_ModHandler; import gtPlusPlus.api.interfaces.RunnableWithInfo; import gtPlusPlus.api.objects.Logger; @@ -12,282 +9,369 @@ import gtPlusPlus.core.material.MaterialGenerator; import gtPlusPlus.core.recipe.common.CI; import gtPlusPlus.core.util.minecraft.ItemUtils; import gtPlusPlus.core.util.minecraft.RecipeUtils; +import java.util.HashSet; +import java.util.Set; import net.minecraft.item.ItemStack; public class RecipeGen_ShapedCrafting extends RecipeGen_Base { - public final static Set<RunnableWithInfo<Material>> mRecipeGenMap = new HashSet<RunnableWithInfo<Material>>(); - static { - MaterialGenerator.mRecipeMapsToGenerate.put(mRecipeGenMap); - } - - public RecipeGen_ShapedCrafting(final Material M){ - this.toGenerate = M; - mRecipeGenMap.add(this); - } + public static final Set<RunnableWithInfo<Material>> mRecipeGenMap = new HashSet<RunnableWithInfo<Material>>(); - @Override - public void run() { - generateRecipes(this.toGenerate); - } + static { + MaterialGenerator.mRecipeMapsToGenerate.put(mRecipeGenMap); + } - private void generateRecipes(final Material material){ - Logger.WARNING("Generating Shaped Crafting recipes for "+material.getLocalizedName()); //TODO - - if (!CORE.GTNH) { - //Nuggets - if (ItemUtils.checkForInvalidItems(material.getNugget(1)) && ItemUtils.checkForInvalidItems(material.getIngot(1))) - GT_ModHandler.addShapelessCraftingRecipe( - material.getIngot(1), - new Object[]{ - material.getNugget(1), - material.getNugget(1), - material.getNugget(1), - material.getNugget(1), - material.getNugget(1), - material.getNugget(1), - material.getNugget(1), - material.getNugget(1), - material.getNugget(1) - }); - } + public RecipeGen_ShapedCrafting(final Material M) { + this.toGenerate = M; + mRecipeGenMap.add(this); + } - //Plates + @Override + public void run() { + generateRecipes(this.toGenerate); + } - //Single Plate Shaped/Shapeless - if (ItemUtils.checkForInvalidItems(material.getPlate(1)) && ItemUtils.checkForInvalidItems(material.getIngot(1))) - if (material.getPlate(1) != null && material.getIngot(1) != null) - GT_ModHandler.addCraftingRecipe( - material.getPlate(1), - gregtech.api.util.GT_ModHandler.RecipeBits.DO_NOT_CHECK_FOR_COLLISIONS | gregtech.api.util.GT_ModHandler.RecipeBits.BUFFERED, - new Object[]{"h", "B", "I", - Character.valueOf('I'), - material.getIngot(1), - Character.valueOf('B'), - material.getIngot(1)}); + private void generateRecipes(final Material material) { + Logger.WARNING("Generating Shaped Crafting recipes for " + material.getLocalizedName()); // TODO - if (ItemUtils.checkForInvalidItems(material.getPlate(1)) && ItemUtils.checkForInvalidItems(material.getIngot(1))) - GT_ModHandler.addShapelessCraftingRecipe( - material.getPlate(1), - new Object[]{gregtech.api.enums.ToolDictNames.craftingToolForgeHammer, - material.getIngot(1), - material.getIngot(1)}); + if (!CORE.GTNH) { + // Nuggets + if (ItemUtils.checkForInvalidItems(material.getNugget(1)) + && ItemUtils.checkForInvalidItems(material.getIngot(1))) + GT_ModHandler.addShapelessCraftingRecipe(material.getIngot(1), new Object[] { + material.getNugget(1), + material.getNugget(1), + material.getNugget(1), + material.getNugget(1), + material.getNugget(1), + material.getNugget(1), + material.getNugget(1), + material.getNugget(1), + material.getNugget(1) + }); + } - //Double Plate Shaped/Shapeless - if (ItemUtils.checkForInvalidItems(material.getPlateDouble(1)) && ItemUtils.checkForInvalidItems(material.getPlate(1))) - GT_ModHandler.addCraftingRecipe( - material.getPlateDouble(1), - gregtech.api.util.GT_ModHandler.RecipeBits.DO_NOT_CHECK_FOR_COLLISIONS | gregtech.api.util.GT_ModHandler.RecipeBits.BUFFERED, - new Object[]{"I", "B", "h", - Character.valueOf('I'), - material.getPlate(1), - Character.valueOf('B'), - material.getPlate(1)}); + // Plates - if (ItemUtils.checkForInvalidItems(material.getPlateDouble(1)) && ItemUtils.checkForInvalidItems(material.getPlate(1))) - GT_ModHandler.addShapelessCraftingRecipe( - material.getPlateDouble(1), - new Object[]{gregtech.api.enums.ToolDictNames.craftingToolForgeHammer, - material.getPlate(1), - material.getPlate(1)}); + // Single Plate Shaped/Shapeless + if (ItemUtils.checkForInvalidItems(material.getPlate(1)) + && ItemUtils.checkForInvalidItems(material.getIngot(1))) + if (material.getPlate(1) != null && material.getIngot(1) != null) + GT_ModHandler.addCraftingRecipe( + material.getPlate(1), + gregtech.api.util.GT_ModHandler.RecipeBits.DO_NOT_CHECK_FOR_COLLISIONS + | gregtech.api.util.GT_ModHandler.RecipeBits.BUFFERED, + new Object[] { + "h", + "B", + "I", + Character.valueOf('I'), + material.getIngot(1), + Character.valueOf('B'), + material.getIngot(1) + }); - //Ring Recipe - if (!material.isRadioactive && ItemUtils.checkForInvalidItems(material.getRing(1)) && ItemUtils.checkForInvalidItems(material.getRod(1))) { - if (CORE.GTNH){ - if (RecipeUtils.addShapedRecipe( - "craftingToolHardHammer", null, null, - "craftingToolFile", material.getRod(1), null, - null, null, null, - material.getRing(1))){ - Logger.WARNING("GT:NH Ring Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Logger.WARNING("GT:NH Ring Recipe: "+material.getLocalizedName()+" - Failed"); - } - } - else { - if (RecipeUtils.addShapedRecipe( - "craftingToolHardHammer", null, null, - null, material.getRod(1), null, - null, null, null, - material.getRing(1))){ - Logger.WARNING("Ring Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Logger.WARNING("Ring Recipe: "+material.getLocalizedName()+" - Failed"); - } - } - } + if (ItemUtils.checkForInvalidItems(material.getPlate(1)) + && ItemUtils.checkForInvalidItems(material.getIngot(1))) + GT_ModHandler.addShapelessCraftingRecipe(material.getPlate(1), new Object[] { + gregtech.api.enums.ToolDictNames.craftingToolForgeHammer, material.getIngot(1), material.getIngot(1) + }); + // Double Plate Shaped/Shapeless + if (ItemUtils.checkForInvalidItems(material.getPlateDouble(1)) + && ItemUtils.checkForInvalidItems(material.getPlate(1))) + GT_ModHandler.addCraftingRecipe( + material.getPlateDouble(1), + gregtech.api.util.GT_ModHandler.RecipeBits.DO_NOT_CHECK_FOR_COLLISIONS + | gregtech.api.util.GT_ModHandler.RecipeBits.BUFFERED, + new Object[] { + "I", + "B", + "h", + Character.valueOf('I'), + material.getPlate(1), + Character.valueOf('B'), + material.getPlate(1) + }); - //Framebox Recipe - if (!material.isRadioactive && ItemUtils.checkForInvalidItems(material.getFrameBox(1)) && ItemUtils.checkForInvalidItems(material.getRod(1))) { - final ItemStack stackStick = material.getRod(1); - if (RecipeUtils.addShapedRecipe( - stackStick, stackStick, stackStick, - stackStick, "craftingToolWrench", stackStick, - stackStick, stackStick, stackStick, - material.getFrameBox(2))){ - Logger.WARNING("Framebox Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Logger.WARNING("Framebox Recipe: "+material.getLocalizedName()+" - Failed"); - } - } + if (ItemUtils.checkForInvalidItems(material.getPlateDouble(1)) + && ItemUtils.checkForInvalidItems(material.getPlate(1))) + GT_ModHandler.addShapelessCraftingRecipe(material.getPlateDouble(1), new Object[] { + gregtech.api.enums.ToolDictNames.craftingToolForgeHammer, material.getPlate(1), material.getPlate(1) + }); + // Ring Recipe + if (!material.isRadioactive + && ItemUtils.checkForInvalidItems(material.getRing(1)) + && ItemUtils.checkForInvalidItems(material.getRod(1))) { + if (CORE.GTNH) { + if (RecipeUtils.addShapedRecipe( + "craftingToolHardHammer", + null, + null, + "craftingToolFile", + material.getRod(1), + null, + null, + null, + null, + material.getRing(1))) { + Logger.WARNING("GT:NH Ring Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING("GT:NH Ring Recipe: " + material.getLocalizedName() + " - Failed"); + } + } else { + if (RecipeUtils.addShapedRecipe( + "craftingToolHardHammer", + null, + null, + null, + material.getRod(1), + null, + null, + null, + null, + material.getRing(1))) { + Logger.WARNING("Ring Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING("Ring Recipe: " + material.getLocalizedName() + " - Failed"); + } + } + } - /*final int tVoltageMultiplier = material.getMeltingPointK() >= 1600 ? 60 : 15; + // Framebox Recipe + if (!material.isRadioactive + && ItemUtils.checkForInvalidItems(material.getFrameBox(1)) + && ItemUtils.checkForInvalidItems(material.getRod(1))) { + final ItemStack stackStick = material.getRod(1); + if (RecipeUtils.addShapedRecipe( + stackStick, + stackStick, + stackStick, + stackStick, + "craftingToolWrench", + stackStick, + stackStick, + stackStick, + stackStick, + material.getFrameBox(2))) { + Logger.WARNING("Framebox Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING("Framebox Recipe: " + material.getLocalizedName() + " - Failed"); + } + } + /*final int tVoltageMultiplier = material.getMeltingPointK() >= 1600 ? 60 : 15; - //Add a shapeless recipe for each dust this way - Compat mode. - ItemStack[] inputStacks = material.getMaterialComposites(); - ItemStack outputStacks = material.getDust(material.smallestStackSizeWhenProcessing); - if (inputStacks.length > 0 && tVoltageMultiplier == 15){ - Utils.LOG_WARNING(ItemUtils.getArrayStackNames(inputStacks)); - long[] inputStackSize = material.vSmallestRatio; - if (inputStackSize != null){ - for (short x=0;x<inputStacks.length;x++){ - if (inputStacks[x] != null && inputStackSize[x] != 0) - inputStacks[x].stackSize = (int) inputStackSize[x]; - } - Utils.LOG_WARNING(ItemUtils.getArrayStackNames(inputStacks)); - if (RecipeUtils.buildShapelessRecipe( - outputStacks, - inputStacks - )){ - Utils.LOG_WARNING("Shapeless Crafting Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Utils.LOG_WARNING("Shapeless Crafting Recipe: "+material.getLocalizedName()+" - Failed"); - } - } - } */ + //Add a shapeless recipe for each dust this way - Compat mode. + ItemStack[] inputStacks = material.getMaterialComposites(); + ItemStack outputStacks = material.getDust(material.smallestStackSizeWhenProcessing); + if (inputStacks.length > 0 && tVoltageMultiplier == 15){ + Utils.LOG_WARNING(ItemUtils.getArrayStackNames(inputStacks)); + long[] inputStackSize = material.vSmallestRatio; + if (inputStackSize != null){ + for (short x=0;x<inputStacks.length;x++){ + if (inputStacks[x] != null && inputStackSize[x] != 0) + inputStacks[x].stackSize = (int) inputStackSize[x]; + } + Utils.LOG_WARNING(ItemUtils.getArrayStackNames(inputStacks)); + if (RecipeUtils.buildShapelessRecipe( + outputStacks, + inputStacks + )){ + Utils.LOG_WARNING("Shapeless Crafting Recipe: "+material.getLocalizedName()+" - Success"); + } + else { + Utils.LOG_WARNING("Shapeless Crafting Recipe: "+material.getLocalizedName()+" - Failed"); + } + } + } */ - //Shaped Recipe - Bolts - if (!material.isRadioactive && ItemUtils.checkForInvalidItems(material.getBolt(1)) && ItemUtils.checkForInvalidItems(material.getRod(1))) { - if (RecipeUtils.addShapedRecipe( - "craftingToolSaw", null, null, - null, material.getRod(1), null, - null, null, null, - material.getBolt(2))){ - Logger.WARNING("Bolt Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Logger.WARNING("Bolt Recipe: "+material.getLocalizedName()+" - Failed"); - } - } - - //Shaped Recipe - Fine Wire - if (!material.isRadioactive && ItemUtils.checkForInvalidItems(material.getFoil(1)) && ItemUtils.checkForInvalidItems(material.getFineWire(1))) { - if (RecipeUtils.addShapedRecipe( - material.getFoil(1), CI.craftingToolWireCutter, null, - null, null, null, - null, null, null, - material.getFineWire(1))){ - Logger.WARNING("Fine Wire Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Logger.WARNING("Fine Wire Recipe: "+material.getLocalizedName()+" - Failed"); - } - } - - //Shaped Recipe - Foil - if (ItemUtils.checkForInvalidItems(material.getFoil(1)) && ItemUtils.checkForInvalidItems(material.getPlate(1))) { - if (RecipeUtils.addShapedRecipe( - CI.craftingToolHammer_Hard, material.getPlate(1), null, - null, null, null, - null, null, null, - material.getFoil(2))){ - Logger.WARNING("Foil Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Logger.WARNING("Foil Recipe: "+material.getLocalizedName()+" - Failed"); - } - } + // Shaped Recipe - Bolts + if (!material.isRadioactive + && ItemUtils.checkForInvalidItems(material.getBolt(1)) + && ItemUtils.checkForInvalidItems(material.getRod(1))) { + if (RecipeUtils.addShapedRecipe( + "craftingToolSaw", + null, + null, + null, + material.getRod(1), + null, + null, + null, + null, + material.getBolt(2))) { + Logger.WARNING("Bolt Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING("Bolt Recipe: " + material.getLocalizedName() + " - Failed"); + } + } + // Shaped Recipe - Fine Wire + if (!material.isRadioactive + && ItemUtils.checkForInvalidItems(material.getFoil(1)) + && ItemUtils.checkForInvalidItems(material.getFineWire(1))) { + if (RecipeUtils.addShapedRecipe( + material.getFoil(1), + CI.craftingToolWireCutter, + null, + null, + null, + null, + null, + null, + null, + material.getFineWire(1))) { + Logger.WARNING("Fine Wire Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING("Fine Wire Recipe: " + material.getLocalizedName() + " - Failed"); + } + } - //Shaped Recipe - Ingot to Rod - if (ItemUtils.checkForInvalidItems(material.getRod(1)) && ItemUtils.checkForInvalidItems(material.getIngot(1))) - if (RecipeUtils.addShapedRecipe( - "craftingToolFile", null, null, - null, material.getIngot(1), null, - null, null, null, - material.getRod(1))){ - Logger.WARNING("Rod Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Logger.WARNING("Rod Recipe: "+material.getLocalizedName()+" - Failed"); - } + // Shaped Recipe - Foil + if (ItemUtils.checkForInvalidItems(material.getFoil(1)) + && ItemUtils.checkForInvalidItems(material.getPlate(1))) { + if (RecipeUtils.addShapedRecipe( + CI.craftingToolHammer_Hard, + material.getPlate(1), + null, + null, + null, + null, + null, + null, + null, + material.getFoil(2))) { + Logger.WARNING("Foil Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING("Foil Recipe: " + material.getLocalizedName() + " - Failed"); + } + } + // Shaped Recipe - Ingot to Rod + if (ItemUtils.checkForInvalidItems(material.getRod(1)) && ItemUtils.checkForInvalidItems(material.getIngot(1))) + if (RecipeUtils.addShapedRecipe( + "craftingToolFile", + null, + null, + null, + material.getIngot(1), + null, + null, + null, + null, + material.getRod(1))) { + Logger.WARNING("Rod Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING("Rod Recipe: " + material.getLocalizedName() + " - Failed"); + } - //Shaped Recipe - Long Rod to two smalls - if (ItemUtils.checkForInvalidItems(material.getRod(1)) && ItemUtils.checkForInvalidItems(material.getLongRod(1))) - if (RecipeUtils.addShapedRecipe( - "craftingToolSaw", null, null, - material.getLongRod(1), null, null, - null, null, null, - material.getRod(2))){ - Logger.WARNING("Rod Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Logger.WARNING("Rod Recipe: "+material.getLocalizedName()+" - Failed"); - } + // Shaped Recipe - Long Rod to two smalls + if (ItemUtils.checkForInvalidItems(material.getRod(1)) + && ItemUtils.checkForInvalidItems(material.getLongRod(1))) + if (RecipeUtils.addShapedRecipe( + "craftingToolSaw", + null, + null, + material.getLongRod(1), + null, + null, + null, + null, + null, + material.getRod(2))) { + Logger.WARNING("Rod Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING("Rod Recipe: " + material.getLocalizedName() + " - Failed"); + } - //Two small to long rod - if (ItemUtils.checkForInvalidItems(material.getLongRod(1)) && ItemUtils.checkForInvalidItems(material.getRod(1))) - if (RecipeUtils.addShapedRecipe( - material.getRod(1), "craftingToolHardHammer", material.getRod(1), - null, null, null, - null, null, null, - material.getLongRod(1))){ - Logger.WARNING("Long Rod Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Logger.WARNING("Long Rod Recipe: "+material.getLocalizedName()+" - Failed"); - } + // Two small to long rod + if (ItemUtils.checkForInvalidItems(material.getLongRod(1)) + && ItemUtils.checkForInvalidItems(material.getRod(1))) + if (RecipeUtils.addShapedRecipe( + material.getRod(1), + "craftingToolHardHammer", + material.getRod(1), + null, + null, + null, + null, + null, + null, + material.getLongRod(1))) { + Logger.WARNING("Long Rod Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING("Long Rod Recipe: " + material.getLocalizedName() + " - Failed"); + } - //Rotor Recipe - if (!material.isRadioactive && ItemUtils.checkForInvalidItems(material.getRotor(1)) && ItemUtils.checkForInvalidItems(material.getRing(1)) && !material.isRadioactive && ItemUtils.checkForInvalidItems(material.getPlate(1)) && ItemUtils.checkForInvalidItems(material.getScrew(1))) { - if (RecipeUtils.addShapedRecipe( - material.getPlate(1), "craftingToolHardHammer", material.getPlate(1), - material.getScrew(1), material.getRing(1), "craftingToolFile", - material.getPlate(1), "craftingToolScrewdriver", material.getPlate(1), - material.getRotor(1))){ - Logger.WARNING("Rotor Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Logger.WARNING("Rotor Recipe: "+material.getLocalizedName()+" - Failed"); - } - } + // Rotor Recipe + if (!material.isRadioactive + && ItemUtils.checkForInvalidItems(material.getRotor(1)) + && ItemUtils.checkForInvalidItems(material.getRing(1)) + && !material.isRadioactive + && ItemUtils.checkForInvalidItems(material.getPlate(1)) + && ItemUtils.checkForInvalidItems(material.getScrew(1))) { + if (RecipeUtils.addShapedRecipe( + material.getPlate(1), + "craftingToolHardHammer", + material.getPlate(1), + material.getScrew(1), + material.getRing(1), + "craftingToolFile", + material.getPlate(1), + "craftingToolScrewdriver", + material.getPlate(1), + material.getRotor(1))) { + Logger.WARNING("Rotor Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING("Rotor Recipe: " + material.getLocalizedName() + " - Failed"); + } + } - //Gear Recipe - if (!material.isRadioactive && ItemUtils.checkForInvalidItems(material.getGear(1)) && ItemUtils.checkForInvalidItems(material.getPlate(1)) && ItemUtils.checkForInvalidItems(material.getRod(1))) { - if (RecipeUtils.addShapedRecipe( - material.getRod(1), material.getPlate(1), material.getRod(1), - material.getPlate(1), "craftingToolWrench", material.getPlate(1), - material.getRod(1), material.getPlate(1), material.getRod(1), - material.getGear(1))){ - Logger.WARNING("Gear Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Logger.WARNING("Gear Recipe: "+material.getLocalizedName()+" - Failed"); - } - } + // Gear Recipe + if (!material.isRadioactive + && ItemUtils.checkForInvalidItems(material.getGear(1)) + && ItemUtils.checkForInvalidItems(material.getPlate(1)) + && ItemUtils.checkForInvalidItems(material.getRod(1))) { + if (RecipeUtils.addShapedRecipe( + material.getRod(1), + material.getPlate(1), + material.getRod(1), + material.getPlate(1), + "craftingToolWrench", + material.getPlate(1), + material.getRod(1), + material.getPlate(1), + material.getRod(1), + material.getGear(1))) { + Logger.WARNING("Gear Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING("Gear Recipe: " + material.getLocalizedName() + " - Failed"); + } + } - //Screws - if (!material.isRadioactive && ItemUtils.checkForInvalidItems(material.getScrew(1)) && ItemUtils.checkForInvalidItems(material.getBolt(1))) { - if (RecipeUtils.addShapedRecipe( - "craftingToolFile", material.getBolt(1), null, - material.getBolt(1), null, null, - null, null, null, - material.getScrew(1))){ - Logger.WARNING("Screw Recipe: "+material.getLocalizedName()+" - Success"); - } - else { - Logger.WARNING("Screw Recipe: "+material.getLocalizedName()+" - Failed"); - } - } - } + // Screws + if (!material.isRadioactive + && ItemUtils.checkForInvalidItems(material.getScrew(1)) + && ItemUtils.checkForInvalidItems(material.getBolt(1))) { + if (RecipeUtils.addShapedRecipe( + "craftingToolFile", + material.getBolt(1), + null, + material.getBolt(1), + null, + null, + null, + null, + null, + material.getScrew(1))) { + Logger.WARNING("Screw Recipe: " + material.getLocalizedName() + " - Success"); + } else { + Logger.WARNING("Screw Recipe: " + material.getLocalizedName() + " - Failed"); + } + } + } } diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/misc/AddCustomMachineToPA.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/misc/AddCustomMachineToPA.java index ab4203bca6..5a8306abee 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/misc/AddCustomMachineToPA.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/misc/AddCustomMachineToPA.java @@ -2,15 +2,12 @@ package gtPlusPlus.xmod.gregtech.loaders.misc; import gregtech.api.util.GTPP_Recipe; import gregtech.api.util.GT_ProcessingArray_Manager; -import gregtech.api.util.GT_Recipe.GT_Recipe_Map; -import gtPlusPlus.api.objects.Logger; public class AddCustomMachineToPA { - public static void register() { - - // Simple Washers - GT_ProcessingArray_Manager.addRecipeMapToPA("simplewasher.01", GTPP_Recipe.GTPP_Recipe_Map.sSimpleWasherRecipes); - - } + public static void register() { + // Simple Washers + GT_ProcessingArray_Manager.addRecipeMapToPA( + "simplewasher.01", GTPP_Recipe.GTPP_Recipe_Map.sSimpleWasherRecipes); + } } diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/misc/AssLineAchievements.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/misc/AssLineAchievements.java index 351a4cc546..01683e8067 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/misc/AssLineAchievements.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/misc/AssLineAchievements.java @@ -1,7 +1,5 @@ package gtPlusPlus.xmod.gregtech.loaders.misc; -import java.util.concurrent.ConcurrentHashMap; - import cpw.mods.fml.common.eventhandler.SubscribeEvent; import gregtech.GT_Mod; import gregtech.api.util.GT_Log; @@ -11,6 +9,7 @@ import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.util.Utils; import gtPlusPlus.core.util.minecraft.ItemUtils; import gtPlusPlus.xmod.gregtech.common.StaticFields59; +import java.util.concurrent.ConcurrentHashMap; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.stats.Achievement; @@ -21,160 +20,162 @@ import net.minecraftforge.event.entity.player.EntityItemPickupEvent; public class AssLineAchievements { - public static int assReg = -1; - public static ConcurrentHashMap<String, Achievement> mAchievementMap; - public static ConcurrentHashMap<String, Boolean> mIssuedAchievementMap; - public static int adjX = 5; - public static int adjY = 9; - private static boolean active = true; - - public AssLineAchievements() { - Logger.INFO(active ? "Loading custom achievement page for Assembly Line recipes." - : "Achievements are disabled."); - Utils.registerEvent(this); - } - - private static boolean ready = false; - private static int recipeTotal = 0; - private static int recipeCount = 0; - private static void init() { - if (!ready) { - active = GT_Mod.gregtechproxy.mAchievements; - try { - recipeTotal = ((GT_Recipe.GT_Recipe_Map) StaticFields59.mAssLineVisualMapNEI.get(null)).mRecipeList.size(); - } catch (IllegalArgumentException | IllegalAccessException e) { - recipeTotal = 0; - } - mAchievementMap = new ConcurrentHashMap<String, Achievement>(); - mIssuedAchievementMap = new ConcurrentHashMap<String, Boolean>(); - ready = true; - } - - } - - public static void registerAchievements() { - if (active && mAchievementMap.size() > 0) { - AchievementPage.registerAchievementPage(new AchievementPage("GT Assembly Line", - (Achievement[]) mAchievementMap.values().toArray(new Achievement[mAchievementMap.size()]))); - } - else if (active) { - Logger.INFO("Unable to register custom achievement page for Assembly Line recipes."); - } - } - - public static Achievement registerAssAchievement(GT_Recipe recipe) { - init(); - String aSafeUnlocalName; - // Debugging - if (recipe == null) { - Logger.INFO( - "Someone tried to register an achievement for an invalid recipe. Please report this to Alkalus."); - return null; - } - if (recipe.getOutput(0) == null) { - Logger.INFO( - "Someone tried to register an achievement for a recipe with null output. Please report this to Alkalus."); - return null; - } - ItemStack aStack = recipe.getOutput(0); - try { - aSafeUnlocalName = aStack.getUnlocalizedName(); - } catch (Throwable t) { - aSafeUnlocalName = ItemUtils.getUnlocalizedItemName(aStack); - } - - Achievement aYouDidSomethingInGT; - if (mAchievementMap.get(aSafeUnlocalName) == null) { - assReg++; - recipeCount++; - aYouDidSomethingInGT = registerAchievement(aSafeUnlocalName, -(11 + assReg % 5), ((assReg) / 5) - 8, - recipe.getOutput(0), AchievementList.openInventory, false); - } - else { - aYouDidSomethingInGT = null; - } - if (recipeCount >= recipeTotal) { - Logger.INFO("Critical mass achieved. ["+recipeCount+"]"); - registerAchievements(); - } - - return aYouDidSomethingInGT; - } - - public static Achievement registerAchievement(String textId, int x, int y, ItemStack icon, - Achievement requirement, boolean special) { - if (!GT_Mod.gregtechproxy.mAchievements) { - return null; - } - Achievement achievement = new Achievement(textId, textId, adjX + x, adjY + y, icon, requirement); - if (special) { - achievement.setSpecial(); - } - achievement.registerStat(); - if (CORE.DEVENV) { - GT_Log.out.println("achievement." + textId + "="); - GT_Log.out.println("achievement." + textId + ".desc="); - } - mAchievementMap.put(textId, achievement); - return achievement; - } - - public static void issueAchievement(EntityPlayer entityplayer, String textId) { - if (entityplayer == null || !GT_Mod.gregtechproxy.mAchievements) { - return; - } - - entityplayer.triggerAchievement((StatBase) getAchievement(textId)); - } - - public static Achievement getAchievement(String textId) { - if (mAchievementMap.containsKey(textId)) { - Logger.INFO("Found Achivement: "+textId); - return (Achievement) mAchievementMap.get(textId); - } - return null; - } - - @SubscribeEvent - public void onItemPickup(EntityItemPickupEvent event) { - EntityPlayer player = event.entityPlayer; - ItemStack stack = event.item.getEntityItem(); - String aPickupUnlocalSafe = ItemUtils.getUnlocalizedItemName(stack); - if (player == null || stack == null) { - return; - } - - if (StaticFields59.sAssemblylineVisualRecipes == null) { - return; - } - - Logger.INFO("Trying to check for achievements"); - // Debug scanner unlocks all AL recipes in creative - if (player.capabilities.isCreativeMode && aPickupUnlocalSafe.equals("gt.metaitem.01.32761")) { - for (GT_Recipe recipe : StaticFields59.sAssemblylineVisualRecipes.mRecipeList) { - issueAchievement(player, recipe.getOutput(0).getUnlocalizedName()); - recipe.mHidden = false; - } - } - for (GT_Recipe recipe : StaticFields59.sAssemblylineVisualRecipes.mRecipeList) { - - String aSafeUnlocalName; - if (recipe.getOutput(0) == null) { - Logger.INFO( - "Someone tried to register an achievement for a recipe with null output. Please report this to Alkalus."); - continue; - } - ItemStack aStack = recipe.getOutput(0); - aSafeUnlocalName = ItemUtils.getUnlocalizedItemName(aStack); - if (aSafeUnlocalName.equals(aPickupUnlocalSafe)) { - issueAchievement(player, aSafeUnlocalName); - recipe.mHidden = false; - Logger.INFO("FOUND: " + aSafeUnlocalName + " | " + aPickupUnlocalSafe); - } - else { - //Logger.INFO(aSafeUnlocalName + " | " + aPickupUnlocalSafe); - } - } - } + public static int assReg = -1; + public static ConcurrentHashMap<String, Achievement> mAchievementMap; + public static ConcurrentHashMap<String, Boolean> mIssuedAchievementMap; + public static int adjX = 5; + public static int adjY = 9; + private static boolean active = true; + + public AssLineAchievements() { + Logger.INFO( + active ? "Loading custom achievement page for Assembly Line recipes." : "Achievements are disabled."); + Utils.registerEvent(this); + } + + private static boolean ready = false; + private static int recipeTotal = 0; + private static int recipeCount = 0; + + private static void init() { + if (!ready) { + active = GT_Mod.gregtechproxy.mAchievements; + try { + recipeTotal = + ((GT_Recipe.GT_Recipe_Map) StaticFields59.mAssLineVisualMapNEI.get(null)).mRecipeList.size(); + } catch (IllegalArgumentException | IllegalAccessException e) { + recipeTotal = 0; + } + mAchievementMap = new ConcurrentHashMap<String, Achievement>(); + mIssuedAchievementMap = new ConcurrentHashMap<String, Boolean>(); + ready = true; + } + } + + public static void registerAchievements() { + if (active && mAchievementMap.size() > 0) { + AchievementPage.registerAchievementPage(new AchievementPage("GT Assembly Line", (Achievement[]) + mAchievementMap.values().toArray(new Achievement[mAchievementMap.size()]))); + } else if (active) { + Logger.INFO("Unable to register custom achievement page for Assembly Line recipes."); + } + } + + public static Achievement registerAssAchievement(GT_Recipe recipe) { + init(); + String aSafeUnlocalName; + // Debugging + if (recipe == null) { + Logger.INFO( + "Someone tried to register an achievement for an invalid recipe. Please report this to Alkalus."); + return null; + } + if (recipe.getOutput(0) == null) { + Logger.INFO( + "Someone tried to register an achievement for a recipe with null output. Please report this to Alkalus."); + return null; + } + ItemStack aStack = recipe.getOutput(0); + try { + aSafeUnlocalName = aStack.getUnlocalizedName(); + } catch (Throwable t) { + aSafeUnlocalName = ItemUtils.getUnlocalizedItemName(aStack); + } + + Achievement aYouDidSomethingInGT; + if (mAchievementMap.get(aSafeUnlocalName) == null) { + assReg++; + recipeCount++; + aYouDidSomethingInGT = registerAchievement( + aSafeUnlocalName, + -(11 + assReg % 5), + ((assReg) / 5) - 8, + recipe.getOutput(0), + AchievementList.openInventory, + false); + } else { + aYouDidSomethingInGT = null; + } + if (recipeCount >= recipeTotal) { + Logger.INFO("Critical mass achieved. [" + recipeCount + "]"); + registerAchievements(); + } + + return aYouDidSomethingInGT; + } + + public static Achievement registerAchievement( + String textId, int x, int y, ItemStack icon, Achievement requirement, boolean special) { + if (!GT_Mod.gregtechproxy.mAchievements) { + return null; + } + Achievement achievement = new Achievement(textId, textId, adjX + x, adjY + y, icon, requirement); + if (special) { + achievement.setSpecial(); + } + achievement.registerStat(); + if (CORE.DEVENV) { + GT_Log.out.println("achievement." + textId + "="); + GT_Log.out.println("achievement." + textId + ".desc="); + } + mAchievementMap.put(textId, achievement); + return achievement; + } + + public static void issueAchievement(EntityPlayer entityplayer, String textId) { + if (entityplayer == null || !GT_Mod.gregtechproxy.mAchievements) { + return; + } + + entityplayer.triggerAchievement((StatBase) getAchievement(textId)); + } + + public static Achievement getAchievement(String textId) { + if (mAchievementMap.containsKey(textId)) { + Logger.INFO("Found Achivement: " + textId); + return (Achievement) mAchievementMap.get(textId); + } + return null; + } + + @SubscribeEvent + public void onItemPickup(EntityItemPickupEvent event) { + EntityPlayer player = event.entityPlayer; + ItemStack stack = event.item.getEntityItem(); + String aPickupUnlocalSafe = ItemUtils.getUnlocalizedItemName(stack); + if (player == null || stack == null) { + return; + } + + if (StaticFields59.sAssemblylineVisualRecipes == null) { + return; + } + + Logger.INFO("Trying to check for achievements"); + // Debug scanner unlocks all AL recipes in creative + if (player.capabilities.isCreativeMode && aPickupUnlocalSafe.equals("gt.metaitem.01.32761")) { + for (GT_Recipe recipe : StaticFields59.sAssemblylineVisualRecipes.mRecipeList) { + issueAchievement(player, recipe.getOutput(0).getUnlocalizedName()); + recipe.mHidden = false; + } + } + for (GT_Recipe recipe : StaticFields59.sAssemblylineVisualRecipes.mRecipeList) { + String aSafeUnlocalName; + if (recipe.getOutput(0) == null) { + Logger.INFO( + "Someone tried to register an achievement for a recipe with null output. Please report this to Alkalus."); + continue; + } + ItemStack aStack = recipe.getOutput(0); + aSafeUnlocalName = ItemUtils.getUnlocalizedItemName(aStack); + if (aSafeUnlocalName.equals(aPickupUnlocalSafe)) { + issueAchievement(player, aSafeUnlocalName); + recipe.mHidden = false; + Logger.INFO("FOUND: " + aSafeUnlocalName + " | " + aPickupUnlocalSafe); + } else { + // Logger.INFO(aSafeUnlocalName + " | " + aPickupUnlocalSafe); + } + } + } } diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/recipe/RecipeLoader_AlgaeFarm.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/recipe/RecipeLoader_AlgaeFarm.java index add5b512d4..3fec531a12 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/recipe/RecipeLoader_AlgaeFarm.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/recipe/RecipeLoader_AlgaeFarm.java @@ -1,211 +1,188 @@ package gtPlusPlus.xmod.gregtech.loaders.recipe; -import java.util.HashMap; - import gregtech.api.enums.GT_Values; -import gregtech.api.util.GT_Recipe; import gregtech.api.util.GTPP_Recipe; +import gregtech.api.util.GT_Recipe; import gtPlusPlus.api.objects.Logger; import gtPlusPlus.api.objects.data.AutoMap; import gtPlusPlus.api.objects.data.WeightedCollection; import gtPlusPlus.core.item.chemistry.AgriculturalChem; import gtPlusPlus.core.util.math.MathUtils; import gtPlusPlus.core.util.minecraft.ItemUtils; +import java.util.HashMap; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; public class RecipeLoader_AlgaeFarm { - private static final HashMap<Integer, AutoMap<GT_Recipe>> mRecipeCache = new HashMap<Integer, AutoMap<GT_Recipe>>(); - private static final HashMap<Integer, AutoMap<GT_Recipe>> mRecipeCompostCache = new HashMap<Integer, AutoMap<GT_Recipe>>(); - - public static void generateRecipes() { - for (int i=0;i<10;i++) { - getTieredRecipeFromCache(i, false); - } - for (int i=0;i<10;i++) { - getTieredRecipeFromCache(i, true); - } - } - - public static GT_Recipe getTieredRecipeFromCache(int aTier, boolean aCompost) { - HashMap<Integer, AutoMap<GT_Recipe>> aMap = aCompost ? mRecipeCompostCache : mRecipeCache; - String aComp = aCompost ? "(Compost)" : ""; - - AutoMap<GT_Recipe> aTemp = aMap.get(aTier); - if (aTemp == null || aTemp.isEmpty()) { - aTemp = new AutoMap<GT_Recipe>(); - aMap.put(aTier, aTemp); - Logger.INFO("Tier "+aTier+aComp+" had no recipes, initialising new map."); - } - if (aTemp.size() < 500) { - Logger.INFO("Tier "+aTier+aComp+" has less than 500 recipes, generating "+(500 - aTemp.size())+"."); - for (int i=aTemp.size();i<500;i++) { - aTemp.put(generateBaseRecipe(aCompost, aTier)); - } - } - int aIndex = MathUtils.randInt(0, aTemp.isEmpty() ? 1 : aTemp.size()); - Logger.INFO("Using recipe with index of "+aIndex+". "+aComp); - return aTemp.get(aIndex); - } - - private static GT_Recipe generateBaseRecipe(boolean aUsingCompost, int aTier) { - - // Type Safety - if (aTier < 0) { - return null; - } - - WeightedCollection<Float> aOutputTimeMulti = new WeightedCollection<Float>(); - for (int i=100;i> 0;i--) { - float aValue = 0; - if (i < 10) { - aValue = 3f; - } - else if (i < 20) { - aValue = 2f; - } - else { - aValue = 1f; - } - aOutputTimeMulti.put(i, aValue); - } - - final int[] aDurations = new int[] { - 2000, - 1800, - 1600, - 1400, - 1200, - 1000, - 512, - 256, - 128, - 64, - 32, - 16, - 8, - 4, - 2, - 1 - }; - - ItemStack[] aInputs = new ItemStack[] {}; - - if (aUsingCompost) { - // Make it use 4 compost per tier if we have some available - // Compost consumption maxes out at 1 stack per cycle - ItemStack aCompost = ItemUtils.getSimpleStack(AgriculturalChem.mCompost, aTier > 1 ? (int) Math.min(64, Math.pow(2, aTier-1)) : 1); - aInputs = new ItemStack[] {aCompost}; - // Boost Tier by one if using compost so it gets a speed boost - aTier++; - } - - // We set these elsewhere - ItemStack[] aOutputs = getOutputsForTier(aTier); - - GT_Recipe tRecipe = new GTPP_Recipe( - false, - aInputs, - aOutputs, - (Object) null, - new int[] {}, - new FluidStack[] {GT_Values.NF}, - new FluidStack[] {GT_Values.NF}, - (int) (aDurations[aTier] * aOutputTimeMulti.get() / 2), // Time - 0, - 0); - - tRecipe.mSpecialValue = tRecipe.hashCode(); - - return tRecipe; - } - - private static ItemStack[] getOutputsForTier(int aTier) { - - // Create an Automap to dump contents into - AutoMap<ItemStack> aOutputMap = new AutoMap<ItemStack>(); - - - // Add loot relevant to tier and also add any from lower tiers. - - if (aTier >= 0) { - aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mAlgaeBiosmass, 2)); - aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mAlgaeBiosmass, 4)); - if (MathUtils.randInt(0, 10) > 9) { - aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mGreenAlgaeBiosmass, 2)); - } - } - - if (aTier >= 1) { - aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mAlgaeBiosmass, 4)); - aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mGreenAlgaeBiosmass, 2)); - if (MathUtils.randInt(0, 10) > 9) { - aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mGreenAlgaeBiosmass, 4)); - } - } - if (aTier >= 2) { - aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mGreenAlgaeBiosmass, 2)); - aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mGreenAlgaeBiosmass, 3)); - if (MathUtils.randInt(0, 10) > 9) { - aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mGreenAlgaeBiosmass, 8)); - } - } - if (aTier >= 3) { - aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mGreenAlgaeBiosmass, 4)); - aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mBrownAlgaeBiosmass, 1)); - if (MathUtils.randInt(0, 10) > 9) { - aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mBrownAlgaeBiosmass, 4)); - } - } - if (aTier >= 4) { - aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mBrownAlgaeBiosmass, 2)); - aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mBrownAlgaeBiosmass, 3)); - if (MathUtils.randInt(0, 10) > 9) { - aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mGoldenBrownAlgaeBiosmass, 4)); - } - } - if (aTier >= 5) { - aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mBrownAlgaeBiosmass, 4)); - aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mGoldenBrownAlgaeBiosmass, 2)); - if (MathUtils.randInt(0, 10) > 9) { - aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mRedAlgaeBiosmass, 4)); - } - } - // Tier 6 is Highest for outputs - if (aTier >= 6) { - aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mGoldenBrownAlgaeBiosmass, 4)); - aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mRedAlgaeBiosmass, 2)); - if (MathUtils.randInt(0, 10) > 9) { - aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mRedAlgaeBiosmass, 8)); - } - } - - // Iterate a special loop at higher tiers to provide more Red/Gold Algae. - for (int i2=0;i2<20;i2++) { - if (aTier >= (6+i2)) { - int aMulti = i2 + 1; - aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mGreenAlgaeBiosmass, aMulti * 4)); - aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mBrownAlgaeBiosmass, aMulti * 3)); - aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mGoldenBrownAlgaeBiosmass, aMulti * 2)); - aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mRedAlgaeBiosmass, aMulti)); - } - else { - i2 = 20; - } - } - - - - - // Map the AutoMap contents to an Itemstack Array. - ItemStack[] aOutputs = new ItemStack[aOutputMap.size()]; - for (int i=0;i<aOutputMap.size();i++) { - aOutputs[i] = aOutputMap.get(i); - } - - // Return filled ItemStack Array. - return aOutputs; - } - + private static final HashMap<Integer, AutoMap<GT_Recipe>> mRecipeCache = new HashMap<Integer, AutoMap<GT_Recipe>>(); + private static final HashMap<Integer, AutoMap<GT_Recipe>> mRecipeCompostCache = + new HashMap<Integer, AutoMap<GT_Recipe>>(); + + public static void generateRecipes() { + for (int i = 0; i < 10; i++) { + getTieredRecipeFromCache(i, false); + } + for (int i = 0; i < 10; i++) { + getTieredRecipeFromCache(i, true); + } + } + + public static GT_Recipe getTieredRecipeFromCache(int aTier, boolean aCompost) { + HashMap<Integer, AutoMap<GT_Recipe>> aMap = aCompost ? mRecipeCompostCache : mRecipeCache; + String aComp = aCompost ? "(Compost)" : ""; + + AutoMap<GT_Recipe> aTemp = aMap.get(aTier); + if (aTemp == null || aTemp.isEmpty()) { + aTemp = new AutoMap<GT_Recipe>(); + aMap.put(aTier, aTemp); + Logger.INFO("Tier " + aTier + aComp + " had no recipes, initialising new map."); + } + if (aTemp.size() < 500) { + Logger.INFO( + "Tier " + aTier + aComp + " has less than 500 recipes, generating " + (500 - aTemp.size()) + "."); + for (int i = aTemp.size(); i < 500; i++) { + aTemp.put(generateBaseRecipe(aCompost, aTier)); + } + } + int aIndex = MathUtils.randInt(0, aTemp.isEmpty() ? 1 : aTemp.size()); + Logger.INFO("Using recipe with index of " + aIndex + ". " + aComp); + return aTemp.get(aIndex); + } + + private static GT_Recipe generateBaseRecipe(boolean aUsingCompost, int aTier) { + + // Type Safety + if (aTier < 0) { + return null; + } + + WeightedCollection<Float> aOutputTimeMulti = new WeightedCollection<Float>(); + for (int i = 100; i > 0; i--) { + float aValue = 0; + if (i < 10) { + aValue = 3f; + } else if (i < 20) { + aValue = 2f; + } else { + aValue = 1f; + } + aOutputTimeMulti.put(i, aValue); + } + + final int[] aDurations = new int[] {2000, 1800, 1600, 1400, 1200, 1000, 512, 256, 128, 64, 32, 16, 8, 4, 2, 1}; + + ItemStack[] aInputs = new ItemStack[] {}; + + if (aUsingCompost) { + // Make it use 4 compost per tier if we have some available + // Compost consumption maxes out at 1 stack per cycle + ItemStack aCompost = ItemUtils.getSimpleStack( + AgriculturalChem.mCompost, aTier > 1 ? (int) Math.min(64, Math.pow(2, aTier - 1)) : 1); + aInputs = new ItemStack[] {aCompost}; + // Boost Tier by one if using compost so it gets a speed boost + aTier++; + } + + // We set these elsewhere + ItemStack[] aOutputs = getOutputsForTier(aTier); + + GT_Recipe tRecipe = new GTPP_Recipe( + false, + aInputs, + aOutputs, + (Object) null, + new int[] {}, + new FluidStack[] {GT_Values.NF}, + new FluidStack[] {GT_Values.NF}, + (int) (aDurations[aTier] * aOutputTimeMulti.get() / 2), // Time + 0, + 0); + + tRecipe.mSpecialValue = tRecipe.hashCode(); + + return tRecipe; + } + + private static ItemStack[] getOutputsForTier(int aTier) { + + // Create an Automap to dump contents into + AutoMap<ItemStack> aOutputMap = new AutoMap<ItemStack>(); + + // Add loot relevant to tier and also add any from lower tiers. + + if (aTier >= 0) { + aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mAlgaeBiosmass, 2)); + aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mAlgaeBiosmass, 4)); + if (MathUtils.randInt(0, 10) > 9) { + aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mGreenAlgaeBiosmass, 2)); + } + } + + if (aTier >= 1) { + aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mAlgaeBiosmass, 4)); + aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mGreenAlgaeBiosmass, 2)); + if (MathUtils.randInt(0, 10) > 9) { + aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mGreenAlgaeBiosmass, 4)); + } + } + if (aTier >= 2) { + aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mGreenAlgaeBiosmass, 2)); + aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mGreenAlgaeBiosmass, 3)); + if (MathUtils.randInt(0, 10) > 9) { + aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mGreenAlgaeBiosmass, 8)); + } + } + if (aTier >= 3) { + aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mGreenAlgaeBiosmass, 4)); + aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mBrownAlgaeBiosmass, 1)); + if (MathUtils.randInt(0, 10) > 9) { + aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mBrownAlgaeBiosmass, 4)); + } + } + if (aTier >= 4) { + aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mBrownAlgaeBiosmass, 2)); + aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mBrownAlgaeBiosmass, 3)); + if (MathUtils.randInt(0, 10) > 9) { + aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mGoldenBrownAlgaeBiosmass, 4)); + } + } + if (aTier >= 5) { + aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mBrownAlgaeBiosmass, 4)); + aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mGoldenBrownAlgaeBiosmass, 2)); + if (MathUtils.randInt(0, 10) > 9) { + aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mRedAlgaeBiosmass, 4)); + } + } + // Tier 6 is Highest for outputs + if (aTier >= 6) { + aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mGoldenBrownAlgaeBiosmass, 4)); + aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mRedAlgaeBiosmass, 2)); + if (MathUtils.randInt(0, 10) > 9) { + aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mRedAlgaeBiosmass, 8)); + } + } + + // Iterate a special loop at higher tiers to provide more Red/Gold Algae. + for (int i2 = 0; i2 < 20; i2++) { + if (aTier >= (6 + i2)) { + int aMulti = i2 + 1; + aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mGreenAlgaeBiosmass, aMulti * 4)); + aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mBrownAlgaeBiosmass, aMulti * 3)); + aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mGoldenBrownAlgaeBiosmass, aMulti * 2)); + aOutputMap.put(ItemUtils.getSimpleStack(AgriculturalChem.mRedAlgaeBiosmass, aMulti)); + } else { + i2 = 20; + } + } + + // Map the AutoMap contents to an Itemstack Array. + ItemStack[] aOutputs = new ItemStack[aOutputMap.size()]; + for (int i = 0; i < aOutputMap.size(); i++) { + aOutputs[i] = aOutputMap.get(i); + } + + // Return filled ItemStack Array. + return aOutputs; + } } diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/recipe/RecipeLoader_GTNH.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/recipe/RecipeLoader_GTNH.java index 0197142e96..fa13b1d093 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/recipe/RecipeLoader_GTNH.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/recipe/RecipeLoader_GTNH.java @@ -11,12 +11,34 @@ import net.minecraftforge.fluids.FluidStack; public class RecipeLoader_GTNH { - public static void generate() { - GT_Values.RA.addFluidSolidifierRecipe(ItemList.Shape_Mold_Ball.get(0L), new FluidStack(FluidRegistry.getFluid("ender"), 250), new ItemStack(Items.ender_pearl, 1, 0), 100, 30); - //MK4 - GT_Values.RA.addFusionReactorRecipe(Materials.Plutonium241.getMolten(144), Materials.Helium.getGas(1000), ELEMENT.getInstance().CURIUM.getFluidStack(144), 96, 98304, 500000000); - GT_Values.RA.addFusionReactorRecipe(ELEMENT.getInstance().CURIUM.getFluidStack(144), Materials.Helium.getPlasma(144), ELEMENT.getInstance().CALIFORNIUM.getFluidStack(144), 128, 196608, 750000000); - GT_Values.RA.addFusionReactorRecipe(Materials.Plutonium241.getMolten(144), Materials.Calcium.getPlasma(144), Materials.Flerovium.getMolten(144), 160, 196608, 1000000000); - } - + public static void generate() { + GT_Values.RA.addFluidSolidifierRecipe( + ItemList.Shape_Mold_Ball.get(0L), + new FluidStack(FluidRegistry.getFluid("ender"), 250), + new ItemStack(Items.ender_pearl, 1, 0), + 100, + 30); + // MK4 + GT_Values.RA.addFusionReactorRecipe( + Materials.Plutonium241.getMolten(144), + Materials.Helium.getGas(1000), + ELEMENT.getInstance().CURIUM.getFluidStack(144), + 96, + 98304, + 500000000); + GT_Values.RA.addFusionReactorRecipe( + ELEMENT.getInstance().CURIUM.getFluidStack(144), + Materials.Helium.getPlasma(144), + ELEMENT.getInstance().CALIFORNIUM.getFluidStack(144), + 128, + 196608, + 750000000); + GT_Values.RA.addFusionReactorRecipe( + Materials.Plutonium241.getMolten(144), + Materials.Calcium.getPlasma(144), + Materials.Flerovium.getMolten(144), + 160, + 196608, + 1000000000); + } } diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/recipe/RecipeLoader_GlueLine.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/recipe/RecipeLoader_GlueLine.java index ad047fdb13..a3bfd0806a 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/recipe/RecipeLoader_GlueLine.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/recipe/RecipeLoader_GlueLine.java @@ -40,157 +40,110 @@ public class RecipeLoader_GlueLine { glueUsageRecipes(); } - - private static void chemicalPlantRecipes() { - //CO + C3H6O2 = C4H6O3 + // CO + C3H6O2 = C4H6O3 CORE.RA.addChemicalPlantRecipe( - new ItemStack[] { - CI.getNumberedCircuit(17), - ItemUtils.getSimpleStack(GenericChem.mBlueCatalyst, 0) - }, - new FluidStack[] { - FluidUtils.getFluidStack("carbonmonoxide", 1000), - FluidUtils.getFluidStack("methylacetate", 1000), - }, - new ItemStack[] { - - }, + new ItemStack[] {CI.getNumberedCircuit(17), ItemUtils.getSimpleStack(GenericChem.mBlueCatalyst, 0)}, new FluidStack[] { - MISC_MATERIALS.ACETIC_ANHYDRIDE.getFluidStack(1000) + FluidUtils.getFluidStack("carbonmonoxide", 1000), FluidUtils.getFluidStack("methylacetate", 1000), }, - 10*20, + new ItemStack[] {}, + new FluidStack[] {MISC_MATERIALS.ACETIC_ANHYDRIDE.getFluidStack(1000)}, + 10 * 20, 500, 3); CORE.RA.addChemicalPlantRecipe( - new ItemStack[] { - CI.getNumberedCircuit(18) - }, + new ItemStack[] {CI.getNumberedCircuit(18)}, new FluidStack[] { - FluidUtils.getFluidStack("aceticacid", 1000), - FluidUtils.getFluidStack("chlorine", 1000), - MISC_MATERIALS.ACETIC_ANHYDRIDE.getFluidStack(1000) - }, - new ItemStack[] { - + FluidUtils.getFluidStack("aceticacid", 1000), + FluidUtils.getFluidStack("chlorine", 1000), + MISC_MATERIALS.ACETIC_ANHYDRIDE.getFluidStack(1000) }, + new ItemStack[] {}, new FluidStack[] { - MISC_MATERIALS.CHLOROACETIC_MIXTURE.getFluidStack(1000), - MISC_MATERIALS.ACETIC_ANHYDRIDE.getFluidStack(950) + MISC_MATERIALS.CHLOROACETIC_MIXTURE.getFluidStack(1000), + MISC_MATERIALS.ACETIC_ANHYDRIDE.getFluidStack(950) }, - 150*20, + 150 * 20, 1000, 4); - //Na2CO3 + NaCN + C2H3O2Cl + 2HCl = C3H3NO2 + 3NaCl + CO2 + H2O + // Na2CO3 + NaCN + C2H3O2Cl + 2HCl = C3H3NO2 + 3NaCl + CO2 + H2O CORE.RA.addChemicalPlantRecipe( new ItemStack[] { - CI.getNumberedCircuit(19), - ItemUtils.getSimpleStack(AgriculturalChem.mSodiumCarbonate, 6), - MISC_MATERIALS.SODIUM_CYANIDE.getDust(3) + CI.getNumberedCircuit(19), + ItemUtils.getSimpleStack(AgriculturalChem.mSodiumCarbonate, 6), + MISC_MATERIALS.SODIUM_CYANIDE.getDust(3) }, new FluidStack[] { - MISC_MATERIALS.CHLOROACETIC_ACID.getFluidStack(1000), - FluidUtils.getFluidStack("hydrochloricacid_gt5u", 2000) + MISC_MATERIALS.CHLOROACETIC_ACID.getFluidStack(1000), + FluidUtils.getFluidStack("hydrochloricacid_gt5u", 2000) }, - new ItemStack[] { - MISC_MATERIALS.CYANOACETIC_ACID.getDust(9), - Materials.Salt.getDust(6) - }, - new FluidStack[] { - Materials.CarbonDioxide.getGas(1000), - GT_ModHandler.getWater(1000) - }, - 20*20, + new ItemStack[] {MISC_MATERIALS.CYANOACETIC_ACID.getDust(9), Materials.Salt.getDust(6)}, + new FluidStack[] {Materials.CarbonDioxide.getGas(1000), GT_ModHandler.getWater(1000)}, + 20 * 20, 1000, 4); - //CuSO4 + 5C3H3NO2 + 5C2H6O = CuSO4·5(H2O) + 5C5H7NO2 + // CuSO4 + 5C3H3NO2 + 5C2H6O = CuSO4·5(H2O) + 5C5H7NO2 CORE.RA.addChemicalPlantRecipe( new ItemStack[] { - CI.getNumberedCircuit(20), - ItemUtils.getSimpleStack(GenericChem.mSolidAcidCatalyst, 0), - MISC_MATERIALS.COPPER_SULFATE.getDust(6), - MISC_MATERIALS.CYANOACETIC_ACID.getDust(45) - }, - new FluidStack[] { - Materials.Ethanol.getFluid(5000) - }, - new ItemStack[] { - MISC_MATERIALS.COPPER_SULFATE_HYDRATED.getDust(11) - }, - new FluidStack[] { - MISC_MATERIALS.ETHYL_CYANOACETATE.getFluidStack(5000) - }, - 500*20, + CI.getNumberedCircuit(20), + ItemUtils.getSimpleStack(GenericChem.mSolidAcidCatalyst, 0), + MISC_MATERIALS.COPPER_SULFATE.getDust(6), + MISC_MATERIALS.CYANOACETIC_ACID.getDust(45) + }, + new FluidStack[] {Materials.Ethanol.getFluid(5000)}, + new ItemStack[] {MISC_MATERIALS.COPPER_SULFATE_HYDRATED.getDust(11)}, + new FluidStack[] {MISC_MATERIALS.ETHYL_CYANOACETATE.getFluidStack(5000)}, + 500 * 20, 6000, 5); - //C3H3NO2 + C2H6O = C5H7NO2 + H2O + // C3H3NO2 + C2H6O = C5H7NO2 + H2O CORE.RA.addChemicalPlantRecipe( - new ItemStack[] { - CI.getNumberedCircuit(21), - MISC_MATERIALS.CYANOACETIC_ACID.getDust(9) - }, - new FluidStack[] { - Materials.Ethanol.getFluid(1000) - }, - new ItemStack[] { - - }, - new FluidStack[] { - MISC_MATERIALS.ETHYL_CYANOACETATE.getFluidStack(1000) - }, - 1000*20, + new ItemStack[] {CI.getNumberedCircuit(21), MISC_MATERIALS.CYANOACETIC_ACID.getDust(9)}, + new FluidStack[] {Materials.Ethanol.getFluid(1000)}, + new ItemStack[] {}, + new FluidStack[] {MISC_MATERIALS.ETHYL_CYANOACETATE.getFluidStack(1000)}, + 1000 * 20, 6000, 5); - BioRecipes.mFormaldehyde = FluidUtils.getFluidStack("fluid.formaldehyde", 1).getFluid(); + BioRecipes.mFormaldehyde = + FluidUtils.getFluidStack("fluid.formaldehyde", 1).getFluid(); CORE.RA.addChemicalPlantRecipe( - new ItemStack[] { - CI.getNumberedCircuit(22), - ItemUtils.getSimpleStack(GenericChem.mSolidAcidCatalyst, 0) - }, - new FluidStack[] { - MISC_MATERIALS.ETHYL_CYANOACETATE.getFluidStack(100), - FluidUtils.getFluidStack(BioRecipes.mFormaldehyde, 100) - }, - new ItemStack[] { + new ItemStack[] {CI.getNumberedCircuit(22), ItemUtils.getSimpleStack(GenericChem.mSolidAcidCatalyst, 0) }, new FluidStack[] { - MISC_MATERIALS.CYANOACRYLATE_POLYMER.getFluidStack(100), - FluidUtils.getWater(1000) + MISC_MATERIALS.ETHYL_CYANOACETATE.getFluidStack(100), + FluidUtils.getFluidStack(BioRecipes.mFormaldehyde, 100) }, - 10*20, + new ItemStack[] {}, + new FluidStack[] {MISC_MATERIALS.CYANOACRYLATE_POLYMER.getFluidStack(100), FluidUtils.getWater(1000)}, + 10 * 20, 8000, 5); - //CH4 + NH3 + 3O = HCN + 3H2O + // CH4 + NH3 + 3O = HCN + 3H2O CORE.RA.addChemicalPlantRecipe( - new ItemStack[] { - CI.getNumberedCircuit(23), - ItemUtils.getSimpleStack(GenericChem.mPinkCatalyst, 0) - }, + new ItemStack[] {CI.getNumberedCircuit(23), ItemUtils.getSimpleStack(GenericChem.mPinkCatalyst, 0)}, new FluidStack[] { - FluidUtils.getFluidStack("methane", 2000), - FluidUtils.getFluidStack("ammonia", 2000), - FluidUtils.getFluidStack("oxygen", 6000) - }, - new ItemStack[] { + FluidUtils.getFluidStack("methane", 2000), + FluidUtils.getFluidStack("ammonia", 2000), + FluidUtils.getFluidStack("oxygen", 6000) }, - new FluidStack[] { - MISC_MATERIALS.HYDROGEN_CYANIDE.getFluidStack(2000), - FluidUtils.getWater(6000) - }, - 10*20, + new ItemStack[] {}, + new FluidStack[] {MISC_MATERIALS.HYDROGEN_CYANIDE.getFluidStack(2000), FluidUtils.getWater(6000)}, + 10 * 20, 500, 3); } private static void chemicalReactorRecipes() { - //NaOH + HCN = NaCN + H2O + // NaOH + HCN = NaCN + H2O GT_Values.RA.addChemicalRecipe( CI.getNumberedCircuit(17), ItemUtils.getItemStackOfAmountFromOreDict("dustSodiumHydroxide", 3), @@ -199,7 +152,7 @@ public class RecipeLoader_GlueLine { MISC_MATERIALS.SODIUM_CYANIDE.getDust(3), 10 * 20); - //CaCO3 + 2HCl = CaCl2 + CO2 + H2O + // CaCO3 + 2HCl = CaCl2 + CO2 + H2O if (LoadedMods.BartWorks) { GT_Values.RA.addChemicalRecipe( CI.getNumberedCircuit(18), @@ -208,8 +161,7 @@ public class RecipeLoader_GlueLine { Materials.CarbonDioxide.getGas(1000), ItemUtils.getItemStackFromFQRN("bartworks:gt.bwMetaGenerateddust:63", 3), 5 * 20); - } - else { + } else { GT_Values.RA.addChemicalRecipe( CI.getNumberedCircuit(18), ItemUtils.getSimpleStack(ModItems.dustCalciumCarbonate, 5), @@ -219,8 +171,8 @@ public class RecipeLoader_GlueLine { 5 * 20); } - //Cu + 2H2SO4 = CuSO4 + SO2 + 2H2O - //SO2 + 2H2O -> diluted sulfuric acid + // Cu + 2H2SO4 = CuSO4 + SO2 + 2H2O + // SO2 + 2H2O -> diluted sulfuric acid GT_Values.RA.addChemicalRecipe( CI.getNumberedCircuit(19), ItemUtils.getItemStackOfAmountFromOreDict("dustCopper", 1), @@ -232,16 +184,14 @@ public class RecipeLoader_GlueLine { private static void dehydratorRecipes() { CORE.RA.addDehydratorRecipe( - new ItemStack[]{ - MISC_MATERIALS.COPPER_SULFATE_HYDRATED.getDust(11), + new ItemStack[] { + MISC_MATERIALS.COPPER_SULFATE_HYDRATED.getDust(11), }, null, GT_ModHandler.getWater(5000), - new ItemStack[]{ - MISC_MATERIALS.COPPER_SULFATE.getDust(6) - }, - new int[]{10000, 10000, 10000}, - 300*20, + new ItemStack[] {MISC_MATERIALS.COPPER_SULFATE.getDust(6)}, + new int[] {10000, 10000, 10000}, + 300 * 20, 10); } @@ -249,9 +199,9 @@ public class RecipeLoader_GlueLine { GT_Values.RA.addDistillationTowerRecipe( MISC_MATERIALS.CHLOROACETIC_MIXTURE.getFluidStack(1000), new FluidStack[] { - MISC_MATERIALS.CHLOROACETIC_ACID.getFluidStack(100), - MISC_MATERIALS.DICHLOROACETIC_ACID.getFluidStack(450), - MISC_MATERIALS.TRICHLOROACETIC_ACID.getFluidStack(450) + MISC_MATERIALS.CHLOROACETIC_ACID.getFluidStack(100), + MISC_MATERIALS.DICHLOROACETIC_ACID.getFluidStack(450), + MISC_MATERIALS.TRICHLOROACETIC_ACID.getFluidStack(450) }, null, 4 * 20, @@ -271,7 +221,7 @@ public class RecipeLoader_GlueLine { null, null, null, - new int[]{10000, 10000, 10000}, + new int[] {10000, 10000, 10000}, 20 * 30, 120); } @@ -285,7 +235,6 @@ public class RecipeLoader_GlueLine { MISC_MATERIALS.ETHYL_CYANOACRYLATE.getFluidStack(100), 30 * 30, 500); - } private static void mixerRecipes() { @@ -316,86 +265,79 @@ public class RecipeLoader_GlueLine { // Braintech Tape recipe, PBI and superglue make 16 tape at once GT_Values.RA.addAssemblerRecipe( new ItemStack[] { - GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Polybenzimidazole, 1L), - GT_ModHandler.getIC2Item("carbonMesh", 1L), - CI.getNumberedCircuit(10) + GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Polybenzimidazole, 1L), + GT_ModHandler.getIC2Item("carbonMesh", 1L), + CI.getNumberedCircuit(10) }, MISC_MATERIALS.ETHYL_CYANOACRYLATE.getFluidStack(100), ItemList.Duct_Tape.get(16L), 120, - 30 - ); + 30); - //Maintenance Hatch recipe, using Braintech Tape + // Maintenance Hatch recipe, using Braintech Tape GT_Values.RA.addAssemblerRecipe( - new ItemStack[] { - ItemList.Hull_LV.get(1), - ItemList.Duct_Tape.get(1), - CI.getNumberedCircuit(1) - }, + new ItemStack[] {ItemList.Hull_LV.get(1), ItemList.Duct_Tape.get(1), CI.getNumberedCircuit(1)}, MISC_MATERIALS.ETHYL_CYANOACRYLATE.getFluidStack(100), ItemList.Hatch_Maintenance.get(1), 120, - 30 - ); + 30); // Graphene recipes from later wafer tiers, using superglue instead of the bronze age glue GT_Values.RA.addAssemblerRecipe( new ItemStack[] { - ItemUtils.getItemStackOfAmountFromOreDict("dustGraphite", 64), - ItemList.Circuit_Silicon_Wafer4.get(2L), - CI.getNumberedCircuit(2) + ItemUtils.getItemStackOfAmountFromOreDict("dustGraphite", 64), + ItemList.Circuit_Silicon_Wafer4.get(2L), + CI.getNumberedCircuit(2) }, MISC_MATERIALS.ETHYL_CYANOACRYLATE.getFluidStack(500), ItemUtils.getItemStackOfAmountFromOreDict("dustGraphene", 64), 400, - 30720 - ); + 30720); GT_Values.RA.addAssemblerRecipe( new ItemStack[] { - ItemUtils.getItemStackOfAmountFromOreDict("dustGraphite", 64), - ItemList.Circuit_Silicon_Wafer5.get(1L), - CI.getNumberedCircuit(2) + ItemUtils.getItemStackOfAmountFromOreDict("dustGraphite", 64), + ItemList.Circuit_Silicon_Wafer5.get(1L), + CI.getNumberedCircuit(2) }, MISC_MATERIALS.ETHYL_CYANOACRYLATE.getFluidStack(250), ItemUtils.getItemStackOfAmountFromOreDict("dustGraphene", 64), 80, - 122880 - ); + 122880); GT_Values.RA.addMixerRecipe( GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Sulfur, 1L), GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Lithium, 1L), GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Wood, 4L), - GT_Values.NI, GT_Values.NI, GT_Utility.getIntegratedCircuit(1), + GT_Values.NI, + GT_Values.NI, + GT_Utility.getIntegratedCircuit(1), MISC_MATERIALS.ETHYL_CYANOACRYLATE.getFluidStack(100), null, ItemList.SFMixture.get(32), 1600, - 16 - ); + 16); GT_Values.RA.addMixerRecipe( ItemList.GelledToluene.get(1), GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Aluminium, 1L), GT_OreDictUnificator.get(OrePrefixes.dustTiny, Materials.Polybenzimidazole, 1L), - GT_Values.NI, GT_Values.NI, GT_Utility.getIntegratedCircuit(1), + GT_Values.NI, + GT_Values.NI, + GT_Utility.getIntegratedCircuit(1), MISC_MATERIALS.ETHYL_CYANOACRYLATE.getFluidStack(100), null, ItemList.SFMixture.get(64), 1600, - 16 - ); + 16); GT_Values.RA.addAssemblerRecipe( - GT_OreDictUnificator.get(OrePrefixes.foil, Materials.PolyvinylChloride,8), + GT_OreDictUnificator.get(OrePrefixes.foil, Materials.PolyvinylChloride, 8), GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Paper, 32), MISC_MATERIALS.ETHYL_CYANOACRYLATE.getFluidStack(200), - new ItemStack(Items.book,64,0), + new ItemStack(Items.book, 64, 0), 32, - 8 - ); + 8); if (LoadedMods.TecTech) { GT_Values.RA.addAssemblerRecipe( @@ -404,8 +346,7 @@ public class RecipeLoader_GlueLine { MISC_MATERIALS.ETHYL_CYANOACRYLATE.getFluidStack(144), ItemUtils.getItemStackFromFQRN("gregtech:gt.metaitem.01:32505", 1), 300, - 7680 - ); + 7680); GT_Values.RA.addAssemblerRecipe( GT_OreDictUnificator.get(OrePrefixes.cableGt01, Materials.NaquadahAlloy, 2), @@ -413,8 +354,7 @@ public class RecipeLoader_GlueLine { MISC_MATERIALS.ETHYL_CYANOACRYLATE.getFluidStack(288), ItemUtils.getItemStackFromFQRN("gregtech:gt.metaitem.01:32506", 1), 200, - 30720 - ); + 30720); GT_Values.RA.addAssemblerRecipe( GT_OreDictUnificator.get(OrePrefixes.cableGt01, Materials.ElectrumFlux, 2), @@ -422,8 +362,7 @@ public class RecipeLoader_GlueLine { MISC_MATERIALS.ETHYL_CYANOACRYLATE.getFluidStack(576), ItemUtils.getItemStackFromFQRN("gregtech:gt.metaitem.01:32507", 1), 300, - 122880 - ); + 122880); GT_Values.RA.addAssemblerRecipe( GT_OreDictUnificator.get(OrePrefixes.cableGt02, Materials.ElectrumFlux, 2), @@ -431,8 +370,7 @@ public class RecipeLoader_GlueLine { MISC_MATERIALS.ETHYL_CYANOACRYLATE.getFluidStack(1152), ItemUtils.getItemStackFromFQRN("gregtech:gt.metaitem.01:32561", 1), 100, - 491520 - ); + 491520); GT_Values.RA.addAssemblerRecipe( GT_OreDictUnificator.get(OrePrefixes.cableGt04, Materials.ElectrumFlux, 2), @@ -440,8 +378,7 @@ public class RecipeLoader_GlueLine { MISC_MATERIALS.ETHYL_CYANOACRYLATE.getFluidStack(2304), ItemUtils.getItemStackFromFQRN("gregtech:gt.metaitem.01:32562", 1), 200, - 1966080 - ); + 1966080); GT_Values.RA.addAssemblerRecipe( GT_OreDictUnificator.get(OrePrefixes.cableGt08, Materials.ElectrumFlux, 2), @@ -449,8 +386,7 @@ public class RecipeLoader_GlueLine { MISC_MATERIALS.ETHYL_CYANOACRYLATE.getFluidStack(4608), ItemUtils.getItemStackFromFQRN("gregtech:gt.metaitem.01:32563", 1), 300, - 1966080 - ); + 1966080); GT_Values.RA.addAssemblerRecipe( GT_OreDictUnificator.get(OrePrefixes.wireGt16, Materials.SuperconductorUHV, 2), @@ -458,8 +394,7 @@ public class RecipeLoader_GlueLine { MISC_MATERIALS.ETHYL_CYANOACRYLATE.getFluidStack(9216), ItemUtils.getItemStackFromFQRN("gregtech:gt.metaitem.01:32564", 1), 600, - 1966080 - ); + 1966080); GT_Values.RA.addAssemblerRecipe( GT_OreDictUnificator.get(OrePrefixes.wireGt16, Materials.SuperconductorUHV, 2), @@ -467,22 +402,20 @@ public class RecipeLoader_GlueLine { MISC_MATERIALS.ETHYL_CYANOACRYLATE.getFluidStack(18432), ItemUtils.getItemStackFromFQRN("gregtech:gt.metaitem.01:32565", 1), 1200, - 1966080 - ); + 1966080); } if (LoadedMods.DreamCraft && LoadedMods.GalacticraftCore) { GT_Values.RA.addAssemblerRecipe( - new ItemStack[]{ - ItemUtils.getItemStackFromFQRN("GalacticraftMars:item.itemBasicAsteroids:7", 1), - GT_OreDictUnificator.get(OrePrefixes.foil, Materials.Titanium, 8), - ItemUtils.getItemStackFromFQRN("dreamcraft:item.TungstenString", 8), - CI.getNumberedCircuit(1) + new ItemStack[] { + ItemUtils.getItemStackFromFQRN("GalacticraftMars:item.itemBasicAsteroids:7", 1), + GT_OreDictUnificator.get(OrePrefixes.foil, Materials.Titanium, 8), + ItemUtils.getItemStackFromFQRN("dreamcraft:item.TungstenString", 8), + CI.getNumberedCircuit(1) }, MISC_MATERIALS.ETHYL_CYANOACRYLATE.getFluidStack(576), ItemUtils.getItemStackFromFQRN("GalaxySpace:item.ThermalClothT2", 1), 600, - 1024 - ); + 1024); } } } diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/recipe/RecipeLoader_LFTR.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/recipe/RecipeLoader_LFTR.java index de4f7fa49a..0ecc965cb8 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/recipe/RecipeLoader_LFTR.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/recipe/RecipeLoader_LFTR.java @@ -2,7 +2,6 @@ package gtPlusPlus.xmod.gregtech.loaders.recipe; import gregtech.api.enums.Materials; import gregtech.api.util.GTPP_Recipe; -import gregtech.api.util.GT_Recipe; import gregtech.api.util.GasSpargingRecipeMap; import gtPlusPlus.api.objects.data.AutoMap; import gtPlusPlus.core.material.ELEMENT; @@ -12,158 +11,144 @@ import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; -public class RecipeLoader_LFTR { +public class RecipeLoader_LFTR { - private static AutoMap<Fluid> mNobleGases; - private static AutoMap<Fluid> mFluorideGases; - private static AutoMap<Fluid> mSpargeGases; + private static AutoMap<Fluid> mNobleGases; + private static AutoMap<Fluid> mFluorideGases; + private static AutoMap<Fluid> mSpargeGases; - private static void configureSparging() { - if (mSpargeGases == null) { - mSpargeGases = new AutoMap<Fluid>(); - mSpargeGases.add(Materials.Helium.getGas(1).getFluid()); - mSpargeGases.add(Materials.Fluorine.getGas(1).getFluid()); - } - if (mNobleGases == null) { - mNobleGases = new AutoMap<Fluid>(); - mNobleGases.add(mSpargeGases.get(0)); - mNobleGases.add(ELEMENT.getInstance().XENON.getFluid()); - mNobleGases.add(ELEMENT.getInstance().NEON.getFluid()); - mNobleGases.add(ELEMENT.getInstance().ARGON.getFluid()); - mNobleGases.add(ELEMENT.getInstance().KRYPTON.getFluid()); - mNobleGases.add(ELEMENT.getInstance().RADON.getFluid()); - } - if (mFluorideGases == null) { - mFluorideGases = new AutoMap<Fluid>(); - mFluorideGases.add(mSpargeGases.get(1)); - mFluorideGases.add(FLUORIDES.LITHIUM_FLUORIDE.getFluid()); - mFluorideGases.add(FLUORIDES.NEPTUNIUM_HEXAFLUORIDE.getFluid()); - mFluorideGases.add(FLUORIDES.TECHNETIUM_HEXAFLUORIDE.getFluid()); - mFluorideGases.add(FLUORIDES.SELENIUM_HEXAFLUORIDE.getFluid()); - mFluorideGases.add(FLUORIDES.THORIUM_TETRAFLUORIDE.getFluid()); - } - } + private static void configureSparging() { + if (mSpargeGases == null) { + mSpargeGases = new AutoMap<Fluid>(); + mSpargeGases.add(Materials.Helium.getGas(1).getFluid()); + mSpargeGases.add(Materials.Fluorine.getGas(1).getFluid()); + } + if (mNobleGases == null) { + mNobleGases = new AutoMap<Fluid>(); + mNobleGases.add(mSpargeGases.get(0)); + mNobleGases.add(ELEMENT.getInstance().XENON.getFluid()); + mNobleGases.add(ELEMENT.getInstance().NEON.getFluid()); + mNobleGases.add(ELEMENT.getInstance().ARGON.getFluid()); + mNobleGases.add(ELEMENT.getInstance().KRYPTON.getFluid()); + mNobleGases.add(ELEMENT.getInstance().RADON.getFluid()); + } + if (mFluorideGases == null) { + mFluorideGases = new AutoMap<Fluid>(); + mFluorideGases.add(mSpargeGases.get(1)); + mFluorideGases.add(FLUORIDES.LITHIUM_FLUORIDE.getFluid()); + mFluorideGases.add(FLUORIDES.NEPTUNIUM_HEXAFLUORIDE.getFluid()); + mFluorideGases.add(FLUORIDES.TECHNETIUM_HEXAFLUORIDE.getFluid()); + mFluorideGases.add(FLUORIDES.SELENIUM_HEXAFLUORIDE.getFluid()); + mFluorideGases.add(FLUORIDES.THORIUM_TETRAFLUORIDE.getFluid()); + } + } - public static void generate() { - // Fli2BeF4 + Thorium TetraFluoride = Uranium233 - //72k Ticks/hr - //1l/4t = 1000l/hr - //1l/40t = 1000l/10hr (Probably better) LiFBeF2ThF4UF4 - //1l/20t= 1000l/2.5hr LiFBeF2ZrF4UF4 - //1l/10t= 1000l/2.5hr LiFBeF2ZrF4U235 + public static void generate() { + // Fli2BeF4 + Thorium TetraFluoride = Uranium233 + // 72k Ticks/hr + // 1l/4t = 1000l/hr + // 1l/40t = 1000l/10hr (Probably better) LiFBeF2ThF4UF4 + // 1l/20t= 1000l/2.5hr LiFBeF2ZrF4UF4 + // 1l/10t= 1000l/2.5hr LiFBeF2ZrF4U235 - configureSparging(); - FluidStack Li2BeF4 = NUCLIDE.Li2BeF4.getFluidStack(200); + configureSparging(); + FluidStack Li2BeF4 = NUCLIDE.Li2BeF4.getFluidStack(200); - //LiFBeF2ThF4UF4 - T3 - GTPP_Recipe.GTPP_Recipe_Map.sLiquidFluorineThoriumReactorRecipes.addRecipe( - false, - new ItemStack[] {}, - new ItemStack[] {}, - null, new int[] {10000, 10000, 5000, 2500}, - new FluidStack[] { - NUCLIDE.LiFBeF2ThF4UF4.getFluidStack(100), - Li2BeF4 - }, - new FluidStack[] { - NUCLIDE.LiFBeF2UF4FP.getFluidStack(100), - NUCLIDE.LiFBeF2ThF4.getFluidStack(200), - FLUORIDES.URANIUM_HEXAFLUORIDE.getFluidStack(20), - FLUORIDES.URANIUM_HEXAFLUORIDE.getFluidStack(10) - }, - 400 * 20,//time - 0,//cost - 8192*4//fuel value - ); + // LiFBeF2ThF4UF4 - T3 + GTPP_Recipe.GTPP_Recipe_Map.sLiquidFluorineThoriumReactorRecipes.addRecipe( + false, + new ItemStack[] {}, + new ItemStack[] {}, + null, + new int[] {10000, 10000, 5000, 2500}, + new FluidStack[] {NUCLIDE.LiFBeF2ThF4UF4.getFluidStack(100), Li2BeF4}, + new FluidStack[] { + NUCLIDE.LiFBeF2UF4FP.getFluidStack(100), + NUCLIDE.LiFBeF2ThF4.getFluidStack(200), + FLUORIDES.URANIUM_HEXAFLUORIDE.getFluidStack(20), + FLUORIDES.URANIUM_HEXAFLUORIDE.getFluidStack(10) + }, + 400 * 20, // time + 0, // cost + 8192 * 4 // fuel value + ); - //LiFBeF2ZrF4UF4 - T2 - GTPP_Recipe.GTPP_Recipe_Map.sLiquidFluorineThoriumReactorRecipes.addRecipe( - false, - new ItemStack[] {}, - new ItemStack[] {}, - null, new int[] {10000, 10000, 2500, 1250}, - new FluidStack[] { - NUCLIDE.LiFBeF2ZrF4UF4.getFluidStack(100), - Li2BeF4 - }, - new FluidStack[] { - NUCLIDE.LiFBeF2UF4FP.getFluidStack(50), - NUCLIDE.LiFBeF2ThF4.getFluidStack(100), - FLUORIDES.URANIUM_HEXAFLUORIDE.getFluidStack(10), - FLUORIDES.URANIUM_HEXAFLUORIDE.getFluidStack(5) - }, - 400 * 20,//time - 0,//cost - 8192//fuel value - ); + // LiFBeF2ZrF4UF4 - T2 + GTPP_Recipe.GTPP_Recipe_Map.sLiquidFluorineThoriumReactorRecipes.addRecipe( + false, + new ItemStack[] {}, + new ItemStack[] {}, + null, + new int[] {10000, 10000, 2500, 1250}, + new FluidStack[] {NUCLIDE.LiFBeF2ZrF4UF4.getFluidStack(100), Li2BeF4}, + new FluidStack[] { + NUCLIDE.LiFBeF2UF4FP.getFluidStack(50), + NUCLIDE.LiFBeF2ThF4.getFluidStack(100), + FLUORIDES.URANIUM_HEXAFLUORIDE.getFluidStack(10), + FLUORIDES.URANIUM_HEXAFLUORIDE.getFluidStack(5) + }, + 400 * 20, // time + 0, // cost + 8192 // fuel value + ); - //LiFBeF2ZrF4U235 - T1 - GTPP_Recipe.GTPP_Recipe_Map.sLiquidFluorineThoriumReactorRecipes.addRecipe( - false, - new ItemStack[] {}, - new ItemStack[] {}, - null, new int[] {10000, 10000, 1000, 500}, - new FluidStack[] { - NUCLIDE.LiFBeF2ZrF4U235.getFluidStack(100), - Li2BeF4 - }, - new FluidStack[] { - NUCLIDE.LiFBeF2UF4FP.getFluidStack(25), - NUCLIDE.LiFThF4.getFluidStack(50), - FLUORIDES.URANIUM_HEXAFLUORIDE.getFluidStack(4), - FLUORIDES.URANIUM_HEXAFLUORIDE.getFluidStack(2) - }, - 100 *20,//time - 0,//cost - 8192//fuel value - ); + // LiFBeF2ZrF4U235 - T1 + GTPP_Recipe.GTPP_Recipe_Map.sLiquidFluorineThoriumReactorRecipes.addRecipe( + false, + new ItemStack[] {}, + new ItemStack[] {}, + null, + new int[] {10000, 10000, 1000, 500}, + new FluidStack[] {NUCLIDE.LiFBeF2ZrF4U235.getFluidStack(100), Li2BeF4}, + new FluidStack[] { + NUCLIDE.LiFBeF2UF4FP.getFluidStack(25), + NUCLIDE.LiFThF4.getFluidStack(50), + FLUORIDES.URANIUM_HEXAFLUORIDE.getFluidStack(4), + FLUORIDES.URANIUM_HEXAFLUORIDE.getFluidStack(2) + }, + 100 * 20, // time + 0, // cost + 8192 // fuel value + ); - // Sparging NEI Recipes - GasSpargingRecipeMap.addRecipe( - new FluidStack(mSpargeGases.get(0), 50), - NUCLIDE.LiFBeF2UF4FP.getFluidStack(50), - NUCLIDE.Sparged_LiFBeF2UF4FP.getFluidStack(50), - new FluidStack[] { - new FluidStack(mNobleGases.get(1), 10), - new FluidStack(mNobleGases.get(2), 10), - new FluidStack(mNobleGases.get(3), 10), - new FluidStack(mNobleGases.get(4), 10), - new FluidStack(mNobleGases.get(5), 10) - }, - new int[] { - 1000, 1000, 1000, 1000, 1000 - }); + // Sparging NEI Recipes + GasSpargingRecipeMap.addRecipe( + new FluidStack(mSpargeGases.get(0), 50), + NUCLIDE.LiFBeF2UF4FP.getFluidStack(50), + NUCLIDE.Sparged_LiFBeF2UF4FP.getFluidStack(50), + new FluidStack[] { + new FluidStack(mNobleGases.get(1), 10), + new FluidStack(mNobleGases.get(2), 10), + new FluidStack(mNobleGases.get(3), 10), + new FluidStack(mNobleGases.get(4), 10), + new FluidStack(mNobleGases.get(5), 10) + }, + new int[] {1000, 1000, 1000, 1000, 1000}); - GasSpargingRecipeMap.addRecipe( - new FluidStack(mSpargeGases.get(1), 50), - NUCLIDE.LiFThF4.getFluidStack(50), - NUCLIDE.Sparged_LiFThF4.getFluidStack(50), - new FluidStack[] { - new FluidStack(mFluorideGases.get(1), 5), - new FluidStack(mFluorideGases.get(2), 5), - new FluidStack(mFluorideGases.get(3), 5), - new FluidStack(mFluorideGases.get(4), 5), - new FluidStack(mFluorideGases.get(5), 5) - }, - new int[] { - 500, 500, 500, 500, 500 - }); + GasSpargingRecipeMap.addRecipe( + new FluidStack(mSpargeGases.get(1), 50), + NUCLIDE.LiFThF4.getFluidStack(50), + NUCLIDE.Sparged_LiFThF4.getFluidStack(50), + new FluidStack[] { + new FluidStack(mFluorideGases.get(1), 5), + new FluidStack(mFluorideGases.get(2), 5), + new FluidStack(mFluorideGases.get(3), 5), + new FluidStack(mFluorideGases.get(4), 5), + new FluidStack(mFluorideGases.get(5), 5) + }, + new int[] {500, 500, 500, 500, 500}); - GasSpargingRecipeMap.addRecipe( - new FluidStack(mSpargeGases.get(1), 50), - NUCLIDE.LiFBeF2ThF4.getFluidStack(50), - NUCLIDE.Sparged_LiFBeF2ThF4.getFluidStack(50), - new FluidStack[] { - new FluidStack(mFluorideGases.get(1), 10), - new FluidStack(mFluorideGases.get(2), 10), - new FluidStack(mFluorideGases.get(3), 10), - new FluidStack(mFluorideGases.get(4), 10), - new FluidStack(mFluorideGases.get(5), 10) - }, - new int[] { - 1000, 1000, 1000, 1000, 1000 - }); - - - } + GasSpargingRecipeMap.addRecipe( + new FluidStack(mSpargeGases.get(1), 50), + NUCLIDE.LiFBeF2ThF4.getFluidStack(50), + NUCLIDE.Sparged_LiFBeF2ThF4.getFluidStack(50), + new FluidStack[] { + new FluidStack(mFluorideGases.get(1), 10), + new FluidStack(mFluorideGases.get(2), 10), + new FluidStack(mFluorideGases.get(3), 10), + new FluidStack(mFluorideGases.get(4), 10), + new FluidStack(mFluorideGases.get(5), 10) + }, + new int[] {1000, 1000, 1000, 1000, 1000}); + } } diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/recipe/RecipeLoader_MolecularTransformer.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/recipe/RecipeLoader_MolecularTransformer.java index 300cf4e411..28e72cc0b9 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/recipe/RecipeLoader_MolecularTransformer.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/recipe/RecipeLoader_MolecularTransformer.java @@ -1,13 +1,12 @@ package gtPlusPlus.xmod.gregtech.loaders.recipe; -import cpw.mods.fml.common.Loader; + import static advsolar.utils.MTRecipeManager.transformerRecipes; + +import advsolar.utils.MTRecipeRecord; +import cpw.mods.fml.common.Loader; import gregtech.api.enums.*; -import gregtech.api.interfaces.IMaterialHandler; import gregtech.api.util.GT_ModHandler; import gregtech.api.util.GT_OreDictUnificator; -import gregtech.api.util.GT_Recipe; -import gregtech.api.util.GT_Utility; -import advsolar.utils.MTRecipeRecord; import gtPlusPlus.api.objects.Logger; import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.util.math.MathUtils; @@ -15,33 +14,63 @@ import gtPlusPlus.core.util.minecraft.MaterialUtils; public class RecipeLoader_MolecularTransformer { - public static void run() { - - for (int i = 0; i < transformerRecipes.size(); i++) { - MTRecipeRecord aRecipe = transformerRecipes.get(i); - int aEU = MaterialUtils.getVoltageForTier(5); - Logger.INFO("======================="); - Logger.INFO("Generating GT recipe for Molecular Transformer."); - Logger.INFO("Input: "+aRecipe.inputStack.getDisplayName()+", Output: "+aRecipe.outputStack.getDisplayName()+", EU/t: "+aEU); - float aTicks = (float) aRecipe.energyPerOperation / (float) aEU; - Logger.INFO("Ticks: "+aTicks); - int aTicksRoundedUp = MathUtils.roundToClosestInt(Math.ceil(aTicks)); - Logger.INFO("Ticks: "+aTicksRoundedUp); - Logger.INFO("Total EU equal or greater? "+((aTicksRoundedUp * aEU) >= aRecipe.energyPerOperation)); - CORE.RA.addMolecularTransformerRecipe(aRecipe.inputStack, aRecipe.outputStack, aTicksRoundedUp, aEU, 2); - Logger.INFO("======================="); - } - - transformerRecipes.clear(); - if (Loader.isModLoaded("AdvancedSolarPanel") && Loader.isModLoaded("GalaxySpace")) { + public static void run() { + + for (int i = 0; i < transformerRecipes.size(); i++) { + MTRecipeRecord aRecipe = transformerRecipes.get(i); + int aEU = MaterialUtils.getVoltageForTier(5); + Logger.INFO("======================="); + Logger.INFO("Generating GT recipe for Molecular Transformer."); + Logger.INFO("Input: " + aRecipe.inputStack.getDisplayName() + ", Output: " + + aRecipe.outputStack.getDisplayName() + ", EU/t: " + aEU); + float aTicks = (float) aRecipe.energyPerOperation / (float) aEU; + Logger.INFO("Ticks: " + aTicks); + int aTicksRoundedUp = MathUtils.roundToClosestInt(Math.ceil(aTicks)); + Logger.INFO("Ticks: " + aTicksRoundedUp); + Logger.INFO("Total EU equal or greater? " + ((aTicksRoundedUp * aEU) >= aRecipe.energyPerOperation)); + CORE.RA.addMolecularTransformerRecipe(aRecipe.inputStack, aRecipe.outputStack, aTicksRoundedUp, aEU, 2); + Logger.INFO("======================="); + } + + transformerRecipes.clear(); + if (Loader.isModLoaded("AdvancedSolarPanel") && Loader.isModLoaded("GalaxySpace")) { - CORE.RA.addMolecularTransformerRecipe(GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Glowstone, 1L),GT_ModHandler.getModItem("AdvancedSolarPanel", "asp_crafting_items", 1L, 9),600,1920,2); - CORE.RA.addMolecularTransformerRecipe(GT_ModHandler.getModItem("GalaxySpace", "item.GlowstoneDusts", 1L, 0),GT_ModHandler.getModItem("AdvancedSolarPanel", "asp_crafting_items", 1L, 9),150,7680,2); - CORE.RA.addMolecularTransformerRecipe(GT_ModHandler.getModItem("GalaxySpace", "item.GlowstoneDusts", 1L, 1),GT_ModHandler.getModItem("AdvancedSolarPanel", "asp_crafting_items", 1L, 9),38,30720,2); - CORE.RA.addMolecularTransformerRecipe(GT_ModHandler.getModItem("GalaxySpace", "item.GlowstoneDusts", 1L, 2),GT_ModHandler.getModItem("AdvancedSolarPanel", "asp_crafting_items", 1L, 9),10,122880,2); - CORE.RA.addMolecularTransformerRecipe(GT_ModHandler.getModItem("GalaxySpace", "item.GlowstoneDusts", 1L, 3),GT_ModHandler.getModItem("AdvancedSolarPanel", "asp_crafting_items", 1L, 9),3,491520,2); - CORE.RA.addMolecularTransformerRecipe(GT_ModHandler.getModItem("GalaxySpace", "item.GlowstoneDusts", 1L, 4),GT_ModHandler.getModItem("AdvancedSolarPanel", "asp_crafting_items", 1L, 9),1,1996080,2); - } - } - + CORE.RA.addMolecularTransformerRecipe( + GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Glowstone, 1L), + GT_ModHandler.getModItem("AdvancedSolarPanel", "asp_crafting_items", 1L, 9), + 600, + 1920, + 2); + CORE.RA.addMolecularTransformerRecipe( + GT_ModHandler.getModItem("GalaxySpace", "item.GlowstoneDusts", 1L, 0), + GT_ModHandler.getModItem("AdvancedSolarPanel", "asp_crafting_items", 1L, 9), + 150, + 7680, + 2); + CORE.RA.addMolecularTransformerRecipe( + GT_ModHandler.getModItem("GalaxySpace", "item.GlowstoneDusts", 1L, 1), + GT_ModHandler.getModItem("AdvancedSolarPanel", "asp_crafting_items", 1L, 9), + 38, + 30720, + 2); + CORE.RA.addMolecularTransformerRecipe( + GT_ModHandler.getModItem("GalaxySpace", "item.GlowstoneDusts", 1L, 2), + GT_ModHandler.getModItem("AdvancedSolarPanel", "asp_crafting_items", 1L, 9), + 10, + 122880, + 2); + CORE.RA.addMolecularTransformerRecipe( + GT_ModHandler.getModItem("GalaxySpace", "item.GlowstoneDusts", 1L, 3), + GT_ModHandler.getModItem("AdvancedSolarPanel", "asp_crafting_items", 1L, 9), + 3, + 491520, + 2); + CORE.RA.addMolecularTransformerRecipe( + GT_ModHandler.getModItem("GalaxySpace", "item.GlowstoneDusts", 1L, 4), + GT_ModHandler.getModItem("AdvancedSolarPanel", "asp_crafting_items", 1L, 9), + 1, + 1996080, + 2); + } + } } diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/recipe/RecipeLoader_Nuclear.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/recipe/RecipeLoader_Nuclear.java index 5ba1e6d0ca..22ec0a95c5 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/recipe/RecipeLoader_Nuclear.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/recipe/RecipeLoader_Nuclear.java @@ -25,681 +25,638 @@ import net.minecraftforge.fluids.FluidStack; public class RecipeLoader_Nuclear { - - - public static void generate() { - createRecipes(); - RecipeLoader_LFTR.generate(); - RecipeLoader_NuclearFuelProcessing.generate(); - } - - private static void createRecipes() { - autoclave(); - blastFurnace(); - centrifugeRecipes(); - chemicalBathRecipes(); - chemicalReactorRecipes(); - dehydratorRecipes(); - electroMagneticSeperator(); - fluidExtractorRecipes(); - fluidHeater(); - macerator(); - mixerRecipes(); - sifter(); - } - - private static void autoclave() { - - GT_Values.RA.addAutoclaveRecipe( - ItemUtils.getItemStackOfAmountFromOreDict("dustZirconium", 9), - FluidUtils.getFluidStack("chlorine", 9 * 4 * 144), - ItemUtils.getItemStackOfAmountFromOreDict("pelletZirconium", 9), - 0, - 120 * 20, - 30); - - } - - private static void blastFurnace() { - - GT_Values.RA.addBlastRecipe( - FLUORIDES.LITHIUM_FLUORIDE.getDust(2), - FLUORIDES.BERYLLIUM_FLUORIDE.getDust(1), - GT_Values.NF, - GT_Values.NF, - NUCLIDE.Li2BeF4.getDust(3), - null, - 60 * 20, 2000, - 3000); - - GT_Values.RA.addBlastRecipe( - ItemUtils.getItemStackOfAmountFromOreDict("dustZrCl4", 1), - null, - GT_Values.NF, - GT_Values.NF, - ItemUtils.getItemStackOfAmountFromOreDict("dustCookedZrCl4", 1), - null, - 60 * 20, - 340, - 300); - - } - - - private static void centrifugeRecipes() { - - //Process Used Fuel Rods for Krypton - - //Uranium - GT_Values.RA.addCentrifugeRecipe( - CI.getNumberedCircuit(20), - ItemUtils.getItemStackFromFQRN("IC2:reactorUraniumSimpledepleted", 8), - GT_Values.NF, - ELEMENT.getInstance().KRYPTON.getFluidStack(60), - ItemList.IC2_Fuel_Rod_Empty.get(8), - ELEMENT.getInstance().URANIUM238.getDust(2), - ELEMENT.getInstance().URANIUM232.getSmallDust(1), - ELEMENT.getInstance().URANIUM233.getSmallDust(1), - ELEMENT.getInstance().URANIUM235.getSmallDust(1), - ELEMENT.getInstance().PLUTONIUM239.getTinyDust(1), - new int[] { 0, 0, 1000, 1000, 1000, 500 }, 500 * 20, 4000); - //Mox - GT_Values.RA.addCentrifugeRecipe( - CI.getNumberedCircuit(20), - ItemUtils.getItemStackFromFQRN("IC2:reactorMOXSimpledepleted", 8), - GT_Values.NF, - ELEMENT.getInstance().KRYPTON.getFluidStack(90), - ItemList.IC2_Fuel_Rod_Empty.get(8), - ELEMENT.getInstance().PLUTONIUM244.getDust(2), - ELEMENT.getInstance().PLUTONIUM241.getTinyDust(1), - ELEMENT.getInstance().PLUTONIUM239.getTinyDust(1), - ELEMENT.getInstance().PLUTONIUM238.getTinyDust(1), - ELEMENT.getInstance().PLUTONIUM239.getTinyDust(1), - new int[] { 0, 0, 500, 500, 500, 500 }, 750 * 20, 4000); - - //Thorium - GT_Values.RA.addCentrifugeRecipe( - CI.getNumberedCircuit(20), - ItemList.Depleted_Thorium_1.get(8), - GT_Values.NF, - ELEMENT.getInstance().KRYPTON.getFluidStack(30), - ItemList.IC2_Fuel_Rod_Empty.get(8), - ELEMENT.getInstance().THORIUM.getDust(2), - ELEMENT.getInstance().THORIUM232.getDust(1), - ELEMENT.getInstance().LUTETIUM.getSmallDust(1), - ELEMENT.getInstance().POLONIUM.getSmallDust(1), - ELEMENT.getInstance().THALLIUM.getTinyDust(1), - new int[] { 0, 0, 5000, 5000, 5000, 2500 }, 250 * 20, 4000); - - } - - - private static void chemicalBathRecipes() { - - int[] chances = {9000, 6000, 3000}; - GT_Values.RA.addChemicalBathRecipe(ItemUtils.getItemStackOfAmountFromOreDict("dustTin", 12), - FluidUtils.getFluidStack("chlorine", 2400), - ItemUtils.getItemStackOfAmountFromOreDict("dustZirconium", 3), - ItemUtils.getItemStackOfAmountFromOreDict("dustZirconium", 4), - ItemUtils.getItemStackOfAmountFromOreDict("dustZirconium", 5), - chances, - 30 * 20, - 480); - - chances = new int[]{9000, 3000, 1000}; - GT_Values.RA.addChemicalBathRecipe(ItemUtils.getItemStackOfAmountFromOreDict("dustRutile", 5), - FluidUtils.getFluidStack("chlorine", 4000), - ItemUtils.getItemStackOfAmountFromOreDict("dustZirconium", 3), - ItemUtils.getItemStackOfAmountFromOreDict("dustTitanium", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustHafnium", 1), - chances, - 30 * 20, - 1024); - - GT_Values.RA.addChemicalBathRecipe( - ItemUtils.getItemStackOfAmountFromOreDict("dustLithiumCarbonate", 10), - FluidUtils.getFluidStack("hydrofluoricacid", 10 * 144), - ItemUtils.getItemStackOfAmountFromOreDict("dustLithiumFluoride", 10), - null, - null, - new int[] {}, - 90 * 20, - 500); - - } - - - private static void chemicalReactorRecipes() { - - ItemStack aGtHydrofluoricAcid = ItemUtils.getItemStackOfAmountFromOreDictNoBroken("cellHydrofluoricAcid_GT5U", 2); - - GT_Values.RA.addChemicalRecipe( - ItemUtils.getItemStackOfAmountFromOreDict("dustLithiumCarbonate", 5), // Input - ItemUtils.getItemStackOfAmountFromOreDict("dustCalciumHydroxide", 5), // Input - null, // Fluid Input - null, // Fluid Output - ItemUtils.getItemStackOfAmountFromOreDict("dustLi2CO3CaOH2", 10), - 600 * 20); - - GT_Values.RA.addChemicalRecipe( - ItemUtils.getItemStackOfAmountFromOreDict("dustLithiumHydroxide", 5), // Input - null, // Input Stack 2 - FluidUtils.getFluidStack("hydrofluoricacid", 5 * 144), - FluidUtils.getFluidStack("water", 5 * 144), // Fluid Output - ItemUtils.getItemStackOfAmountFromOreDict("dustLithiumFluoride", 5), - 600 * 20); - - GT_Values.RA.addChemicalRecipe( - ItemUtils.getItemStackOfAmountFromOreDict("dustLithium7", 1), null, - FluidUtils.getFluidStack("sulfuricacid", 144 * 8), - FluidUtils.getFluidStack("sulfuriclithium", 144 * 2), - ItemUtils.getItemStackOfAmountFromOreDict("dustSmallLithium7", 1), - 20 * 20); - - GT_Values.RA.addChemicalRecipe( - ItemUtils.getItemStackOfAmountFromOreDict("cellOxygen", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustLithium7", 16), - FluidUtils.getFluidStack("water", 1000), - FluidUtils.getFluidStack("lithiumhydroxide", 144 * 4), - CI.emptyCells(1), - 300 * 20); - - // LFTR Fuel Related Compounds - if (GTNH) { - // Hydroxide - GT_Values.RA.addChemicalRecipe( - ItemUtils.getGregtechCircuit(3), - ELEMENT.getInstance().OXYGEN.getCell(1), - ELEMENT.getInstance().HYDROGEN.getFluidStack(1000), - MISC_MATERIALS.HYDROXIDE.getFluidStack(2000), - CI.emptyCells(1), - GT_Values.NI, - 8 * 20, - 30); - // Beryllium Hydroxide - GT_Values.RA.addChemicalRecipe( - ItemUtils.getGregtechCircuit(3), - ELEMENT.getInstance().BERYLLIUM.getDust(7), - MISC_MATERIALS.HYDROXIDE.getFluidStack(1000), - FLUORIDES.BERYLLIUM_HYDROXIDE.getFluidStack(2000), - GT_Values.NI, - 8 * 20, - 30); - // Ammonium Bifluoride - GT_Values.RA.addChemicalRecipe( - ItemUtils.getGregtechCircuit(3), - ItemUtils.getItemStackOfAmountFromOreDict("cellHydrofluoricAcid", 1), - MISC_MATERIALS.AMMONIUM.getFluidStack(1000), - FLUORIDES.AMMONIUM_BIFLUORIDE.getFluidStack(2000), - CI.emptyCells(1), - 20 * 20, - 30); - if (aGtHydrofluoricAcid != null) { - // Ammonium Bifluoride - GT_Values.RA.addChemicalRecipe( - ItemUtils.getGregtechCircuit(3), - aGtHydrofluoricAcid, - MISC_MATERIALS.AMMONIUM.getFluidStack(1000), - FLUORIDES.AMMONIUM_BIFLUORIDE.getFluidStack(2000), - CI.emptyCells(2), - 40 * 20, - 30); - } - // Ammonium - GT_Values.RA.addChemicalRecipe( - ItemUtils.getGregtechCircuit(3), - ELEMENT.getInstance().HYDROGEN.getCell(1), - MISC_MATERIALS.AMMONIA.getFluidStack(1000), - MISC_MATERIALS.AMMONIUM.getFluidStack(2000), - CI.emptyCells(1), - GT_Values.NI, - 20 * 20, - 30); - } - - if (!GTNH) { - // Hydroxide - GT_Values.RA.addChemicalRecipe( - ItemUtils.getGregtechCircuit(3), - ELEMENT.getInstance().OXYGEN.getCell(1), - ELEMENT.getInstance().HYDROGEN.getFluidStack(1000), - MISC_MATERIALS.HYDROXIDE.getFluidStack(2000), - CI.emptyCells(1), - GT_Values.NI, - 8 * 20, - 30); - // Beryllium Hydroxide - GT_Values.RA.addChemicalRecipe( - ItemUtils.getGregtechCircuit(3), - ELEMENT.getInstance().BERYLLIUM.getDust(7), - MISC_MATERIALS.HYDROXIDE.getFluidStack(1000), - FLUORIDES.BERYLLIUM_HYDROXIDE.getFluidStack(2000), - GT_Values.NI, - 8 * 20, - 30); - // Ammonium Bifluoride - GT_Values.RA.addChemicalRecipe( - ItemUtils.getGregtechCircuit(3), - ItemUtils.getItemStackOfAmountFromOreDict("cellHydrofluoricAcid", 1), - MISC_MATERIALS.AMMONIUM.getFluidStack(1000), - FLUORIDES.AMMONIUM_BIFLUORIDE.getFluidStack(3000), - CI.emptyCells(1), - 20 * 20, - 30); - - if (aGtHydrofluoricAcid != null) { - // Ammonium Bifluoride - GT_Values.RA.addChemicalRecipe( - ItemUtils.getGregtechCircuit(3), - aGtHydrofluoricAcid, - MISC_MATERIALS.AMMONIUM.getFluidStack(1000), - FLUORIDES.AMMONIUM_BIFLUORIDE.getFluidStack(2000), - CI.emptyCells(2), - 40 * 20, - 30); - } - - // Ammonium - GT_Values.RA.addChemicalRecipe( - ItemUtils.getGregtechCircuit(3), - ELEMENT.getInstance().HYDROGEN.getCell(1), - MISC_MATERIALS.AMMONIA.getFluidStack(1000), - MISC_MATERIALS.AMMONIUM.getFluidStack(2000), - CI.emptyCells(1), - GT_Values.NI, - 20 * 20, - 30); - // Ammonia - GT_Values.RA.addChemicalRecipe( - ItemUtils.getItemStackOfAmountFromOreDict("cellHydrogen", 3), - ItemUtils.getItemStackOfAmountFromOreDict("dustMagnetite", 0), - FluidUtils.getFluidStack("nitrogen", 1000), - FluidUtils.getFluidStack("ammonia", 1000), - CI.emptyCells(3), - 14 * 20); - } - - - //Technetium - GT_Values.RA.addChemicalRecipe( - CI.getNumberedAdvancedCircuit(22), - ItemUtils.getItemStackOfAmountFromOreDict("dustTechnetium99", 1), - FluidUtils.getFluidStack("sulfuricacid", 1000), - FluidUtils.getFluidStack("sulfuricacid", 144 * 2), - ItemUtils.getItemStackOfAmountFromOreDict("dustTechnetium", 1), - 100 * 20); - - // Sodium Hydroxide - GT_Values.RA.addChemicalRecipe( - CI.getNumberedBioCircuit(15), - ItemUtils.getItemStackOfAmountFromOreDict("dustSodiumHydroxide", 1), - FluidUtils.getFluidStack("hydrofluoricacid", 500), - FluidUtils.getWater(1000), - FLUORIDES.SODIUM_FLUORIDE.getDust(1), - 60 * 20); - - if (FluidUtils.doesFluidExist("hydrofluoricacid_gt5u")) { - GT_Values.RA.addChemicalRecipe( - CI.getNumberedBioCircuit(15), - ItemUtils.getItemStackOfAmountFromOreDict("dustSodiumHydroxide", 1), - FluidUtils.getFluidStack("hydrofluoricacid_gt5u", 1000), - FluidUtils.getWater(1000), - FLUORIDES.SODIUM_FLUORIDE.getDust(1), - 60 * 20); - } - - } - - private static void dehydratorRecipes() { - - // Makes 7-Lithium - CORE.RA.addDehydratorRecipe( - new ItemStack[] { - CI.getNumberedAdvancedCircuit(14), - ItemUtils.getItemStackOfAmountFromOreDict("cellSulfuricLithium", 1) - }, - FluidUtils.getFluidStack("sulfuriclithium", 440), - null, - new ItemStack[] { - CI.emptyCells(1), - ItemUtils.getItemStackOfAmountFromOreDict("dustSulfur", 3), - ItemUtils.getItemStackOfAmountFromOreDict("dustCopper", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustSodium", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustCarbon", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustLithium7", 4) - }, - new int[] {10000, 10000, 10000, 10000, 10000}, - 30 * 20, - 30); - - // Makes Lithium Carbonate - CORE.RA.addDehydratorRecipe( - new ItemStack[] { - CI.emptyCells(12), - ItemUtils.getItemStackOfAmountFromOreDict("dustLepidolite", 20) - }, // Item input (Array, up to 2) - FluidUtils.getFluidStack("sulfuricacid", 10000), - FluidUtils.getFluidStack("sulfuriclithium", 10000), - new ItemStack[] { - ItemUtils.getItemStackOfAmountFromOreDict("dustPotassium", 1), - GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Aluminium, 4), - ItemUtils.getItemStackOfAmountFromOreDict("cellOxygen", 10), - ItemUtils.getItemStackOfAmountFromOreDict("cellFluorine", 2), - ItemUtils.getItemStackOfAmountFromOreDict("dustLithiumCarbonate", 3), // LithiumCarbonate - }, // Output Array of Items - Upto 9, - new int[] { 10000, 10000, 10000, 10000, 10000 }, - 75 * 20, // Time in ticks - 1000); // EU - - // Calcium Hydroxide - if ((ItemUtils.checkForInvalidItems(ItemUtils.getItemStackOfAmountFromOreDict("dustQuicklime", 1))) || LoadedMods.IHL) { - //CaO + H2O = Ca(OH)2 - CORE.RA.addDehydratorRecipe( - new ItemStack[] { - CI.getNumberedBioCircuit(20), - ItemUtils.getItemStackOfAmountFromOreDict("dustQuicklime", 2) - }, - FluidUtils.getFluidStack("water", 1000), - null, // Fluid output (slot 2) - new ItemStack[] { - ItemUtils.getItemStackOfAmountFromOreDict("dustCalciumHydroxide", 5) - }, // Output - new int[] { 10000 }, - 12 * 20, // Time in ticks - 120); // EU - } - else { - Logger.INFO("[dustCalciumHydroxide] FAILED TO LOAD RECIPE"); - if (!ItemUtils.checkForInvalidItems(ItemUtils.getItemStackOfAmountFromOreDict("dustQuicklime", 1))) { - Logger.INFO("Could not find dustQuicklime, cannot make dustCalciumHydroxide."); - } - else if (!LoadedMods.IHL) { - Logger.INFO("IHL not loaded."); - } - } - - // 2 LiOH + CaCO3 - CORE.RA.addDehydratorRecipe( - new ItemStack[] { - CI.getNumberedAdvancedCircuit(20), - ItemUtils.getItemStackOfAmountFromOreDict("dustLi2CO3CaOH2", 5) - }, // Item - null, // Fluid input (slot 1) - null, // Fluid output (slot 2) - new ItemStack[] { - ItemUtils.getItemStackOfAmountFromOreDict("dustLithiumHydroxide", 2), - ItemUtils.getItemStackOfAmountFromOreDict("dustCalciumCarbonate", 3) - }, // Output - new int[] { 10000, 10000 }, - 120 * 20, // Time in ticks - 1000); // EU - - // LiOH Liquid to Dust - CORE.RA.addDehydratorRecipe( - new ItemStack[] { - CI.getNumberedAdvancedCircuit(22) - }, - FluidUtils.getFluidStack("lithiumhydroxide", 144), - null, - new ItemStack[] { - ItemUtils.getItemStackOfAmountFromOreDict("dustLithiumHydroxide", 1) - }, - new int[] { 10000 }, - 1 * 20, // Time in ticks - 64); // EU - - // Zirconium Chloride -> TetraFluoride - FluidStack aHydrogenChloride = new FluidStack(GenericChem.HydrochloricAcid, 9000); - CORE.RA.addDehydratorRecipe( - new ItemStack[] { - CI.getNumberedAdvancedCircuit(11), - ItemUtils.getItemStackOfAmountFromOreDict("dustCookedZrCl4", 9), - }, // Item - FluidUtils.getFluidStack("hydrofluoricacid", 9 * 144), - aHydrogenChloride, - new ItemStack[] { - FLUORIDES.ZIRCONIUM_TETRAFLUORIDE.getDust(9) - }, - new int[] { 10000 }, - 120 * 20, // Time in ticks - 500); // EU - - // Zirconium Chloride -> TetraFluoride - FluidStack aGregtechHydro = FluidUtils.getFluidStack("hydrofluoricacid_gt5u", 1); - if (aGregtechHydro != null || Utils.getGregtechVersionAsInt() >= 50929) { - CORE.RA.addDehydratorRecipe( - new ItemStack[] { - CI.getNumberedAdvancedCircuit(10), - ItemUtils.getItemStackOfAmountFromOreDict("dustCookedZrCl4", 9) - }, - FluidUtils.getFluidStack("hydrofluoricacid_gt5u", 18 * 144), - aHydrogenChloride, - new ItemStack[] { - FLUORIDES.ZIRCONIUM_TETRAFLUORIDE.getDust(9) - }, - new int[] { 10000 }, - 240 * 20, // Time in ticks - 500); // EU - } - - // Be(OH)2 + 2 (NH4)HF2 → (NH4)2BeF4 + 2 H2O - CORE.RA.addDehydratorRecipe( - new ItemStack[] { - CI.getNumberedAdvancedCircuit(6), - FLUORIDES.AMMONIUM_BIFLUORIDE.getCell(4) - }, - FLUORIDES.BERYLLIUM_HYDROXIDE.getFluidStack(2000), // Fluid input (slot 1) - FLUORIDES.AMMONIUM_TETRAFLUOROBERYLLATE.getFluidStack(6000), - new ItemStack[] { - ItemUtils.getItemStackOfAmountFromOreDict("cellWater", 4) - }, - new int[] { 10000}, - 32 * 20, // Time in ticks - 64); // EU - - // (NH4)2BeF4 → 2 NH3 + 2 HF + BeF2 - CORE.RA.addDehydratorRecipe( - new ItemStack[] { - CI.getNumberedAdvancedCircuit(17), - CI.emptyCells(5) - }, - FLUORIDES.AMMONIUM_TETRAFLUOROBERYLLATE.getFluidStack(5000), - null, - new ItemStack[] { - MISC_MATERIALS.AMMONIA.getCell(2), - ItemUtils.getItemStackOfAmountFromOreDict("cellHydrofluoricAcid", 2), - FLUORIDES.BERYLLIUM_FLUORIDE.getCell(1) - }, - new int[] {10000, 10000, 10000}, - 5 * 60 * 20, - 120); - - } - - private static void electroMagneticSeperator() { - - // Zirconium - GT_Values.RA.addElectromagneticSeparatorRecipe( - ItemUtils.getItemStackOfAmountFromOreDict("crushedPurifiedBauxite", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustBauxite", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustSmallRutile", 1), - ItemUtils.getItemStackOfAmountFromOreDict("nuggetZirconium", 1), - new int[] { 10000, 2500, 4000 }, - 20 * 20, - 24); - - // Zircon - GT_Values.RA.addElectromagneticSeparatorRecipe( - ItemUtils.getItemStackOfAmountFromOreDict("crushedPurifiedMagnetite", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustMagnetite", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustSmallZircon", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustTinyZircon", 1), - new int[] { 10000, 1250, 2500 }, - 20 * 20, - 24); - GT_Values.RA.addElectromagneticSeparatorRecipe( - ItemUtils.getItemStackOfAmountFromOreDict("crushedPurifiedCassiterite", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustCassiterite", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustSmallZircon", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustTinyZircon", 1), - new int[] { 10000, 1250, 2500 }, - 20 * 20, - 24); - - } - - private static void fluidExtractorRecipes() { - - //FLiBe fuel - CORE.RA.addFluidExtractionRecipe( - NUCLIDE.Li2BeF4.getDust(1), - NUCLIDE.Li2BeF4.getFluidStack(144), - 100, - 500); - //Lithium Fluoride - CORE.RA.addFluidExtractionRecipe( - ItemUtils.getItemStackOfAmountFromOreDict("dustLithiumFluoride", 1), - FLUORIDES.LITHIUM_FLUORIDE.getFluidStack(144), - 100, - 500); - //LFTR Fuel 1 - CORE.RA.addFluidExtractionRecipe( - NUCLIDE.LiFBeF2ZrF4U235.getDust(1), - NUCLIDE.LiFBeF2ZrF4U235.getFluidStack(144), - 250, - 1000); - CORE.RA.addFluidExtractionRecipe( - NUCLIDE.LiFBeF2ZrF4UF4.getDust(1), - NUCLIDE.LiFBeF2ZrF4UF4.getFluidStack(144), - 150, - 1500); - CORE.RA.addFluidExtractionRecipe( - NUCLIDE.LiFBeF2ThF4UF4.getDust(1), - NUCLIDE.LiFBeF2ThF4UF4.getFluidStack(144), - 150, - 2000); - - //ZIRCONIUM_TETRAFLUORIDE - CORE.RA.addFluidExtractionRecipe( - FLUORIDES.ZIRCONIUM_TETRAFLUORIDE.getDust(1), - FLUORIDES.ZIRCONIUM_TETRAFLUORIDE.getFluidStack(144), - 200, - 512+256); - - } - - private static void macerator() { - - GT_ModHandler.addPulverisationRecipe( - ItemUtils.getItemStackOfAmountFromOreDict("pelletZirconium", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustZrCl4", 1)); - - } - - private static void mixerRecipes() { - - GT_Values.RA.addMixerRecipe( - ItemUtils.getItemStackOfAmountFromOreDict("dustUranium233", 4), - ItemUtils.getItemStackOfAmountFromOreDict("dustUranium235", 1), - null, - null, - FluidUtils.getFluidStack("hydrofluoricacid", 5000), - FLUORIDES.URANIUM_TETRAFLUORIDE.getFluidStack(5000), - null, - 3000, - 500); - - } - - - private static void sifter() { - - // Zirconium - GT_Values.RA.addSifterRecipe( - ItemUtils.getItemStackOfAmountFromOreDict("crushedPurifiedIlmenite", 1), - new ItemStack[] { - ItemUtils.getItemStackOfAmountFromOreDict("dustIron", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustTinyWroughtIron", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustZirconium", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustZirconium", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustHafnium", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustHafnium", 1) }, - new int[] { 5000, 2500, 1000, 1000, 300, 300 }, - 20 * 30, - 500); - GT_Values.RA.addSifterRecipe( - ItemUtils.getItemStackOfAmountFromOreDict("crushedPurifiedTin", 1), - new ItemStack[] { - ItemUtils.getItemStackOfAmountFromOreDict("dustTin", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustTinyZinc", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustZirconium", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustZirconium", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustZirconium", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustZirconium", 1) }, - new int[] { 10000, 5000, 1500, 1000, 500, 500 }, - 20 * 30, - 500); - GT_Values.RA.addSifterRecipe( - ItemUtils.getItemStackOfAmountFromOreDict("crushedPurifiedCassiterite", 1), - new ItemStack[] { - ItemUtils.getItemStackOfAmountFromOreDict("dustCassiterite", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustTinyTin", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustZirconium", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustZirconium", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustZirconium", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustZirconium", 1) }, - new int[] { 10000, 5000, 1500, 1000, 500, 500 }, - 20 * 30, - 500); - - // Radium - GT_Values.RA.addSifterRecipe( - ItemUtils.getItemStackOfAmountFromOreDict("crushedPurifiedUranium", 1), - new ItemStack[] { - ItemUtils.getItemStackOfAmountFromOreDict("dustUranium", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustTinyLead", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustRadium226", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustRadium226", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustRadium226", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustRadium226", 1) }, - new int[] { 10000, 5000, 1000, 500, 500, 500 }, - 20 * 30, - 500); - GT_Values.RA.addSifterRecipe( - ItemUtils.getItemStackOfAmountFromOreDict("crushedPurifiedUraninite", 1), - new ItemStack[] { - ItemUtils.getItemStackOfAmountFromOreDict("dustUraninite", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustTinyUranium", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustRadium226", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustRadium226", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustRadium226", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustRadium226", 1) }, - new int[] { 10000, 5000, 500, 250, 250, 250 }, - 20 * 30, - 500); - GT_Values.RA.addSifterRecipe( - ItemUtils.getItemStackOfAmountFromOreDict("crushedPurifiedPitchblende", 1), - new ItemStack[] { - ItemUtils.getItemStackOfAmountFromOreDict("dustPitchblende", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustTinyLead", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustRadium226", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustRadium226", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustRadium226", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustRadium226", 1) }, - new int[] { 10000, 5000, 500, 250, 250, 250 }, - 20 * 30, - 500); - } - - private static void fluidHeater() { - - CORE.RA.addFluidHeaterRecipe( - FLUORIDES.SODIUM_FLUORIDE.getDust(1), - null, - FLUORIDES.SODIUM_FLUORIDE.getFluidStack(144), - 20 * 30, - 500); - - } - + public static void generate() { + createRecipes(); + RecipeLoader_LFTR.generate(); + RecipeLoader_NuclearFuelProcessing.generate(); + } + + private static void createRecipes() { + autoclave(); + blastFurnace(); + centrifugeRecipes(); + chemicalBathRecipes(); + chemicalReactorRecipes(); + dehydratorRecipes(); + electroMagneticSeperator(); + fluidExtractorRecipes(); + fluidHeater(); + macerator(); + mixerRecipes(); + sifter(); + } + + private static void autoclave() { + + GT_Values.RA.addAutoclaveRecipe( + ItemUtils.getItemStackOfAmountFromOreDict("dustZirconium", 9), + FluidUtils.getFluidStack("chlorine", 9 * 4 * 144), + ItemUtils.getItemStackOfAmountFromOreDict("pelletZirconium", 9), + 0, + 120 * 20, + 30); + } + + private static void blastFurnace() { + + GT_Values.RA.addBlastRecipe( + FLUORIDES.LITHIUM_FLUORIDE.getDust(2), + FLUORIDES.BERYLLIUM_FLUORIDE.getDust(1), + GT_Values.NF, + GT_Values.NF, + NUCLIDE.Li2BeF4.getDust(3), + null, + 60 * 20, + 2000, + 3000); + + GT_Values.RA.addBlastRecipe( + ItemUtils.getItemStackOfAmountFromOreDict("dustZrCl4", 1), + null, + GT_Values.NF, + GT_Values.NF, + ItemUtils.getItemStackOfAmountFromOreDict("dustCookedZrCl4", 1), + null, + 60 * 20, + 340, + 300); + } + + private static void centrifugeRecipes() { + + // Process Used Fuel Rods for Krypton + + // Uranium + GT_Values.RA.addCentrifugeRecipe( + CI.getNumberedCircuit(20), + ItemUtils.getItemStackFromFQRN("IC2:reactorUraniumSimpledepleted", 8), + GT_Values.NF, + ELEMENT.getInstance().KRYPTON.getFluidStack(60), + ItemList.IC2_Fuel_Rod_Empty.get(8), + ELEMENT.getInstance().URANIUM238.getDust(2), + ELEMENT.getInstance().URANIUM232.getSmallDust(1), + ELEMENT.getInstance().URANIUM233.getSmallDust(1), + ELEMENT.getInstance().URANIUM235.getSmallDust(1), + ELEMENT.getInstance().PLUTONIUM239.getTinyDust(1), + new int[] {0, 0, 1000, 1000, 1000, 500}, + 500 * 20, + 4000); + // Mox + GT_Values.RA.addCentrifugeRecipe( + CI.getNumberedCircuit(20), + ItemUtils.getItemStackFromFQRN("IC2:reactorMOXSimpledepleted", 8), + GT_Values.NF, + ELEMENT.getInstance().KRYPTON.getFluidStack(90), + ItemList.IC2_Fuel_Rod_Empty.get(8), + ELEMENT.getInstance().PLUTONIUM244.getDust(2), + ELEMENT.getInstance().PLUTONIUM241.getTinyDust(1), + ELEMENT.getInstance().PLUTONIUM239.getTinyDust(1), + ELEMENT.getInstance().PLUTONIUM238.getTinyDust(1), + ELEMENT.getInstance().PLUTONIUM239.getTinyDust(1), + new int[] {0, 0, 500, 500, 500, 500}, + 750 * 20, + 4000); + + // Thorium + GT_Values.RA.addCentrifugeRecipe( + CI.getNumberedCircuit(20), + ItemList.Depleted_Thorium_1.get(8), + GT_Values.NF, + ELEMENT.getInstance().KRYPTON.getFluidStack(30), + ItemList.IC2_Fuel_Rod_Empty.get(8), + ELEMENT.getInstance().THORIUM.getDust(2), + ELEMENT.getInstance().THORIUM232.getDust(1), + ELEMENT.getInstance().LUTETIUM.getSmallDust(1), + ELEMENT.getInstance().POLONIUM.getSmallDust(1), + ELEMENT.getInstance().THALLIUM.getTinyDust(1), + new int[] {0, 0, 5000, 5000, 5000, 2500}, + 250 * 20, + 4000); + } + + private static void chemicalBathRecipes() { + + int[] chances = {9000, 6000, 3000}; + GT_Values.RA.addChemicalBathRecipe( + ItemUtils.getItemStackOfAmountFromOreDict("dustTin", 12), + FluidUtils.getFluidStack("chlorine", 2400), + ItemUtils.getItemStackOfAmountFromOreDict("dustZirconium", 3), + ItemUtils.getItemStackOfAmountFromOreDict("dustZirconium", 4), + ItemUtils.getItemStackOfAmountFromOreDict("dustZirconium", 5), + chances, + 30 * 20, + 480); + + chances = new int[] {9000, 3000, 1000}; + GT_Values.RA.addChemicalBathRecipe( + ItemUtils.getItemStackOfAmountFromOreDict("dustRutile", 5), + FluidUtils.getFluidStack("chlorine", 4000), + ItemUtils.getItemStackOfAmountFromOreDict("dustZirconium", 3), + ItemUtils.getItemStackOfAmountFromOreDict("dustTitanium", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustHafnium", 1), + chances, + 30 * 20, + 1024); + + GT_Values.RA.addChemicalBathRecipe( + ItemUtils.getItemStackOfAmountFromOreDict("dustLithiumCarbonate", 10), + FluidUtils.getFluidStack("hydrofluoricacid", 10 * 144), + ItemUtils.getItemStackOfAmountFromOreDict("dustLithiumFluoride", 10), + null, + null, + new int[] {}, + 90 * 20, + 500); + } + + private static void chemicalReactorRecipes() { + + ItemStack aGtHydrofluoricAcid = + ItemUtils.getItemStackOfAmountFromOreDictNoBroken("cellHydrofluoricAcid_GT5U", 2); + + GT_Values.RA.addChemicalRecipe( + ItemUtils.getItemStackOfAmountFromOreDict("dustLithiumCarbonate", 5), // Input + ItemUtils.getItemStackOfAmountFromOreDict("dustCalciumHydroxide", 5), // Input + null, // Fluid Input + null, // Fluid Output + ItemUtils.getItemStackOfAmountFromOreDict("dustLi2CO3CaOH2", 10), + 600 * 20); + + GT_Values.RA.addChemicalRecipe( + ItemUtils.getItemStackOfAmountFromOreDict("dustLithiumHydroxide", 5), // Input + null, // Input Stack 2 + FluidUtils.getFluidStack("hydrofluoricacid", 5 * 144), + FluidUtils.getFluidStack("water", 5 * 144), // Fluid Output + ItemUtils.getItemStackOfAmountFromOreDict("dustLithiumFluoride", 5), + 600 * 20); + + GT_Values.RA.addChemicalRecipe( + ItemUtils.getItemStackOfAmountFromOreDict("dustLithium7", 1), + null, + FluidUtils.getFluidStack("sulfuricacid", 144 * 8), + FluidUtils.getFluidStack("sulfuriclithium", 144 * 2), + ItemUtils.getItemStackOfAmountFromOreDict("dustSmallLithium7", 1), + 20 * 20); + + GT_Values.RA.addChemicalRecipe( + ItemUtils.getItemStackOfAmountFromOreDict("cellOxygen", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustLithium7", 16), + FluidUtils.getFluidStack("water", 1000), + FluidUtils.getFluidStack("lithiumhydroxide", 144 * 4), + CI.emptyCells(1), + 300 * 20); + + // LFTR Fuel Related Compounds + if (GTNH) { + // Hydroxide + GT_Values.RA.addChemicalRecipe( + ItemUtils.getGregtechCircuit(3), + ELEMENT.getInstance().OXYGEN.getCell(1), + ELEMENT.getInstance().HYDROGEN.getFluidStack(1000), + MISC_MATERIALS.HYDROXIDE.getFluidStack(2000), + CI.emptyCells(1), + GT_Values.NI, + 8 * 20, + 30); + // Beryllium Hydroxide + GT_Values.RA.addChemicalRecipe( + ItemUtils.getGregtechCircuit(3), + ELEMENT.getInstance().BERYLLIUM.getDust(7), + MISC_MATERIALS.HYDROXIDE.getFluidStack(1000), + FLUORIDES.BERYLLIUM_HYDROXIDE.getFluidStack(2000), + GT_Values.NI, + 8 * 20, + 30); + // Ammonium Bifluoride + GT_Values.RA.addChemicalRecipe( + ItemUtils.getGregtechCircuit(3), + ItemUtils.getItemStackOfAmountFromOreDict("cellHydrofluoricAcid", 1), + MISC_MATERIALS.AMMONIUM.getFluidStack(1000), + FLUORIDES.AMMONIUM_BIFLUORIDE.getFluidStack(2000), + CI.emptyCells(1), + 20 * 20, + 30); + if (aGtHydrofluoricAcid != null) { + // Ammonium Bifluoride + GT_Values.RA.addChemicalRecipe( + ItemUtils.getGregtechCircuit(3), + aGtHydrofluoricAcid, + MISC_MATERIALS.AMMONIUM.getFluidStack(1000), + FLUORIDES.AMMONIUM_BIFLUORIDE.getFluidStack(2000), + CI.emptyCells(2), + 40 * 20, + 30); + } + // Ammonium + GT_Values.RA.addChemicalRecipe( + ItemUtils.getGregtechCircuit(3), + ELEMENT.getInstance().HYDROGEN.getCell(1), + MISC_MATERIALS.AMMONIA.getFluidStack(1000), + MISC_MATERIALS.AMMONIUM.getFluidStack(2000), + CI.emptyCells(1), + GT_Values.NI, + 20 * 20, + 30); + } + + if (!GTNH) { + // Hydroxide + GT_Values.RA.addChemicalRecipe( + ItemUtils.getGregtechCircuit(3), + ELEMENT.getInstance().OXYGEN.getCell(1), + ELEMENT.getInstance().HYDROGEN.getFluidStack(1000), + MISC_MATERIALS.HYDROXIDE.getFluidStack(2000), + CI.emptyCells(1), + GT_Values.NI, + 8 * 20, + 30); + // Beryllium Hydroxide + GT_Values.RA.addChemicalRecipe( + ItemUtils.getGregtechCircuit(3), + ELEMENT.getInstance().BERYLLIUM.getDust(7), + MISC_MATERIALS.HYDROXIDE.getFluidStack(1000), + FLUORIDES.BERYLLIUM_HYDROXIDE.getFluidStack(2000), + GT_Values.NI, + 8 * 20, + 30); + // Ammonium Bifluoride + GT_Values.RA.addChemicalRecipe( + ItemUtils.getGregtechCircuit(3), + ItemUtils.getItemStackOfAmountFromOreDict("cellHydrofluoricAcid", 1), + MISC_MATERIALS.AMMONIUM.getFluidStack(1000), + FLUORIDES.AMMONIUM_BIFLUORIDE.getFluidStack(3000), + CI.emptyCells(1), + 20 * 20, + 30); + + if (aGtHydrofluoricAcid != null) { + // Ammonium Bifluoride + GT_Values.RA.addChemicalRecipe( + ItemUtils.getGregtechCircuit(3), + aGtHydrofluoricAcid, + MISC_MATERIALS.AMMONIUM.getFluidStack(1000), + FLUORIDES.AMMONIUM_BIFLUORIDE.getFluidStack(2000), + CI.emptyCells(2), + 40 * 20, + 30); + } + + // Ammonium + GT_Values.RA.addChemicalRecipe( + ItemUtils.getGregtechCircuit(3), + ELEMENT.getInstance().HYDROGEN.getCell(1), + MISC_MATERIALS.AMMONIA.getFluidStack(1000), + MISC_MATERIALS.AMMONIUM.getFluidStack(2000), + CI.emptyCells(1), + GT_Values.NI, + 20 * 20, + 30); + // Ammonia + GT_Values.RA.addChemicalRecipe( + ItemUtils.getItemStackOfAmountFromOreDict("cellHydrogen", 3), + ItemUtils.getItemStackOfAmountFromOreDict("dustMagnetite", 0), + FluidUtils.getFluidStack("nitrogen", 1000), + FluidUtils.getFluidStack("ammonia", 1000), + CI.emptyCells(3), + 14 * 20); + } + + // Technetium + GT_Values.RA.addChemicalRecipe( + CI.getNumberedAdvancedCircuit(22), + ItemUtils.getItemStackOfAmountFromOreDict("dustTechnetium99", 1), + FluidUtils.getFluidStack("sulfuricacid", 1000), + FluidUtils.getFluidStack("sulfuricacid", 144 * 2), + ItemUtils.getItemStackOfAmountFromOreDict("dustTechnetium", 1), + 100 * 20); + + // Sodium Hydroxide + GT_Values.RA.addChemicalRecipe( + CI.getNumberedBioCircuit(15), + ItemUtils.getItemStackOfAmountFromOreDict("dustSodiumHydroxide", 1), + FluidUtils.getFluidStack("hydrofluoricacid", 500), + FluidUtils.getWater(1000), + FLUORIDES.SODIUM_FLUORIDE.getDust(1), + 60 * 20); + + if (FluidUtils.doesFluidExist("hydrofluoricacid_gt5u")) { + GT_Values.RA.addChemicalRecipe( + CI.getNumberedBioCircuit(15), + ItemUtils.getItemStackOfAmountFromOreDict("dustSodiumHydroxide", 1), + FluidUtils.getFluidStack("hydrofluoricacid_gt5u", 1000), + FluidUtils.getWater(1000), + FLUORIDES.SODIUM_FLUORIDE.getDust(1), + 60 * 20); + } + } + + private static void dehydratorRecipes() { + + // Makes 7-Lithium + CORE.RA.addDehydratorRecipe( + new ItemStack[] { + CI.getNumberedAdvancedCircuit(14), + ItemUtils.getItemStackOfAmountFromOreDict("cellSulfuricLithium", 1) + }, + FluidUtils.getFluidStack("sulfuriclithium", 440), + null, + new ItemStack[] { + CI.emptyCells(1), + ItemUtils.getItemStackOfAmountFromOreDict("dustSulfur", 3), + ItemUtils.getItemStackOfAmountFromOreDict("dustCopper", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustSodium", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustCarbon", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustLithium7", 4) + }, + new int[] {10000, 10000, 10000, 10000, 10000}, + 30 * 20, + 30); + + // Makes Lithium Carbonate + CORE.RA.addDehydratorRecipe( + new ItemStack[] {CI.emptyCells(12), ItemUtils.getItemStackOfAmountFromOreDict("dustLepidolite", 20) + }, // Item input (Array, up to 2) + FluidUtils.getFluidStack("sulfuricacid", 10000), + FluidUtils.getFluidStack("sulfuriclithium", 10000), + new ItemStack[] { + ItemUtils.getItemStackOfAmountFromOreDict("dustPotassium", 1), + GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Aluminium, 4), + ItemUtils.getItemStackOfAmountFromOreDict("cellOxygen", 10), + ItemUtils.getItemStackOfAmountFromOreDict("cellFluorine", 2), + ItemUtils.getItemStackOfAmountFromOreDict("dustLithiumCarbonate", 3), // LithiumCarbonate + }, // Output Array of Items - Upto 9, + new int[] {10000, 10000, 10000, 10000, 10000}, + 75 * 20, // Time in ticks + 1000); // EU + + // Calcium Hydroxide + if ((ItemUtils.checkForInvalidItems(ItemUtils.getItemStackOfAmountFromOreDict("dustQuicklime", 1))) + || LoadedMods.IHL) { + // CaO + H2O = Ca(OH)2 + CORE.RA.addDehydratorRecipe( + new ItemStack[] { + CI.getNumberedBioCircuit(20), ItemUtils.getItemStackOfAmountFromOreDict("dustQuicklime", 2) + }, + FluidUtils.getFluidStack("water", 1000), + null, // Fluid output (slot 2) + new ItemStack[] {ItemUtils.getItemStackOfAmountFromOreDict("dustCalciumHydroxide", 5)}, // Output + new int[] {10000}, + 12 * 20, // Time in ticks + 120); // EU + } else { + Logger.INFO("[dustCalciumHydroxide] FAILED TO LOAD RECIPE"); + if (!ItemUtils.checkForInvalidItems(ItemUtils.getItemStackOfAmountFromOreDict("dustQuicklime", 1))) { + Logger.INFO("Could not find dustQuicklime, cannot make dustCalciumHydroxide."); + } else if (!LoadedMods.IHL) { + Logger.INFO("IHL not loaded."); + } + } + + // 2 LiOH + CaCO3 + CORE.RA.addDehydratorRecipe( + new ItemStack[] { + CI.getNumberedAdvancedCircuit(20), ItemUtils.getItemStackOfAmountFromOreDict("dustLi2CO3CaOH2", 5) + }, // Item + null, // Fluid input (slot 1) + null, // Fluid output (slot 2) + new ItemStack[] { + ItemUtils.getItemStackOfAmountFromOreDict("dustLithiumHydroxide", 2), + ItemUtils.getItemStackOfAmountFromOreDict("dustCalciumCarbonate", 3) + }, // Output + new int[] {10000, 10000}, + 120 * 20, // Time in ticks + 1000); // EU + + // LiOH Liquid to Dust + CORE.RA.addDehydratorRecipe( + new ItemStack[] {CI.getNumberedAdvancedCircuit(22)}, + FluidUtils.getFluidStack("lithiumhydroxide", 144), + null, + new ItemStack[] {ItemUtils.getItemStackOfAmountFromOreDict("dustLithiumHydroxide", 1)}, + new int[] {10000}, + 1 * 20, // Time in ticks + 64); // EU + + // Zirconium Chloride -> TetraFluoride + FluidStack aHydrogenChloride = new FluidStack(GenericChem.HydrochloricAcid, 9000); + CORE.RA.addDehydratorRecipe( + new ItemStack[] { + CI.getNumberedAdvancedCircuit(11), ItemUtils.getItemStackOfAmountFromOreDict("dustCookedZrCl4", 9), + }, // Item + FluidUtils.getFluidStack("hydrofluoricacid", 9 * 144), + aHydrogenChloride, + new ItemStack[] {FLUORIDES.ZIRCONIUM_TETRAFLUORIDE.getDust(9)}, + new int[] {10000}, + 120 * 20, // Time in ticks + 500); // EU + + // Zirconium Chloride -> TetraFluoride + FluidStack aGregtechHydro = FluidUtils.getFluidStack("hydrofluoricacid_gt5u", 1); + if (aGregtechHydro != null || Utils.getGregtechVersionAsInt() >= 50929) { + CORE.RA.addDehydratorRecipe( + new ItemStack[] { + CI.getNumberedAdvancedCircuit(10), + ItemUtils.getItemStackOfAmountFromOreDict("dustCookedZrCl4", 9) + }, + FluidUtils.getFluidStack("hydrofluoricacid_gt5u", 18 * 144), + aHydrogenChloride, + new ItemStack[] {FLUORIDES.ZIRCONIUM_TETRAFLUORIDE.getDust(9)}, + new int[] {10000}, + 240 * 20, // Time in ticks + 500); // EU + } + + // Be(OH)2 + 2 (NH4)HF2 → (NH4)2BeF4 + 2 H2O + CORE.RA.addDehydratorRecipe( + new ItemStack[] {CI.getNumberedAdvancedCircuit(6), FLUORIDES.AMMONIUM_BIFLUORIDE.getCell(4)}, + FLUORIDES.BERYLLIUM_HYDROXIDE.getFluidStack(2000), // Fluid input (slot 1) + FLUORIDES.AMMONIUM_TETRAFLUOROBERYLLATE.getFluidStack(6000), + new ItemStack[] {ItemUtils.getItemStackOfAmountFromOreDict("cellWater", 4)}, + new int[] {10000}, + 32 * 20, // Time in ticks + 64); // EU + + // (NH4)2BeF4 → 2 NH3 + 2 HF + BeF2 + CORE.RA.addDehydratorRecipe( + new ItemStack[] {CI.getNumberedAdvancedCircuit(17), CI.emptyCells(5)}, + FLUORIDES.AMMONIUM_TETRAFLUOROBERYLLATE.getFluidStack(5000), + null, + new ItemStack[] { + MISC_MATERIALS.AMMONIA.getCell(2), + ItemUtils.getItemStackOfAmountFromOreDict("cellHydrofluoricAcid", 2), + FLUORIDES.BERYLLIUM_FLUORIDE.getCell(1) + }, + new int[] {10000, 10000, 10000}, + 5 * 60 * 20, + 120); + } + + private static void electroMagneticSeperator() { + + // Zirconium + GT_Values.RA.addElectromagneticSeparatorRecipe( + ItemUtils.getItemStackOfAmountFromOreDict("crushedPurifiedBauxite", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustBauxite", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustSmallRutile", 1), + ItemUtils.getItemStackOfAmountFromOreDict("nuggetZirconium", 1), + new int[] {10000, 2500, 4000}, + 20 * 20, + 24); + + // Zircon + GT_Values.RA.addElectromagneticSeparatorRecipe( + ItemUtils.getItemStackOfAmountFromOreDict("crushedPurifiedMagnetite", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustMagnetite", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustSmallZircon", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustTinyZircon", 1), + new int[] {10000, 1250, 2500}, + 20 * 20, + 24); + GT_Values.RA.addElectromagneticSeparatorRecipe( + ItemUtils.getItemStackOfAmountFromOreDict("crushedPurifiedCassiterite", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustCassiterite", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustSmallZircon", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustTinyZircon", 1), + new int[] {10000, 1250, 2500}, + 20 * 20, + 24); + } + + private static void fluidExtractorRecipes() { + + // FLiBe fuel + CORE.RA.addFluidExtractionRecipe(NUCLIDE.Li2BeF4.getDust(1), NUCLIDE.Li2BeF4.getFluidStack(144), 100, 500); + // Lithium Fluoride + CORE.RA.addFluidExtractionRecipe( + ItemUtils.getItemStackOfAmountFromOreDict("dustLithiumFluoride", 1), + FLUORIDES.LITHIUM_FLUORIDE.getFluidStack(144), + 100, + 500); + // LFTR Fuel 1 + CORE.RA.addFluidExtractionRecipe( + NUCLIDE.LiFBeF2ZrF4U235.getDust(1), NUCLIDE.LiFBeF2ZrF4U235.getFluidStack(144), 250, 1000); + CORE.RA.addFluidExtractionRecipe( + NUCLIDE.LiFBeF2ZrF4UF4.getDust(1), NUCLIDE.LiFBeF2ZrF4UF4.getFluidStack(144), 150, 1500); + CORE.RA.addFluidExtractionRecipe( + NUCLIDE.LiFBeF2ThF4UF4.getDust(1), NUCLIDE.LiFBeF2ThF4UF4.getFluidStack(144), 150, 2000); + + // ZIRCONIUM_TETRAFLUORIDE + CORE.RA.addFluidExtractionRecipe( + FLUORIDES.ZIRCONIUM_TETRAFLUORIDE.getDust(1), + FLUORIDES.ZIRCONIUM_TETRAFLUORIDE.getFluidStack(144), + 200, + 512 + 256); + } + + private static void macerator() { + + GT_ModHandler.addPulverisationRecipe( + ItemUtils.getItemStackOfAmountFromOreDict("pelletZirconium", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustZrCl4", 1)); + } + + private static void mixerRecipes() { + + GT_Values.RA.addMixerRecipe( + ItemUtils.getItemStackOfAmountFromOreDict("dustUranium233", 4), + ItemUtils.getItemStackOfAmountFromOreDict("dustUranium235", 1), + null, + null, + FluidUtils.getFluidStack("hydrofluoricacid", 5000), + FLUORIDES.URANIUM_TETRAFLUORIDE.getFluidStack(5000), + null, + 3000, + 500); + } + + private static void sifter() { + + // Zirconium + GT_Values.RA.addSifterRecipe( + ItemUtils.getItemStackOfAmountFromOreDict("crushedPurifiedIlmenite", 1), + new ItemStack[] { + ItemUtils.getItemStackOfAmountFromOreDict("dustIron", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustTinyWroughtIron", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustZirconium", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustZirconium", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustHafnium", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustHafnium", 1) + }, + new int[] {5000, 2500, 1000, 1000, 300, 300}, + 20 * 30, + 500); + GT_Values.RA.addSifterRecipe( + ItemUtils.getItemStackOfAmountFromOreDict("crushedPurifiedTin", 1), + new ItemStack[] { + ItemUtils.getItemStackOfAmountFromOreDict("dustTin", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustTinyZinc", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustZirconium", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustZirconium", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustZirconium", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustZirconium", 1) + }, + new int[] {10000, 5000, 1500, 1000, 500, 500}, + 20 * 30, + 500); + GT_Values.RA.addSifterRecipe( + ItemUtils.getItemStackOfAmountFromOreDict("crushedPurifiedCassiterite", 1), + new ItemStack[] { + ItemUtils.getItemStackOfAmountFromOreDict("dustCassiterite", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustTinyTin", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustZirconium", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustZirconium", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustZirconium", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustZirconium", 1) + }, + new int[] {10000, 5000, 1500, 1000, 500, 500}, + 20 * 30, + 500); + + // Radium + GT_Values.RA.addSifterRecipe( + ItemUtils.getItemStackOfAmountFromOreDict("crushedPurifiedUranium", 1), + new ItemStack[] { + ItemUtils.getItemStackOfAmountFromOreDict("dustUranium", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustTinyLead", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustRadium226", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustRadium226", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustRadium226", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustRadium226", 1) + }, + new int[] {10000, 5000, 1000, 500, 500, 500}, + 20 * 30, + 500); + GT_Values.RA.addSifterRecipe( + ItemUtils.getItemStackOfAmountFromOreDict("crushedPurifiedUraninite", 1), + new ItemStack[] { + ItemUtils.getItemStackOfAmountFromOreDict("dustUraninite", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustTinyUranium", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustRadium226", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustRadium226", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustRadium226", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustRadium226", 1) + }, + new int[] {10000, 5000, 500, 250, 250, 250}, + 20 * 30, + 500); + GT_Values.RA.addSifterRecipe( + ItemUtils.getItemStackOfAmountFromOreDict("crushedPurifiedPitchblende", 1), + new ItemStack[] { + ItemUtils.getItemStackOfAmountFromOreDict("dustPitchblende", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustTinyLead", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustRadium226", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustRadium226", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustRadium226", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustRadium226", 1) + }, + new int[] {10000, 5000, 500, 250, 250, 250}, + 20 * 30, + 500); + } + + private static void fluidHeater() { + + CORE.RA.addFluidHeaterRecipe( + FLUORIDES.SODIUM_FLUORIDE.getDust(1), null, FLUORIDES.SODIUM_FLUORIDE.getFluidStack(144), 20 * 30, 500); + } } diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/recipe/RecipeLoader_NuclearFuelProcessing.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/recipe/RecipeLoader_NuclearFuelProcessing.java index c2c8c01f45..ae1f019ed4 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/recipe/RecipeLoader_NuclearFuelProcessing.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/recipe/RecipeLoader_NuclearFuelProcessing.java @@ -14,359 +14,338 @@ import gtPlusPlus.core.util.minecraft.MaterialUtils; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; -public class RecipeLoader_NuclearFuelProcessing { - - public static void generate() { - - // Create Fuels - - final FluidStack aLithiumFluoride = FLUORIDES.LITHIUM_FLUORIDE.getFluidStack(100); - final FluidStack aBerylliumFluoride = FLUORIDES.BERYLLIUM_FLUORIDE.getFluidStack(100); - final FluidStack aThoriumFluoride = FLUORIDES.THORIUM_TETRAFLUORIDE.getFluidStack(100); - final FluidStack aZirconiumFluoride = FLUORIDES.ZIRCONIUM_TETRAFLUORIDE.getFluidStack(100); - final FluidStack aUraniumTetraFluoride = FLUORIDES.URANIUM_TETRAFLUORIDE.getFluidStack(100); - final FluidStack aUranium235 = ELEMENT.getInstance().URANIUM235.getFluidStack(1000); - final FluidStack aLiFBeF2ZrF4U235 = NUCLIDE.LiFBeF2ZrF4U235.getFluidStack(100); - final FluidStack aLiFBeF2ZrF4UF4 = NUCLIDE.LiFBeF2ZrF4UF4.getFluidStack(100); - final FluidStack aLiFBeF2ThF4UF4 = NUCLIDE.LiFBeF2ThF4UF4.getFluidStack(100); - - // 7LiF - BeF2 - ZrF4 - U235 - 590C - CORE.RA.addFissionFuel( - FluidUtils.getFluidStack(aLithiumFluoride, 550), - FluidUtils.getFluidStack(aBerylliumFluoride, 150), - FluidUtils.getFluidStack(aZirconiumFluoride, 60), - FluidUtils.getFluidStack(aUranium235, 240), - null, null, null, null, null, // Extra 5 inputs - FluidUtils.getFluidStack(aLiFBeF2ZrF4U235, 1000), - null, - 90 * 60 * 20, // Duration - MaterialUtils.getVoltageForTier(4) - ); - - // 7LiF - BeF2 - ZrF4 - UF4 - 650C - CORE.RA.addFissionFuel( - FluidUtils.getFluidStack(aLithiumFluoride, 600), - FluidUtils.getFluidStack(aBerylliumFluoride, 250), - FluidUtils.getFluidStack(aZirconiumFluoride, 80), - FluidUtils.getFluidStack(aUraniumTetraFluoride, 70), - null, null, null, null, null, // Extra 5 inputs - FluidUtils.getFluidStack(aLiFBeF2ZrF4UF4, 1000), - null, - 120 * 60 * 20, - MaterialUtils.getVoltageForTier(5) - ); - - // 7liF - BeF2 - ThF4 - UF4 - 566C - CORE.RA.addFissionFuel( - FluidUtils.getFluidStack(aLithiumFluoride, 580), - FluidUtils.getFluidStack(aBerylliumFluoride, 270), - FluidUtils.getFluidStack(aThoriumFluoride, 80), - FluidUtils.getFluidStack(aUraniumTetraFluoride, 70), - null, null, null, null, null, // Extra 5 inputs - FluidUtils.getFluidStack(aLiFBeF2ThF4UF4, 1000), - null, - 150 * 60 * 20, // Duration - MaterialUtils.getVoltageForTier(5) - ); - - - // Reprocess Fuels - - - // Reactor Blanket step 1 - Fluorination - CORE.RA.addReactorProcessingUnitRecipe( - CI.getNumberedAdvancedCircuit(17), - ELEMENT.getInstance().FLUORINE.getCell(6), - NUCLIDE.LiFThF4.getFluidStack(10000), - new ItemStack[] { - CI.emptyCells(5), - FLUORIDES.LITHIUM_FLUORIDE.getCell(1), - ItemUtils.getSimpleStack(ModItems.dustProtactinium233), - ItemUtils.getSimpleStack(ModItems.dustProtactinium233), - ItemUtils.getSimpleStack(ModItems.dustProtactinium233), - ItemUtils.getSimpleStack(ModItems.dustProtactinium233), - ItemUtils.getSimpleStack(ModItems.dustProtactinium233), - ItemUtils.getSimpleStack(ModItems.dustProtactinium233) - }, - new int[] {10000, 10000, 500, 500, 500, 250, 250, 250}, - NUCLIDE.UF6F2.getFluidStack(1500), - 20 * 60 * 10, - MaterialUtils.getVoltageForTier(5)); - CORE.RA.addReactorProcessingUnitRecipe( - CI.getNumberedAdvancedCircuit(18), - ELEMENT.getInstance().FLUORINE.getCell(6), - NUCLIDE.LiFBeF2ThF4.getFluidStack(10000), - new ItemStack[] { - CI.emptyCells(4), - FLUORIDES.LITHIUM_FLUORIDE.getCell(1), - FLUORIDES.BERYLLIUM_FLUORIDE.getCell(1), - ItemUtils.getSimpleStack(ModItems.dustProtactinium233), - ItemUtils.getSimpleStack(ModItems.dustProtactinium233), - ItemUtils.getSimpleStack(ModItems.dustProtactinium233), - ItemUtils.getSimpleStack(ModItems.dustProtactinium233), - ItemUtils.getSimpleStack(ModItems.dustProtactinium233), - ItemUtils.getSimpleStack(ModItems.dustProtactinium233) - }, - new int[] {10000, 10000, 10000, 1000, 1000, 1000, 500, 500, 500}, - NUCLIDE.UF6F2.getFluidStack(3000), - 20 * 60 * 10, - MaterialUtils.getVoltageForTier(5)); - - // Reactor Blanket step 1 - Fluorination - CORE.RA.addReactorProcessingUnitRecipe( - CI.getNumberedAdvancedCircuit(7), - ELEMENT.getInstance().FLUORINE.getCell(6), - NUCLIDE.Sparged_LiFThF4.getFluidStack(10000), - new ItemStack[] { - CI.emptyCells(4), - FLUORIDES.LITHIUM_FLUORIDE.getCell(2), - ItemUtils.getSimpleStack(ModItems.dustProtactinium233), - ItemUtils.getSimpleStack(ModItems.dustProtactinium233), - ItemUtils.getSimpleStack(ModItems.dustProtactinium233), - ItemUtils.getSimpleStack(ModItems.dustProtactinium233), - ItemUtils.getSimpleStack(ModItems.dustProtactinium233), - ItemUtils.getSimpleStack(ModItems.dustProtactinium233) - }, - new int[] {10000, 10000, 1000, 1000, 1000, 1000, 1000, 1000}, - NUCLIDE.UF6F2.getFluidStack(3000), - 20 * 60 * 5, - MaterialUtils.getVoltageForTier(5)); - CORE.RA.addReactorProcessingUnitRecipe( - CI.getNumberedAdvancedCircuit(8), - ELEMENT.getInstance().FLUORINE.getCell(6), - NUCLIDE.Sparged_LiFBeF2ThF4.getFluidStack(10000), - new ItemStack[] { - CI.emptyCells(2), - FLUORIDES.LITHIUM_FLUORIDE.getCell(2), - FLUORIDES.BERYLLIUM_FLUORIDE.getCell(2), - ItemUtils.getSimpleStack(ModItems.dustProtactinium233), - ItemUtils.getSimpleStack(ModItems.dustProtactinium233), - ItemUtils.getSimpleStack(ModItems.dustProtactinium233), - ItemUtils.getSimpleStack(ModItems.dustProtactinium233), - ItemUtils.getSimpleStack(ModItems.dustProtactinium233), - ItemUtils.getSimpleStack(ModItems.dustProtactinium233) - }, - new int[] {10000, 10000, 10000, 2000, 2000, 2000, 2000, 2000, 2000}, - NUCLIDE.UF6F2.getFluidStack(6000), - 20 * 60 * 5, - MaterialUtils.getVoltageForTier(5)); - - - // Reactor Blanket step 2 - Sorption + Cold Trap - CORE.RA.addColdTrapRecipe( - 8, - FLUORIDES.SODIUM_FLUORIDE.getCell(4), - NUCLIDE.UF6F2.getFluidStack(3000), - new ItemStack[] { - ELEMENT.getInstance().FLUORINE.getCell(2), - FLUORIDES.URANIUM_HEXAFLUORIDE.getCell(2), - ELEMENT.getInstance().URANIUM233.getDust(1), - ELEMENT.getInstance().URANIUM233.getDust(1), - ELEMENT.getInstance().URANIUM233.getDust(1) - }, - new int[] {10000, 10000, 3000, 2000, 1000}, - FLUORIDES.SODIUM_FLUORIDE.getFluidStack(2000), - 20 * 60 * 10, - MaterialUtils.getVoltageForTier(3)); - - - - - // Reactor Core step 0 - Process Burnt Salt - // Tier 1 Fuel - Gives back FLIBE and breeds U233 - /* CORE.RA.addReactorProcessingUnitRecipe( - CI.getNumberedAdvancedCircuit(1), - CI.emptyCells(2), - new FluidStack(NuclearChem.Burnt_LiFBeF2ZrF4U235, 4000), - new ItemStack[] { - FLUORIDES.LITHIUM_FLUORIDE.getCell(1), - ELEMENT.getInstance().URANIUM233.getCell(1) - }, - new int[] {10000, 10000}, - NUCLIDE.LiFBeF2.getFluidStack(2000), - 20 * 60 * 60, - MaterialUtils.getVoltageForTier(3));*/ - - - - // LiBeF2UF4FP + F2 = LiFBeF2 & UF6F2FP - // Reactor Core step 1 - Process Burnt Salt - CORE.RA.addReactorProcessingUnitRecipe( - CI.getNumberedAdvancedCircuit(1), - ELEMENT.getInstance().FLUORINE.getCell(1), - NUCLIDE.LiFBeF2UF4FP.getFluidStack(1000), - new ItemStack[] { - NUCLIDE.UF6F2FP.getCell(1) - }, - new int[] {10000}, - FluidUtils.getFluidStack(NuclearChem.Impure_LiFBeF2, 1000), - 20 * 60 * 120, - MaterialUtils.getVoltageForTier(3)); - - // LiBeF2UF4FP + F2 = LiFBeF2 & UF6F2FP - // Reactor Core step 1 - Process Burnt Salt - CORE.RA.addReactorProcessingUnitRecipe( - CI.getNumberedAdvancedCircuit(1), - ELEMENT.getInstance().FLUORINE.getCell(3), - NUCLIDE.Sparged_LiFBeF2UF4FP.getFluidStack(1000), - new ItemStack[] { - CI.emptyCells(1), - NUCLIDE.UF6F2FP.getCell(2) - }, - new int[] {10000}, - FluidUtils.getFluidStack(NuclearChem.Impure_LiFBeF2, 2000), - 20 * 60 * 60, - MaterialUtils.getVoltageForTier(3)); - - - - // Reactor Core step 2A - Sorption + Cold Trap - CORE.RA.addColdTrapRecipe( - 8, - FLUORIDES.SODIUM_FLUORIDE.getCell(3), - NUCLIDE.UF6F2FP.getFluidStack(2000), - new ItemStack[] { - ELEMENT.getInstance().FLUORINE.getCell(1), - FLUORIDES.URANIUM_HEXAFLUORIDE.getCell(2), - ELEMENT.getInstance().PHOSPHORUS.getDust(1), - ELEMENT.getInstance().PHOSPHORUS.getDust(1), - ELEMENT.getInstance().PHOSPHORUS.getDust(1), - ELEMENT.getInstance().PHOSPHORUS.getDust(1), - ELEMENT.getInstance().PHOSPHORUS.getDust(1), - ELEMENT.getInstance().PHOSPHORUS.getDust(1), - ELEMENT.getInstance().PHOSPHORUS.getDust(1) - }, - new int[] {10000, 10000, 5000, 5000, 5000, 5000, 5000, 5000, 5000}, - FLUORIDES.SODIUM_FLUORIDE.getFluidStack(2000), - 20 * 60 * 10, - MaterialUtils.getVoltageForTier(4)); - - - // Reactor Core step 2B - Distillation - GT_Values.RA.addDistillationTowerRecipe( - FluidUtils.getFluidStack(NuclearChem.Impure_LiFBeF2, 1000), - new FluidStack[] { - NUCLIDE.LiFBeF2.getFluidStack(250) - }, - null, - 120 * 60 * 20, - MaterialUtils.getVoltageForTier(3)); - - - // UF6 -> UF4 reduction - // UF6 + LiFBeF2 + H2 -> LiFBeF2UF4 + HF - CORE.RA.addBlastRecipe( - new ItemStack[] { - FLUORIDES.URANIUM_HEXAFLUORIDE.getCell(1), - NUCLIDE.LiFBeF2.getCell(1) - }, - new FluidStack[] { - ELEMENT.getInstance().HYDROGEN.getFluidStack(2000) - }, - new ItemStack[] { - ItemUtils.getItemStackOfAmountFromOreDict("cellHydrofluoricAcid", 2), - CI.emptyCells(1) - }, - new FluidStack[] { - NUCLIDE.LiFBeF2UF4.getFluidStack(3000) - }, - 20 * 60 * 10, - MaterialUtils.getVoltageForTier(4), - 6500); - - - - - // LiFBeF2ZrF4U235 - We can't add both ZrF4 and U235 here, so best we leave this disabled. - /*CORE.RA.addReactorProcessingUnitRecipe( - CI.getNumberedAdvancedCircuit(8), - NUCLIDE.LiFBeF2UF4.getCell(9), - ELEMENT.getInstance().URANIUM235.getFluidStack(1000), - new ItemStack[] { - CI.emptyCells(9) - }, - new int[] {10000}, - NUCLIDE.LiFBeF2ZrF4U235.getFluidStack(10000), - 20 * 60 * 5, - MaterialUtils.getVoltageForTier(4));*/ - - // LiFBeF2ZrF4UF4 - /*CORE.RA.addReactorProcessingUnitRecipe( - CI.getNumberedAdvancedCircuit(9), - NUCLIDE.LiFBeF2UF4.getCell(9), - FLUORIDES.ZIRCONIUM_TETRAFLUORIDE.getFluidStack(1000), - new ItemStack[] { - CI.emptyCells(9) - }, - new int[] {10000}, - NUCLIDE.LiFBeF2ZrF4UF4.getFluidStack(10000), - 20 * 60 * 5, - MaterialUtils.getVoltageForTier(5)); - - CORE.RA.addReactorProcessingUnitRecipe( - CI.getNumberedAdvancedCircuit(9), - FLUORIDES.ZIRCONIUM_TETRAFLUORIDE.getCell(1), - NUCLIDE.LiFBeF2UF4.getFluidStack(9000), - new ItemStack[] { - CI.emptyCells(1) - }, - new int[] {10000}, - NUCLIDE.LiFBeF2ZrF4UF4.getFluidStack(10000), - 20 * 60 * 5, - MaterialUtils.getVoltageForTier(5));*/ - - CORE.RA.addFissionFuel( - FLUORIDES.ZIRCONIUM_TETRAFLUORIDE.getFluidStack(1000), - NUCLIDE.LiFBeF2UF4.getFluidStack(9000), - null, - null, - null, null, null, null, null, - NUCLIDE.LiFBeF2ZrF4UF4.getFluidStack(10000), - null, - 20 * 60 * 120, // Duration - MaterialUtils.getVoltageForTier(5) - ); - - // LiFBeF2ThF4UF4 - /*CORE.RA.addReactorProcessingUnitRecipe( - CI.getNumberedAdvancedCircuit(10), - NUCLIDE.LiFBeF2UF4.getCell(9), - FLUORIDES.THORIUM_TETRAFLUORIDE.getFluidStack(1000), - new ItemStack[] { - CI.emptyCells(9) - }, - new int[] {10000}, - NUCLIDE.LiFBeF2ThF4UF4.getFluidStack(10000), - 20 * 60 * 5, - MaterialUtils.getVoltageForTier(5)); - - CORE.RA.addReactorProcessingUnitRecipe( - CI.getNumberedAdvancedCircuit(10), - FLUORIDES.THORIUM_TETRAFLUORIDE.getCell(1), - NUCLIDE.LiFBeF2UF4.getFluidStack(9000), - new ItemStack[] { - CI.emptyCells(1) - }, - new int[] {10000}, - NUCLIDE.LiFBeF2ThF4UF4.getFluidStack(10000), - 20 * 60 * 5, - MaterialUtils.getVoltageForTier(5));*/ - - - CORE.RA.addFissionFuel( - FLUORIDES.THORIUM_TETRAFLUORIDE.getFluidStack(1000), - NUCLIDE.LiFBeF2UF4.getFluidStack(9000), - null, - null, - null, null, null, null, null, - NUCLIDE.LiFBeF2ThF4UF4.getFluidStack(10000), - null, - 20 * 60 * 150, // Duration - MaterialUtils.getVoltageForTier(5) - ); - - - - - } +public class RecipeLoader_NuclearFuelProcessing { + + public static void generate() { + + // Create Fuels + + final FluidStack aLithiumFluoride = FLUORIDES.LITHIUM_FLUORIDE.getFluidStack(100); + final FluidStack aBerylliumFluoride = FLUORIDES.BERYLLIUM_FLUORIDE.getFluidStack(100); + final FluidStack aThoriumFluoride = FLUORIDES.THORIUM_TETRAFLUORIDE.getFluidStack(100); + final FluidStack aZirconiumFluoride = FLUORIDES.ZIRCONIUM_TETRAFLUORIDE.getFluidStack(100); + final FluidStack aUraniumTetraFluoride = FLUORIDES.URANIUM_TETRAFLUORIDE.getFluidStack(100); + final FluidStack aUranium235 = ELEMENT.getInstance().URANIUM235.getFluidStack(1000); + final FluidStack aLiFBeF2ZrF4U235 = NUCLIDE.LiFBeF2ZrF4U235.getFluidStack(100); + final FluidStack aLiFBeF2ZrF4UF4 = NUCLIDE.LiFBeF2ZrF4UF4.getFluidStack(100); + final FluidStack aLiFBeF2ThF4UF4 = NUCLIDE.LiFBeF2ThF4UF4.getFluidStack(100); + + // 7LiF - BeF2 - ZrF4 - U235 - 590C + CORE.RA.addFissionFuel( + FluidUtils.getFluidStack(aLithiumFluoride, 550), + FluidUtils.getFluidStack(aBerylliumFluoride, 150), + FluidUtils.getFluidStack(aZirconiumFluoride, 60), + FluidUtils.getFluidStack(aUranium235, 240), + null, + null, + null, + null, + null, // Extra 5 inputs + FluidUtils.getFluidStack(aLiFBeF2ZrF4U235, 1000), + null, + 90 * 60 * 20, // Duration + MaterialUtils.getVoltageForTier(4)); + + // 7LiF - BeF2 - ZrF4 - UF4 - 650C + CORE.RA.addFissionFuel( + FluidUtils.getFluidStack(aLithiumFluoride, 600), + FluidUtils.getFluidStack(aBerylliumFluoride, 250), + FluidUtils.getFluidStack(aZirconiumFluoride, 80), + FluidUtils.getFluidStack(aUraniumTetraFluoride, 70), + null, + null, + null, + null, + null, // Extra 5 inputs + FluidUtils.getFluidStack(aLiFBeF2ZrF4UF4, 1000), + null, + 120 * 60 * 20, + MaterialUtils.getVoltageForTier(5)); + + // 7liF - BeF2 - ThF4 - UF4 - 566C + CORE.RA.addFissionFuel( + FluidUtils.getFluidStack(aLithiumFluoride, 580), + FluidUtils.getFluidStack(aBerylliumFluoride, 270), + FluidUtils.getFluidStack(aThoriumFluoride, 80), + FluidUtils.getFluidStack(aUraniumTetraFluoride, 70), + null, + null, + null, + null, + null, // Extra 5 inputs + FluidUtils.getFluidStack(aLiFBeF2ThF4UF4, 1000), + null, + 150 * 60 * 20, // Duration + MaterialUtils.getVoltageForTier(5)); + + // Reprocess Fuels + + // Reactor Blanket step 1 - Fluorination + CORE.RA.addReactorProcessingUnitRecipe( + CI.getNumberedAdvancedCircuit(17), + ELEMENT.getInstance().FLUORINE.getCell(6), + NUCLIDE.LiFThF4.getFluidStack(10000), + new ItemStack[] { + CI.emptyCells(5), + FLUORIDES.LITHIUM_FLUORIDE.getCell(1), + ItemUtils.getSimpleStack(ModItems.dustProtactinium233), + ItemUtils.getSimpleStack(ModItems.dustProtactinium233), + ItemUtils.getSimpleStack(ModItems.dustProtactinium233), + ItemUtils.getSimpleStack(ModItems.dustProtactinium233), + ItemUtils.getSimpleStack(ModItems.dustProtactinium233), + ItemUtils.getSimpleStack(ModItems.dustProtactinium233) + }, + new int[] {10000, 10000, 500, 500, 500, 250, 250, 250}, + NUCLIDE.UF6F2.getFluidStack(1500), + 20 * 60 * 10, + MaterialUtils.getVoltageForTier(5)); + CORE.RA.addReactorProcessingUnitRecipe( + CI.getNumberedAdvancedCircuit(18), + ELEMENT.getInstance().FLUORINE.getCell(6), + NUCLIDE.LiFBeF2ThF4.getFluidStack(10000), + new ItemStack[] { + CI.emptyCells(4), + FLUORIDES.LITHIUM_FLUORIDE.getCell(1), + FLUORIDES.BERYLLIUM_FLUORIDE.getCell(1), + ItemUtils.getSimpleStack(ModItems.dustProtactinium233), + ItemUtils.getSimpleStack(ModItems.dustProtactinium233), + ItemUtils.getSimpleStack(ModItems.dustProtactinium233), + ItemUtils.getSimpleStack(ModItems.dustProtactinium233), + ItemUtils.getSimpleStack(ModItems.dustProtactinium233), + ItemUtils.getSimpleStack(ModItems.dustProtactinium233) + }, + new int[] {10000, 10000, 10000, 1000, 1000, 1000, 500, 500, 500}, + NUCLIDE.UF6F2.getFluidStack(3000), + 20 * 60 * 10, + MaterialUtils.getVoltageForTier(5)); + + // Reactor Blanket step 1 - Fluorination + CORE.RA.addReactorProcessingUnitRecipe( + CI.getNumberedAdvancedCircuit(7), + ELEMENT.getInstance().FLUORINE.getCell(6), + NUCLIDE.Sparged_LiFThF4.getFluidStack(10000), + new ItemStack[] { + CI.emptyCells(4), + FLUORIDES.LITHIUM_FLUORIDE.getCell(2), + ItemUtils.getSimpleStack(ModItems.dustProtactinium233), + ItemUtils.getSimpleStack(ModItems.dustProtactinium233), + ItemUtils.getSimpleStack(ModItems.dustProtactinium233), + ItemUtils.getSimpleStack(ModItems.dustProtactinium233), + ItemUtils.getSimpleStack(ModItems.dustProtactinium233), + ItemUtils.getSimpleStack(ModItems.dustProtactinium233) + }, + new int[] {10000, 10000, 1000, 1000, 1000, 1000, 1000, 1000}, + NUCLIDE.UF6F2.getFluidStack(3000), + 20 * 60 * 5, + MaterialUtils.getVoltageForTier(5)); + CORE.RA.addReactorProcessingUnitRecipe( + CI.getNumberedAdvancedCircuit(8), + ELEMENT.getInstance().FLUORINE.getCell(6), + NUCLIDE.Sparged_LiFBeF2ThF4.getFluidStack(10000), + new ItemStack[] { + CI.emptyCells(2), + FLUORIDES.LITHIUM_FLUORIDE.getCell(2), + FLUORIDES.BERYLLIUM_FLUORIDE.getCell(2), + ItemUtils.getSimpleStack(ModItems.dustProtactinium233), + ItemUtils.getSimpleStack(ModItems.dustProtactinium233), + ItemUtils.getSimpleStack(ModItems.dustProtactinium233), + ItemUtils.getSimpleStack(ModItems.dustProtactinium233), + ItemUtils.getSimpleStack(ModItems.dustProtactinium233), + ItemUtils.getSimpleStack(ModItems.dustProtactinium233) + }, + new int[] {10000, 10000, 10000, 2000, 2000, 2000, 2000, 2000, 2000}, + NUCLIDE.UF6F2.getFluidStack(6000), + 20 * 60 * 5, + MaterialUtils.getVoltageForTier(5)); + + // Reactor Blanket step 2 - Sorption + Cold Trap + CORE.RA.addColdTrapRecipe( + 8, + FLUORIDES.SODIUM_FLUORIDE.getCell(4), + NUCLIDE.UF6F2.getFluidStack(3000), + new ItemStack[] { + ELEMENT.getInstance().FLUORINE.getCell(2), + FLUORIDES.URANIUM_HEXAFLUORIDE.getCell(2), + ELEMENT.getInstance().URANIUM233.getDust(1), + ELEMENT.getInstance().URANIUM233.getDust(1), + ELEMENT.getInstance().URANIUM233.getDust(1) + }, + new int[] {10000, 10000, 3000, 2000, 1000}, + FLUORIDES.SODIUM_FLUORIDE.getFluidStack(2000), + 20 * 60 * 10, + MaterialUtils.getVoltageForTier(3)); + + // Reactor Core step 0 - Process Burnt Salt + // Tier 1 Fuel - Gives back FLIBE and breeds U233 + /* CORE.RA.addReactorProcessingUnitRecipe( + CI.getNumberedAdvancedCircuit(1), + CI.emptyCells(2), + new FluidStack(NuclearChem.Burnt_LiFBeF2ZrF4U235, 4000), + new ItemStack[] { + FLUORIDES.LITHIUM_FLUORIDE.getCell(1), + ELEMENT.getInstance().URANIUM233.getCell(1) + }, + new int[] {10000, 10000}, + NUCLIDE.LiFBeF2.getFluidStack(2000), + 20 * 60 * 60, + MaterialUtils.getVoltageForTier(3));*/ + + // LiBeF2UF4FP + F2 = LiFBeF2 & UF6F2FP + // Reactor Core step 1 - Process Burnt Salt + CORE.RA.addReactorProcessingUnitRecipe( + CI.getNumberedAdvancedCircuit(1), + ELEMENT.getInstance().FLUORINE.getCell(1), + NUCLIDE.LiFBeF2UF4FP.getFluidStack(1000), + new ItemStack[] {NUCLIDE.UF6F2FP.getCell(1)}, + new int[] {10000}, + FluidUtils.getFluidStack(NuclearChem.Impure_LiFBeF2, 1000), + 20 * 60 * 120, + MaterialUtils.getVoltageForTier(3)); + + // LiBeF2UF4FP + F2 = LiFBeF2 & UF6F2FP + // Reactor Core step 1 - Process Burnt Salt + CORE.RA.addReactorProcessingUnitRecipe( + CI.getNumberedAdvancedCircuit(1), + ELEMENT.getInstance().FLUORINE.getCell(3), + NUCLIDE.Sparged_LiFBeF2UF4FP.getFluidStack(1000), + new ItemStack[] {CI.emptyCells(1), NUCLIDE.UF6F2FP.getCell(2)}, + new int[] {10000}, + FluidUtils.getFluidStack(NuclearChem.Impure_LiFBeF2, 2000), + 20 * 60 * 60, + MaterialUtils.getVoltageForTier(3)); + + // Reactor Core step 2A - Sorption + Cold Trap + CORE.RA.addColdTrapRecipe( + 8, + FLUORIDES.SODIUM_FLUORIDE.getCell(3), + NUCLIDE.UF6F2FP.getFluidStack(2000), + new ItemStack[] { + ELEMENT.getInstance().FLUORINE.getCell(1), + FLUORIDES.URANIUM_HEXAFLUORIDE.getCell(2), + ELEMENT.getInstance().PHOSPHORUS.getDust(1), + ELEMENT.getInstance().PHOSPHORUS.getDust(1), + ELEMENT.getInstance().PHOSPHORUS.getDust(1), + ELEMENT.getInstance().PHOSPHORUS.getDust(1), + ELEMENT.getInstance().PHOSPHORUS.getDust(1), + ELEMENT.getInstance().PHOSPHORUS.getDust(1), + ELEMENT.getInstance().PHOSPHORUS.getDust(1) + }, + new int[] {10000, 10000, 5000, 5000, 5000, 5000, 5000, 5000, 5000}, + FLUORIDES.SODIUM_FLUORIDE.getFluidStack(2000), + 20 * 60 * 10, + MaterialUtils.getVoltageForTier(4)); + + // Reactor Core step 2B - Distillation + GT_Values.RA.addDistillationTowerRecipe( + FluidUtils.getFluidStack(NuclearChem.Impure_LiFBeF2, 1000), + new FluidStack[] {NUCLIDE.LiFBeF2.getFluidStack(250)}, + null, + 120 * 60 * 20, + MaterialUtils.getVoltageForTier(3)); + + // UF6 -> UF4 reduction + // UF6 + LiFBeF2 + H2 -> LiFBeF2UF4 + HF + CORE.RA.addBlastRecipe( + new ItemStack[] {FLUORIDES.URANIUM_HEXAFLUORIDE.getCell(1), NUCLIDE.LiFBeF2.getCell(1)}, + new FluidStack[] {ELEMENT.getInstance().HYDROGEN.getFluidStack(2000)}, + new ItemStack[] {ItemUtils.getItemStackOfAmountFromOreDict("cellHydrofluoricAcid", 2), CI.emptyCells(1) + }, + new FluidStack[] {NUCLIDE.LiFBeF2UF4.getFluidStack(3000)}, + 20 * 60 * 10, + MaterialUtils.getVoltageForTier(4), + 6500); + + // LiFBeF2ZrF4U235 - We can't add both ZrF4 and U235 here, so best we leave this disabled. + /*CORE.RA.addReactorProcessingUnitRecipe( + CI.getNumberedAdvancedCircuit(8), + NUCLIDE.LiFBeF2UF4.getCell(9), + ELEMENT.getInstance().URANIUM235.getFluidStack(1000), + new ItemStack[] { + CI.emptyCells(9) + }, + new int[] {10000}, + NUCLIDE.LiFBeF2ZrF4U235.getFluidStack(10000), + 20 * 60 * 5, + MaterialUtils.getVoltageForTier(4));*/ + + // LiFBeF2ZrF4UF4 + /*CORE.RA.addReactorProcessingUnitRecipe( + CI.getNumberedAdvancedCircuit(9), + NUCLIDE.LiFBeF2UF4.getCell(9), + FLUORIDES.ZIRCONIUM_TETRAFLUORIDE.getFluidStack(1000), + new ItemStack[] { + CI.emptyCells(9) + }, + new int[] {10000}, + NUCLIDE.LiFBeF2ZrF4UF4.getFluidStack(10000), + 20 * 60 * 5, + MaterialUtils.getVoltageForTier(5)); + + CORE.RA.addReactorProcessingUnitRecipe( + CI.getNumberedAdvancedCircuit(9), + FLUORIDES.ZIRCONIUM_TETRAFLUORIDE.getCell(1), + NUCLIDE.LiFBeF2UF4.getFluidStack(9000), + new ItemStack[] { + CI.emptyCells(1) + }, + new int[] {10000}, + NUCLIDE.LiFBeF2ZrF4UF4.getFluidStack(10000), + 20 * 60 * 5, + MaterialUtils.getVoltageForTier(5));*/ + + CORE.RA.addFissionFuel( + FLUORIDES.ZIRCONIUM_TETRAFLUORIDE.getFluidStack(1000), + NUCLIDE.LiFBeF2UF4.getFluidStack(9000), + null, + null, + null, + null, + null, + null, + null, + NUCLIDE.LiFBeF2ZrF4UF4.getFluidStack(10000), + null, + 20 * 60 * 120, // Duration + MaterialUtils.getVoltageForTier(5)); + + // LiFBeF2ThF4UF4 + /*CORE.RA.addReactorProcessingUnitRecipe( + CI.getNumberedAdvancedCircuit(10), + NUCLIDE.LiFBeF2UF4.getCell(9), + FLUORIDES.THORIUM_TETRAFLUORIDE.getFluidStack(1000), + new ItemStack[] { + CI.emptyCells(9) + }, + new int[] {10000}, + NUCLIDE.LiFBeF2ThF4UF4.getFluidStack(10000), + 20 * 60 * 5, + MaterialUtils.getVoltageForTier(5)); + + CORE.RA.addReactorProcessingUnitRecipe( + CI.getNumberedAdvancedCircuit(10), + FLUORIDES.THORIUM_TETRAFLUORIDE.getCell(1), + NUCLIDE.LiFBeF2UF4.getFluidStack(9000), + new ItemStack[] { + CI.emptyCells(1) + }, + new int[] {10000}, + NUCLIDE.LiFBeF2ThF4UF4.getFluidStack(10000), + 20 * 60 * 5, + MaterialUtils.getVoltageForTier(5));*/ + + CORE.RA.addFissionFuel( + FLUORIDES.THORIUM_TETRAFLUORIDE.getFluidStack(1000), + NUCLIDE.LiFBeF2UF4.getFluidStack(9000), + null, + null, + null, + null, + null, + null, + null, + NUCLIDE.LiFBeF2ThF4UF4.getFluidStack(10000), + null, + 20 * 60 * 150, // Duration + MaterialUtils.getVoltageForTier(5)); + } } |