diff options
Diffstat (limited to 'src/Java/gtPlusPlus/xmod/gregtech/api/util/GregtechRecipeRegistrator.java')
-rw-r--r-- | src/Java/gtPlusPlus/xmod/gregtech/api/util/GregtechRecipeRegistrator.java | 966 |
1 files changed, 319 insertions, 647 deletions
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/util/GregtechRecipeRegistrator.java b/src/Java/gtPlusPlus/xmod/gregtech/api/util/GregtechRecipeRegistrator.java index 8b2f21732d..027b89c8e1 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/api/util/GregtechRecipeRegistrator.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/api/util/GregtechRecipeRegistrator.java @@ -1,9 +1,13 @@ package gtPlusPlus.xmod.gregtech.api.util; -import java.util.*; - +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 gregtech.api.GregTech_API; -import gregtech.api.enums.*; +import gregtech.api.enums.ConfigCategories; +import gregtech.api.enums.OrePrefixes; +import gregtech.api.enums.SubTag; +import gregtech.api.enums.TC_Aspects; import gregtech.api.enums.TC_Aspects.TC_AspectStack; import gregtech.api.interfaces.internal.IThaumcraftCompat; import gregtech.api.util.GT_ModHandler; @@ -13,6 +17,11 @@ import gtPlusPlus.xmod.gregtech.api.enums.GregtechOrePrefixes; import gtPlusPlus.xmod.gregtech.api.enums.GregtechOrePrefixes.GT_Materials; import gtPlusPlus.xmod.gregtech.api.objects.GregtechItemData; import gtPlusPlus.xmod.gregtech.api.objects.GregtechMaterialStack; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; @@ -21,648 +30,311 @@ import net.minecraft.item.ItemStack; * Class for Automatic Recipe registering. */ public class GregtechRecipeRegistrator { - /** - * List of GT_Materials, which are used in the Creation of Sticks. All Rod - * GT_Materials are automatically added to this List. - */ - public static final List<GT_Materials> sRodMaterialList = new ArrayList<GT_Materials>(); - private static final ItemStack sMt1 = new ItemStack(Blocks.dirt, 1, 0), - sMt2 = new ItemStack(Blocks.dirt, 1, 0); - private static final String s_H = "h", s_F = "f", s_I = "I", s_P = "P", s_R = "R"; - private static final ItemStack[][] sShapes1 = new ItemStack[][] { - { - GregtechRecipeRegistrator.sMt1, null, GregtechRecipeRegistrator.sMt1, - GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1, - null, GregtechRecipeRegistrator.sMt1, null - }, { - GregtechRecipeRegistrator.sMt1, null, GregtechRecipeRegistrator.sMt1, - GregtechRecipeRegistrator.sMt1, null, GregtechRecipeRegistrator.sMt1, - GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1 - }, { - null, GregtechRecipeRegistrator.sMt1, null, GregtechRecipeRegistrator.sMt1, - GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1, - null, GregtechRecipeRegistrator.sMt1 - }, { - GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1, - GregtechRecipeRegistrator.sMt1, null, GregtechRecipeRegistrator.sMt1, null, null, null - }, { - GregtechRecipeRegistrator.sMt1, null, GregtechRecipeRegistrator.sMt1, - GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1, - GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1 - }, { - GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1, - GregtechRecipeRegistrator.sMt1, null, GregtechRecipeRegistrator.sMt1, - GregtechRecipeRegistrator.sMt1, null, GregtechRecipeRegistrator.sMt1 - }, { - null, null, null, GregtechRecipeRegistrator.sMt1, null, GregtechRecipeRegistrator.sMt1, - GregtechRecipeRegistrator.sMt1, null, GregtechRecipeRegistrator.sMt1 - }, { - null, GregtechRecipeRegistrator.sMt1, null, null, GregtechRecipeRegistrator.sMt1, null, null, - GregtechRecipeRegistrator.sMt2, null - }, { - GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1, - null, GregtechRecipeRegistrator.sMt2, null, null, GregtechRecipeRegistrator.sMt2, null - }, { - null, GregtechRecipeRegistrator.sMt1, null, null, GregtechRecipeRegistrator.sMt2, null, null, - GregtechRecipeRegistrator.sMt2, null - }, { - GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1, null, - GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt2, null, null, - GregtechRecipeRegistrator.sMt2, null - }, { - null, GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1, null, - GregtechRecipeRegistrator.sMt2, GregtechRecipeRegistrator.sMt1, null, - GregtechRecipeRegistrator.sMt2, null - }, { - GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1, null, null, - GregtechRecipeRegistrator.sMt2, null, null, GregtechRecipeRegistrator.sMt2, null - }, { - null, GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1, null, - GregtechRecipeRegistrator.sMt2, null, null, GregtechRecipeRegistrator.sMt2, null - }, { - null, GregtechRecipeRegistrator.sMt1, null, GregtechRecipeRegistrator.sMt1, null, null, null, - GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt2 - }, { - null, GregtechRecipeRegistrator.sMt1, null, null, null, GregtechRecipeRegistrator.sMt1, - GregtechRecipeRegistrator.sMt2, GregtechRecipeRegistrator.sMt1, null - }, { - null, GregtechRecipeRegistrator.sMt1, null, GregtechRecipeRegistrator.sMt1, null, - GregtechRecipeRegistrator.sMt1, null, null, GregtechRecipeRegistrator.sMt2 - }, { - null, GregtechRecipeRegistrator.sMt1, null, GregtechRecipeRegistrator.sMt1, null, - GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt2, null, null - }, { - null, GregtechRecipeRegistrator.sMt2, null, null, GregtechRecipeRegistrator.sMt1, null, null, - GregtechRecipeRegistrator.sMt1, null - }, { - null, GregtechRecipeRegistrator.sMt2, null, null, GregtechRecipeRegistrator.sMt2, null, - GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1 - }, { - null, GregtechRecipeRegistrator.sMt2, null, null, GregtechRecipeRegistrator.sMt2, null, null, - GregtechRecipeRegistrator.sMt1, null - }, { - null, GregtechRecipeRegistrator.sMt2, null, GregtechRecipeRegistrator.sMt1, - GregtechRecipeRegistrator.sMt2, null, GregtechRecipeRegistrator.sMt1, - GregtechRecipeRegistrator.sMt1, null - }, { - null, GregtechRecipeRegistrator.sMt2, null, null, GregtechRecipeRegistrator.sMt2, - GregtechRecipeRegistrator.sMt1, null, GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1 - }, { - null, GregtechRecipeRegistrator.sMt2, null, null, GregtechRecipeRegistrator.sMt2, null, - GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1, null - }, { - GregtechRecipeRegistrator.sMt1, null, null, null, GregtechRecipeRegistrator.sMt2, null, null, null, - GregtechRecipeRegistrator.sMt2 - }, { - null, null, GregtechRecipeRegistrator.sMt1, null, GregtechRecipeRegistrator.sMt2, null, - GregtechRecipeRegistrator.sMt2, null, null - }, { - GregtechRecipeRegistrator.sMt1, null, null, null, GregtechRecipeRegistrator.sMt2, null, null, null, - null - }, { - null, null, GregtechRecipeRegistrator.sMt1, null, GregtechRecipeRegistrator.sMt2, null, null, null, - null - }, { - GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt2, null, null, null, null, null, null, - null - }, { - GregtechRecipeRegistrator.sMt2, GregtechRecipeRegistrator.sMt1, null, null, null, null, null, null, - null - }, { - GregtechRecipeRegistrator.sMt1, null, null, GregtechRecipeRegistrator.sMt2, null, null, null, null, - null - }, { - GregtechRecipeRegistrator.sMt2, null, null, GregtechRecipeRegistrator.sMt1, null, null, null, null, - null - }, { - GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1, - GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1, - null, GregtechRecipeRegistrator.sMt2, null - }, { - GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1, null, - GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt2, - GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1, null - }, { - null, GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1, - GregtechRecipeRegistrator.sMt2, GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1, - null, GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1 - }, { - null, GregtechRecipeRegistrator.sMt2, null, GregtechRecipeRegistrator.sMt1, - GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1, - GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1 - }, { - GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1, - GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt2, GregtechRecipeRegistrator.sMt1, - null, GregtechRecipeRegistrator.sMt2, null - }, { - GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1, null, - GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt2, GregtechRecipeRegistrator.sMt2, - GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1, null - }, { - null, GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1, - GregtechRecipeRegistrator.sMt2, GregtechRecipeRegistrator.sMt2, GregtechRecipeRegistrator.sMt1, - null, GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1 - }, { - null, GregtechRecipeRegistrator.sMt2, null, GregtechRecipeRegistrator.sMt1, - GregtechRecipeRegistrator.sMt2, GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1, - GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1 - }, { - GregtechRecipeRegistrator.sMt1, null, null, null, GregtechRecipeRegistrator.sMt1, null, null, null, - null - }, { - null, GregtechRecipeRegistrator.sMt1, null, GregtechRecipeRegistrator.sMt1, null, null, null, null, - null - }, { - GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1, null, - GregtechRecipeRegistrator.sMt2, null, GregtechRecipeRegistrator.sMt1, - GregtechRecipeRegistrator.sMt2, null, null - }, { - null, GregtechRecipeRegistrator.sMt1, GregtechRecipeRegistrator.sMt1, - GregtechRecipeRegistrator.sMt1, null, GregtechRecipeRegistrator.sMt2, null, null, - GregtechRecipeRegistrator.sMt2 - } - }; - private static final String[][] sShapesA = new String[][] { - null, null, null, { - "Helmet", - GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_P, - GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_H + GregtechRecipeRegistrator.s_P - }, { - "ChestPlate", - GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_H + GregtechRecipeRegistrator.s_P, - GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_P, - GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_P - }, { - "Pants", - GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_P, - GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_H + GregtechRecipeRegistrator.s_P, - GregtechRecipeRegistrator.s_P + " " + GregtechRecipeRegistrator.s_P - }, { - "Boots", GregtechRecipeRegistrator.s_P + " " + GregtechRecipeRegistrator.s_P, - GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_H + GregtechRecipeRegistrator.s_P - }, { - "Sword", " " + GregtechRecipeRegistrator.s_P + " ", - GregtechRecipeRegistrator.s_F + GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_H, - " " + GregtechRecipeRegistrator.s_R + " " - }, { - "Pickaxe", - GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_I + GregtechRecipeRegistrator.s_I, - GregtechRecipeRegistrator.s_F + GregtechRecipeRegistrator.s_R + GregtechRecipeRegistrator.s_H, - " " + GregtechRecipeRegistrator.s_R + " " - }, { - "Shovel", - GregtechRecipeRegistrator.s_F + GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_H, - " " + GregtechRecipeRegistrator.s_R + " ", " " + GregtechRecipeRegistrator.s_R + " " - }, { - "Axe", - GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_I + GregtechRecipeRegistrator.s_H, - GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_R + " ", - GregtechRecipeRegistrator.s_F + GregtechRecipeRegistrator.s_R + " " - }, { - "Axe", - GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_I + GregtechRecipeRegistrator.s_H, - GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_R + " ", - GregtechRecipeRegistrator.s_F + GregtechRecipeRegistrator.s_R + " " - }, { - "Hoe", - GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_I + GregtechRecipeRegistrator.s_H, - GregtechRecipeRegistrator.s_F + GregtechRecipeRegistrator.s_R + " ", - " " + GregtechRecipeRegistrator.s_R + " " - }, { - "Hoe", - GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_I + GregtechRecipeRegistrator.s_H, - GregtechRecipeRegistrator.s_F + GregtechRecipeRegistrator.s_R + " ", - " " + GregtechRecipeRegistrator.s_R + " " - }, { - "Sickle", " " + GregtechRecipeRegistrator.s_P + " ", - GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_F + " ", - GregtechRecipeRegistrator.s_H + GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_R - }, { - "Sickle", " " + GregtechRecipeRegistrator.s_P + " ", - GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_F + " ", - GregtechRecipeRegistrator.s_H + GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_R - }, { - "Sickle", " " + GregtechRecipeRegistrator.s_P + " ", - GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_F + " ", - GregtechRecipeRegistrator.s_H + GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_R - }, { - "Sickle", " " + GregtechRecipeRegistrator.s_P + " ", - GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_F + " ", - GregtechRecipeRegistrator.s_H + GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_R - }, { - "Sword", " " + GregtechRecipeRegistrator.s_R + " ", - GregtechRecipeRegistrator.s_F + GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_H, - " " + GregtechRecipeRegistrator.s_P + " " - }, { - "Pickaxe", " " + GregtechRecipeRegistrator.s_R + " ", - GregtechRecipeRegistrator.s_F + GregtechRecipeRegistrator.s_R + GregtechRecipeRegistrator.s_H, - GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_I + GregtechRecipeRegistrator.s_I - }, { - "Shovel", " " + GregtechRecipeRegistrator.s_R + " ", " " + GregtechRecipeRegistrator.s_R + " ", - GregtechRecipeRegistrator.s_F + GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_H - }, { - "Axe", GregtechRecipeRegistrator.s_F + GregtechRecipeRegistrator.s_R + " ", - GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_R + " ", - GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_I + GregtechRecipeRegistrator.s_H - }, { - "Axe", GregtechRecipeRegistrator.s_F + GregtechRecipeRegistrator.s_R + " ", - GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_R + " ", - GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_I + GregtechRecipeRegistrator.s_H - }, { - "Hoe", " " + GregtechRecipeRegistrator.s_R + " ", - GregtechRecipeRegistrator.s_F + GregtechRecipeRegistrator.s_R + " ", - GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_I + GregtechRecipeRegistrator.s_H - }, { - "Hoe", " " + GregtechRecipeRegistrator.s_R + " ", - GregtechRecipeRegistrator.s_F + GregtechRecipeRegistrator.s_R + " ", - GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_I + GregtechRecipeRegistrator.s_H - }, { - "Spear", GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_H + " ", - GregtechRecipeRegistrator.s_F + GregtechRecipeRegistrator.s_R + " ", - " " + " " + GregtechRecipeRegistrator.s_R - }, { - "Spear", GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_H + " ", - GregtechRecipeRegistrator.s_F + GregtechRecipeRegistrator.s_R + " ", - " " + " " + GregtechRecipeRegistrator.s_R - }, { - "Knive", GregtechRecipeRegistrator.s_H + GregtechRecipeRegistrator.s_P, - GregtechRecipeRegistrator.s_R + GregtechRecipeRegistrator.s_F - }, { - "Knive", GregtechRecipeRegistrator.s_F + GregtechRecipeRegistrator.s_H, - GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_R - }, { - "Knive", GregtechRecipeRegistrator.s_F + GregtechRecipeRegistrator.s_H, - GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_R - }, { - "Knive", GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_F, - GregtechRecipeRegistrator.s_R + GregtechRecipeRegistrator.s_H - }, { - "Knive", GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_F, - GregtechRecipeRegistrator.s_R + GregtechRecipeRegistrator.s_H - }, null, null, null, null, { - "WarAxe", - GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_P, - GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_R + GregtechRecipeRegistrator.s_P, - GregtechRecipeRegistrator.s_F + GregtechRecipeRegistrator.s_R + GregtechRecipeRegistrator.s_H - }, null, null, null, { - "Shears", GregtechRecipeRegistrator.s_H + GregtechRecipeRegistrator.s_P, - GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_F - }, { - "Shears", GregtechRecipeRegistrator.s_H + GregtechRecipeRegistrator.s_P, - GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_F - }, { - "Scythe", - GregtechRecipeRegistrator.s_I + GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_H, - GregtechRecipeRegistrator.s_R + GregtechRecipeRegistrator.s_F + GregtechRecipeRegistrator.s_P, - GregtechRecipeRegistrator.s_R + " " + " " - }, { - "Scythe", - GregtechRecipeRegistrator.s_H + GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_I, - GregtechRecipeRegistrator.s_P + GregtechRecipeRegistrator.s_F + GregtechRecipeRegistrator.s_R, - " " + " " + GregtechRecipeRegistrator.s_R - } - }; - public static volatile int VERSION = 508; - - public static void registerMaterialRecycling(final ItemStack aStack, final GregtechItemData aData) { - if (GT_Utility.isStackInvalid(aStack) || GT_Utility.areStacksEqual(new ItemStack(Items.blaze_rod), aStack) - || aData == null || !aData.hasValidMaterialData() || aData.mMaterial.mAmount <= 0 - || GT_Utility.getFluidForFilledItem(aStack, false) != null) { - return; - } - GregtechRecipeRegistrator.registerReverseMacerating(GT_Utility.copyAmount(1, aStack), aData, - aData.mPrefix == null); - GregtechRecipeRegistrator.registerReverseSmelting(GT_Utility.copyAmount(1, aStack), aData.mMaterial.mMaterial, - aData.mMaterial.mAmount, true); - GregtechRecipeRegistrator.registerReverseFluidSmelting(GT_Utility.copyAmount(1, aStack), - aData.mMaterial.mMaterial, aData.mMaterial.mAmount, aData.getByProduct(0)); - GregtechRecipeRegistrator.registerReverseArcSmelting(GT_Utility.copyAmount(1, aStack), aData); - } - - public static void registerMaterialRecycling(final ItemStack aStack, final GT_Materials aMaterial, - final long aMaterialAmount, GregtechMaterialStack aByproduct) { - if (GT_Utility.isStackInvalid(aStack)) { - return; - } - if (aByproduct != null) { - aByproduct = aByproduct.clone(); - aByproduct.mAmount /= aStack.stackSize; - } - GregtechOreDictUnificator.addItemData(GT_Utility.copyAmount(1, aStack), - new GregtechItemData(aMaterial, aMaterialAmount / aStack.stackSize, aByproduct)); - } - - public static void registerReverseArcSmelting(final ItemStack aStack, GregtechItemData aData) { - if (aStack == null || aData == null) { - return; - } - aData = new GregtechItemData(aData); - - if (!aData.hasValidMaterialData()) { - return; - } - - for (final GregtechMaterialStack tMaterial : aData.getAllGT_MaterialStacks()) { - if (tMaterial.mMaterial.contains(SubTag.UNBURNABLE)) { - tMaterial.mMaterial = tMaterial.mMaterial.mSmeltInto.mArcSmeltInto; - continue; - } - if (tMaterial.mMaterial.contains(SubTag.EXPLOSIVE)) { - tMaterial.mAmount /= 4; - continue; - } - if (tMaterial.mMaterial.contains(SubTag.FLAMMABLE)) { - tMaterial.mAmount /= 2; - continue; - } - if (tMaterial.mMaterial.contains(SubTag.NO_SMELTING)) { - tMaterial.mAmount = 0; - continue; - } - if (tMaterial.mMaterial.contains(SubTag.METAL)) { - tMaterial.mMaterial = tMaterial.mMaterial.mSmeltInto.mArcSmeltInto; - continue; - } - tMaterial.mAmount = 0; - } - - aData = new GregtechItemData(aData); - - if (aData.mByProducts.length > 3) { - for (final GregtechMaterialStack tMaterial : aData.getAllGT_MaterialStacks()) { - aData = new GregtechItemData(aData); - } - } - - if (!aData.hasValidMaterialData()) { - return; - } - - long tAmount = 0; - for (final GregtechMaterialStack tMaterial : aData.getAllGT_MaterialStacks()) { - tAmount += tMaterial.mAmount * tMaterial.mMaterial.getMass(); - } - - GT_Values.RA.addArcFurnaceRecipe(aStack, new ItemStack[] { - GregtechOreDictUnificator.getIngotOrDust(aData.mMaterial), - GregtechOreDictUnificator.getIngotOrDust(aData.getByProduct(0)), - GregtechOreDictUnificator.getIngotOrDust(aData.getByProduct(1)), - GregtechOreDictUnificator.getIngotOrDust(aData.getByProduct(2)) - }, null, (int) Math.max(16, tAmount / GT_Values.M), 96); - } - - public static void registerReverseArcSmelting(final ItemStack aStack, final GT_Materials aMaterial, - final long aMaterialAmount, final GregtechMaterialStack aByProduct01, - final GregtechMaterialStack aByProduct02, final GregtechMaterialStack aByProduct03) { - GregtechRecipeRegistrator.registerReverseArcSmelting(aStack, - new GregtechItemData(aMaterial == null ? null : new GregtechMaterialStack(aMaterial, aMaterialAmount), - aByProduct01, aByProduct02, aByProduct03)); - } - - /** - * @param aStack - * the stack to be recycled. - * @param aMaterial - * the Material. - * @param aMaterialAmount - * the amount of it in Material Units. - */ - public static void registerReverseFluidSmelting(final ItemStack aStack, final GT_Materials aMaterial, - final long aMaterialAmount, final GregtechMaterialStack aByproduct) { - if (aStack == null || aMaterial == null || aMaterial.mSmeltInto.mStandardMoltenFluid == null - || !aMaterial.contains(SubTag.SMELTING_TO_FLUID) - || GT_Values.L * aMaterialAmount / (GT_Values.M * aStack.stackSize) <= 0) { - return; - } - GT_Values.RA.addFluidSmelterRecipe(GT_Utility.copyAmount(1, aStack), aByproduct == null ? null - : aByproduct.mMaterial.contains(SubTag.NO_SMELTING) || !aByproduct.mMaterial.contains(SubTag.METAL) - ? aByproduct.mMaterial.contains(SubTag.FLAMMABLE) - ? GregtechOreDictUnificator.getDust(GT_Materials._NULL, aByproduct.mAmount / 2) - : aByproduct.mMaterial.contains(SubTag.UNBURNABLE) ? GregtechOreDictUnificator - .getDustOrIngot(aByproduct.mMaterial.mSmeltInto, aByproduct.mAmount) : null - : GregtechOreDictUnificator.getIngotOrDust(aByproduct.mMaterial.mSmeltInto, aByproduct.mAmount), - aMaterial.mSmeltInto.getMolten(GT_Values.L * aMaterialAmount / (GT_Values.M * aStack.stackSize)), 10000, - (int) Math.max(1, 24 * aMaterialAmount / GT_Values.M), - Math.max(8, (int) Math.sqrt(2 * aMaterial.mSmeltInto.mStandardMoltenFluid.getTemperature()))); - } - - public static void registerReverseMacerating(final ItemStack aStack, GregtechItemData aData, - final boolean aAllowHammer) { - if (aStack == null || aData == null) { - return; - } - aData = new GregtechItemData(aData); - - if (!aData.hasValidMaterialData()) { - return; - } - - for (final GregtechMaterialStack tMaterial : aData.getAllGT_MaterialStacks()) { - tMaterial.mMaterial = tMaterial.mMaterial.mMacerateInto; - } - - aData = new GregtechItemData(aData); - - if (!aData.hasValidMaterialData()) { - return; - } - - long tAmount = 0; - for (final GregtechMaterialStack tMaterial : aData.getAllGT_MaterialStacks()) { - tAmount += tMaterial.mAmount * tMaterial.mMaterial.getMass(); - } - - GT_Values.RA.addPulveriserRecipe(aStack, new ItemStack[] { - GregtechOreDictUnificator.getDust(aData.mMaterial), - GregtechOreDictUnificator.getDust(aData.getByProduct(0)), - GregtechOreDictUnificator.getDust(aData.getByProduct(1)), - GregtechOreDictUnificator.getDust(aData.getByProduct(2)) - }, null, (int) Math.max(16, tAmount / GT_Values.M), 4); - - if (aAllowHammer) { - for (final GregtechMaterialStack tMaterial : aData.getAllGT_MaterialStacks()) { - if (tMaterial.mMaterial.contains(SubTag.CRYSTAL) && !tMaterial.mMaterial.contains(SubTag.METAL)) { - if (GT_Values.RA.addForgeHammerRecipe(GT_Utility.copyAmount(1, aStack), - GregtechOreDictUnificator.getDust(aData.mMaterial), 200, 32)) { - break; - } - } - } - } - final ItemStack tDust = GregtechOreDictUnificator.getDust(aData.mMaterial); - if (tDust != null && GT_ModHandler.addPulverisationRecipe(GT_Utility.copyAmount(1, aStack), tDust, - GregtechOreDictUnificator.getDust(aData.getByProduct(0)), 100, - GregtechOreDictUnificator.getDust(aData.getByProduct(1)), 100, true)) { - if (GregTech_API.sThaumcraftCompat != null) { - GregTech_API.sThaumcraftCompat.addCrucibleRecipe(IThaumcraftCompat.ADVANCEDENTROPICPROCESSING, aStack, - tDust, Arrays.asList(new TC_AspectStack(TC_Aspects.PERDITIO, - Math.max(1, aData.mMaterial.mAmount * 2 / GT_Values.M)))); - } - } - } - - public static void registerReverseMacerating(final ItemStack aStack, final GT_Materials aMaterial, - final long aMaterialAmount, final GregtechMaterialStack aByProduct01, - final GregtechMaterialStack aByProduct02, final GregtechMaterialStack aByProduct03, - final boolean aAllowHammer) { - GregtechRecipeRegistrator.registerReverseMacerating(aStack, - new GregtechItemData(aMaterial == null ? null : new GregtechMaterialStack(aMaterial, aMaterialAmount), - aByProduct01, aByProduct02, aByProduct03), - aAllowHammer); - } - - /** - * @param aStack - * the stack to be recycled. - * @param aMaterial - * the Material. - * @param aMaterialAmount - * the amount of it in Material Units. - * @param aAllowAlloySmelter - * if it is allowed to be recycled inside the Alloy Smelter. - */ - public static void registerReverseSmelting(final ItemStack aStack, final GT_Materials aMaterial, - long aMaterialAmount, final boolean aAllowAlloySmelter) { - if (aStack == null || aMaterial == null || aMaterialAmount <= 0 || aMaterial.contains(SubTag.NO_SMELTING) - || aMaterialAmount > GT_Values.M && aMaterial.contains(SubTag.METAL)) { - return; - } - aMaterialAmount /= aStack.stackSize; - - if (aAllowAlloySmelter) { - CORE.GT_Recipe.addSmeltingAndAlloySmeltingRecipe(GT_Utility.copyAmount(1, aStack), - GregtechOreDictUnificator.getIngot(aMaterial.mSmeltInto, aMaterialAmount)); - } - else { - GT_ModHandler.addSmeltingRecipe(GT_Utility.copyAmount(1, aStack), - GregtechOreDictUnificator.getIngot(aMaterial.mSmeltInto, aMaterialAmount)); - } - } - - /** - * You give this Function a Material and it will scan almost everything for - * adding recycling Recipes - * - * @param aMat - * a Material, for example an Ingot or a Gem. - * @param aOutput - * the Dust you usually get from macerating aMat - * @param aRecipeReplacing - * allows to replace the Recipe with a Plate variant - */ - public static synchronized void registerUsagesForGT_Materials(ItemStack aMat, String aPlate, - final boolean aRecipeReplacing) { - if (aMat == null) { - return; - } - aMat = GT_Utility.copy(aMat); - ItemStack tStack; - final GregtechItemData aItemData = GregtechOreDictUnificator.getItemData(aMat); - if (aItemData == null || aItemData.mPrefix != GregtechOrePrefixes.ingot) { - aPlate = null; - } - if (aPlate != null && GregtechOreDictUnificator.getFirstOre(aPlate, 1) == null) { - aPlate = null; - } - - GregtechRecipeRegistrator.sMt1.func_150996_a(aMat.getItem()); - GregtechRecipeRegistrator.sMt1.stackSize = 1; - Items.feather.setDamage(GregtechRecipeRegistrator.sMt1, Items.feather.getDamage(aMat)); - - GregtechRecipeRegistrator.sMt2.func_150996_a(new ItemStack(Blocks.dirt).getItem()); - GregtechRecipeRegistrator.sMt2.stackSize = 1; - Items.feather.setDamage(GregtechRecipeRegistrator.sMt2, 0); - - for (final ItemStack[] tRecipe : GregtechRecipeRegistrator.sShapes1) { - int tAmount1 = 0; - for (final ItemStack tMat : tRecipe) { - if (tMat == GregtechRecipeRegistrator.sMt1) { - tAmount1++; - } - } - if (aItemData != null && aItemData.hasValidPrefixMaterialData()) { - for (final ItemStack tCrafted : GT_ModHandler.getRecipeOutputs(tRecipe)) { - GregtechOreDictUnificator.addItemData(tCrafted, new GregtechItemData(aItemData.mMaterial.mMaterial, - aItemData.mMaterial.mAmount * tAmount1)); - } - } - } - - for (final GT_Materials tMaterial : GregtechRecipeRegistrator.sRodMaterialList) { - final ItemStack tMt2 = GregtechOreDictUnificator.get(GregtechOrePrefixes.stick, tMaterial, 1); - if (tMt2 != null) { - GregtechRecipeRegistrator.sMt2.func_150996_a(tMt2.getItem()); - GregtechRecipeRegistrator.sMt2.stackSize = 1; - Items.feather.setDamage(GregtechRecipeRegistrator.sMt2, Items.feather.getDamage(tMt2)); - - for (int i = 0; i < GregtechRecipeRegistrator.sShapes1.length; i++) { - final ItemStack[] tRecipe = GregtechRecipeRegistrator.sShapes1[i]; - - int tAmount1 = 0, tAmount2 = 0; - for (final ItemStack tMat : tRecipe) { - if (tMat == GregtechRecipeRegistrator.sMt1) { - tAmount1++; - } - if (tMat == GregtechRecipeRegistrator.sMt2) { - tAmount2++; - } - } - for (final ItemStack tCrafted : GT_ModHandler.getVanillyToolRecipeOutputs(tRecipe)) { - if (aItemData != null && aItemData.hasValidPrefixMaterialData()) { - GregtechOreDictUnificator.addItemData(tCrafted, - new GregtechItemData(aItemData.mMaterial.mMaterial, - aItemData.mMaterial.mAmount * tAmount1, new GregtechMaterialStack(tMaterial, - OrePrefixes.stick.mMaterialAmount * tAmount2))); - } - - if (aRecipeReplacing && aPlate != null && GregtechRecipeRegistrator.sShapesA[i] != null - && GregtechRecipeRegistrator.sShapesA[i].length > 1) { - assert aItemData != null; - if (GregTech_API.sRecipeFile.get(ConfigCategories.Recipes.recipereplacements, - aItemData.mMaterial.mMaterial + "." + GregtechRecipeRegistrator.sShapesA[i][0], - true)) { - if (null != (tStack = GT_ModHandler.removeRecipe(tRecipe))) { - switch (GregtechRecipeRegistrator.sShapesA[i].length) { - case 2: - GT_ModHandler.addCraftingRecipe(tStack, GT_ModHandler.RecipeBits.BUFFERED, - new Object[] { - GregtechRecipeRegistrator.sShapesA[i][1], - GregtechRecipeRegistrator.s_P.charAt(0), aPlate, - GregtechRecipeRegistrator.s_R.charAt(0), - OrePrefixes.stick.get(tMaterial), - GregtechRecipeRegistrator.s_I.charAt(0), aItemData - }); - break; - case 3: - GT_ModHandler.addCraftingRecipe(tStack, GT_ModHandler.RecipeBits.BUFFERED, - new Object[] { - GregtechRecipeRegistrator.sShapesA[i][1], - GregtechRecipeRegistrator.sShapesA[i][2], - GregtechRecipeRegistrator.s_P.charAt(0), aPlate, - GregtechRecipeRegistrator.s_R.charAt(0), - OrePrefixes.stick.get(tMaterial), - GregtechRecipeRegistrator.s_I.charAt(0), aItemData - }); - break; - default: - GT_ModHandler.addCraftingRecipe(tStack, GT_ModHandler.RecipeBits.BUFFERED, - new Object[] { - GregtechRecipeRegistrator.sShapesA[i][1], - GregtechRecipeRegistrator.sShapesA[i][2], - GregtechRecipeRegistrator.sShapesA[i][3], - GregtechRecipeRegistrator.s_P.charAt(0), aPlate, - GregtechRecipeRegistrator.s_R.charAt(0), - OrePrefixes.stick.get(tMaterial), - GregtechRecipeRegistrator.s_I.charAt(0), aItemData - }); - break; - } - } - } - } - } - } - } - } - } + /** + * List of GT_Materials, which are used in the Creation of Sticks. All Rod GT_Materials are automatically added to this List. + */ + public static final List<GT_Materials> sRodMaterialList = new ArrayList<GT_Materials>(); + private static final ItemStack sMt1 = new ItemStack(Blocks.dirt, 1, 0), sMt2 = new ItemStack(Blocks.dirt, 1, 0); + private static final String s_H = "h", s_F = "f", s_I = "I", s_P = "P", s_R = "R"; + private static final ItemStack[][] + sShapes1 = new ItemStack[][]{ + {sMt1, null, sMt1, sMt1, sMt1, sMt1, null, sMt1, null}, + {sMt1, null, sMt1, sMt1, null, sMt1, sMt1, sMt1, sMt1}, + {null, sMt1, null, sMt1, sMt1, sMt1, sMt1, null, sMt1}, + {sMt1, sMt1, sMt1, sMt1, null, sMt1, null, null, null}, + {sMt1, null, sMt1, sMt1, sMt1, sMt1, sMt1, sMt1, sMt1}, + {sMt1, sMt1, sMt1, sMt1, null, sMt1, sMt1, null, sMt1}, + {null, null, null, sMt1, null, sMt1, sMt1, null, sMt1}, + {null, sMt1, null, null, sMt1, null, null, sMt2, null}, + {sMt1, sMt1, sMt1, null, sMt2, null, null, sMt2, null}, + {null, sMt1, null, null, sMt2, null, null, sMt2, null}, + {sMt1, sMt1, null, sMt1, sMt2, null, null, sMt2, null}, + {null, sMt1, sMt1, null, sMt2, sMt1, null, sMt2, null}, + {sMt1, sMt1, null, null, sMt2, null, null, sMt2, null}, + {null, sMt1, sMt1, null, sMt2, null, null, sMt2, null}, + {null, sMt1, null, sMt1, null, null, null, sMt1, sMt2}, + {null, sMt1, null, null, null, sMt1, sMt2, sMt1, null}, + {null, sMt1, null, sMt1, null, sMt1, null, null, sMt2}, + {null, sMt1, null, sMt1, null, sMt1, sMt2, null, null}, + {null, sMt2, null, null, sMt1, null, null, sMt1, null}, + {null, sMt2, null, null, sMt2, null, sMt1, sMt1, sMt1}, + {null, sMt2, null, null, sMt2, null, null, sMt1, null}, + {null, sMt2, null, sMt1, sMt2, null, sMt1, sMt1, null}, + {null, sMt2, null, null, sMt2, sMt1, null, sMt1, sMt1}, + {null, sMt2, null, null, sMt2, null, sMt1, sMt1, null}, + {sMt1, null, null, null, sMt2, null, null, null, sMt2}, + {null, null, sMt1, null, sMt2, null, sMt2, null, null}, + {sMt1, null, null, null, sMt2, null, null, null, null}, + {null, null, sMt1, null, sMt2, null, null, null, null}, + {sMt1, sMt2, null, null, null, null, null, null, null}, + {sMt2, sMt1, null, null, null, null, null, null, null}, + {sMt1, null, null, sMt2, null, null, null, null, null}, + {sMt2, null, null, sMt1, null, null, null, null, null}, + {sMt1, sMt1, sMt1, sMt1, sMt1, sMt1, null, sMt2, null}, + {sMt1, sMt1, null, sMt1, sMt1, sMt2, sMt1, sMt1, null}, + {null, sMt1, sMt1, sMt2, sMt1, sMt1, null, sMt1, sMt1}, + {null, sMt2, null, sMt1, sMt1, sMt1, sMt1, sMt1, sMt1}, + {sMt1, sMt1, sMt1, sMt1, sMt2, sMt1, null, sMt2, null}, + {sMt1, sMt1, null, sMt1, sMt2, sMt2, sMt1, sMt1, null}, + {null, sMt1, sMt1, sMt2, sMt2, sMt1, null, sMt1, sMt1}, + {null, sMt2, null, sMt1, sMt2, sMt1, sMt1, sMt1, sMt1}, + {sMt1, null, null, null, sMt1, null, null, null, null}, + {null, sMt1, null, sMt1, null, null, null, null, null}, + {sMt1, sMt1, null, sMt2, null, sMt1, sMt2, null, null}, + {null, sMt1, sMt1, sMt1, null, sMt2, null, null, sMt2} + }; + private static final String[][] sShapesA = new String[][]{ + null, + null, + null, + {"Helmet", s_P + s_P + s_P, s_P + s_H + s_P}, + {"ChestPlate", s_P + s_H + s_P, s_P + s_P + s_P, s_P + s_P + s_P}, + {"Pants", s_P + s_P + s_P, s_P + s_H + s_P, s_P + " " + s_P}, + {"Boots", s_P + " " + s_P, s_P + s_H + s_P}, + {"Sword", " " + s_P + " ", s_F + s_P + s_H, " " + s_R + " "}, + {"Pickaxe", s_P + s_I + s_I, s_F + s_R + s_H, " " + s_R + " "}, + {"Shovel", s_F + s_P + s_H, " " + s_R + " ", " " + s_R + " "}, + {"Axe", s_P + s_I + s_H, s_P + s_R + " ", s_F + s_R + " "}, + {"Axe", s_P + s_I + s_H, s_P + s_R + " ", s_F + s_R + " "}, + {"Hoe", s_P + s_I + s_H, s_F + s_R + " ", " " + s_R + " "}, + {"Hoe", s_P + s_I + s_H, s_F + s_R + " ", " " + s_R + " "}, + {"Sickle", " " + s_P + " ", s_P + s_F + " ", s_H + s_P + s_R}, + {"Sickle", " " + s_P + " ", s_P + s_F + " ", s_H + s_P + s_R}, + {"Sickle", " " + s_P + " ", s_P + s_F + " ", s_H + s_P + s_R}, + {"Sickle", " " + s_P + " ", s_P + s_F + " ", s_H + s_P + s_R}, + {"Sword", " " + s_R + " ", s_F + s_P + s_H, " " + s_P + " "}, + {"Pickaxe", " " + s_R + " ", s_F + s_R + s_H, s_P + s_I + s_I}, + {"Shovel", " " + s_R + " ", " " + s_R + " ", s_F + s_P + s_H}, + {"Axe", s_F + s_R + " ", s_P + s_R + " ", s_P + s_I + s_H}, + {"Axe", s_F + s_R + " ", s_P + s_R + " ", s_P + s_I + s_H}, + {"Hoe", " " + s_R + " ", s_F + s_R + " ", s_P + s_I + s_H}, + {"Hoe", " " + s_R + " ", s_F + s_R + " ", s_P + s_I + s_H}, + {"Spear", s_P + s_H + " ", s_F + s_R + " ", " " + " " + s_R}, + {"Spear", s_P + s_H + " ", s_F + s_R + " ", " " + " " + s_R}, + {"Knive", s_H + s_P, s_R + s_F}, + {"Knive", s_F + s_H, s_P + s_R}, + {"Knive", s_F + s_H, s_P + s_R}, + {"Knive", s_P + s_F, s_R + s_H}, + {"Knive", s_P + s_F, s_R + s_H}, + null, + null, + null, + null, + {"WarAxe", s_P + s_P + s_P, s_P + s_R + s_P, s_F + s_R + s_H}, + null, + null, + null, + {"Shears", s_H + s_P, s_P + s_F}, + {"Shears", s_H + s_P, s_P + s_F}, + {"Scythe", s_I + s_P + s_H, s_R + s_F + s_P, s_R + " " + " "}, + {"Scythe", s_H + s_P + s_I, s_P + s_F + s_R, " " + " " + s_R} + }; + public static volatile int VERSION = 508; + + public static void registerMaterialRecycling(ItemStack aStack, GT_Materials aMaterial, long aMaterialAmount, GregtechMaterialStack aByproduct) { + if (GT_Utility.isStackInvalid(aStack)) return; + if (aByproduct != null) { + aByproduct = aByproduct.clone(); + aByproduct.mAmount /= aStack.stackSize; + } + GregtechOreDictUnificator.addItemData(GT_Utility.copyAmount(1, aStack), new GregtechItemData(aMaterial, aMaterialAmount / aStack.stackSize, aByproduct)); + } + + public static void registerMaterialRecycling(ItemStack aStack, GregtechItemData aData) { + if (GT_Utility.isStackInvalid(aStack) || GT_Utility.areStacksEqual(new ItemStack(Items.blaze_rod), aStack) || aData == null || !aData.hasValidMaterialData() || aData.mMaterial.mAmount <= 0 || GT_Utility.getFluidForFilledItem(aStack, false) != null) + return; + registerReverseMacerating(GT_Utility.copyAmount(1, aStack), aData, aData.mPrefix == null); + registerReverseSmelting(GT_Utility.copyAmount(1, aStack), aData.mMaterial.mMaterial, aData.mMaterial.mAmount, true); + registerReverseFluidSmelting(GT_Utility.copyAmount(1, aStack), aData.mMaterial.mMaterial, aData.mMaterial.mAmount, aData.getByProduct(0)); + registerReverseArcSmelting(GT_Utility.copyAmount(1, aStack), aData); + } + + /** + * @param aStack the stack to be recycled. + * @param aMaterial the Material. + * @param aMaterialAmount the amount of it in Material Units. + */ + public static void registerReverseFluidSmelting(ItemStack aStack, GT_Materials aMaterial, long aMaterialAmount, GregtechMaterialStack aByproduct) { + if (aStack == null || aMaterial == null || aMaterial.mSmeltInto.mStandardMoltenFluid == null || !aMaterial.contains(SubTag.SMELTING_TO_FLUID) || (L * aMaterialAmount) / (M * aStack.stackSize) <= 0) + return; + RA.addFluidSmelterRecipe(GT_Utility.copyAmount(1, aStack), aByproduct == null ? null : aByproduct.mMaterial.contains(SubTag.NO_SMELTING) || !aByproduct.mMaterial.contains(SubTag.METAL) ? aByproduct.mMaterial.contains(SubTag.FLAMMABLE) ? GregtechOreDictUnificator.getDust(GT_Materials._NULL, aByproduct.mAmount / 2) : aByproduct.mMaterial.contains(SubTag.UNBURNABLE) ? GregtechOreDictUnificator.getDustOrIngot(aByproduct.mMaterial.mSmeltInto, aByproduct.mAmount) : null : GregtechOreDictUnificator.getIngotOrDust(aByproduct.mMaterial.mSmeltInto, aByproduct.mAmount), aMaterial.mSmeltInto.getMolten((L * aMaterialAmount) / (M * aStack.stackSize)), 10000, (int) Math.max(1, (24 * aMaterialAmount) / M), Math.max(8, (int) Math.sqrt(2 * aMaterial.mSmeltInto.mStandardMoltenFluid.getTemperature()))); + } + + /** + * @param aStack the stack to be recycled. + * @param aMaterial the Material. + * @param aMaterialAmount the amount of it in Material Units. + * @param aAllowAlloySmelter if it is allowed to be recycled inside the Alloy Smelter. + */ + public static void registerReverseSmelting(ItemStack aStack, GT_Materials aMaterial, long aMaterialAmount, boolean aAllowAlloySmelter) { + if (aStack == null || aMaterial == null || aMaterialAmount <= 0 || aMaterial.contains(SubTag.NO_SMELTING) || (aMaterialAmount > M && aMaterial.contains(SubTag.METAL))) + return; + aMaterialAmount /= aStack.stackSize; + + if (aAllowAlloySmelter) + CORE.GT_Recipe.addSmeltingAndAlloySmeltingRecipe(GT_Utility.copyAmount(1, aStack), GregtechOreDictUnificator.getIngot(aMaterial.mSmeltInto, aMaterialAmount)); + else + GT_ModHandler.addSmeltingRecipe(GT_Utility.copyAmount(1, aStack), GregtechOreDictUnificator.getIngot(aMaterial.mSmeltInto, aMaterialAmount)); + } + + public static void registerReverseArcSmelting(ItemStack aStack, GT_Materials aMaterial, long aMaterialAmount, GregtechMaterialStack aByProduct01, GregtechMaterialStack aByProduct02, GregtechMaterialStack aByProduct03) { + registerReverseArcSmelting(aStack, new GregtechItemData(aMaterial == null ? null : new GregtechMaterialStack(aMaterial, aMaterialAmount), aByProduct01, aByProduct02, aByProduct03)); + } + + public static void registerReverseArcSmelting(ItemStack aStack, GregtechItemData aData) { + if (aStack == null || aData == null) return; + aData = new GregtechItemData(aData); + + if (!aData.hasValidMaterialData()) return; + + for (GregtechMaterialStack tMaterial : aData.getAllGT_MaterialStacks()) { + if (tMaterial.mMaterial.contains(SubTag.UNBURNABLE)) { + tMaterial.mMaterial = tMaterial.mMaterial.mSmeltInto.mArcSmeltInto; + continue; + } + if (tMaterial.mMaterial.contains(SubTag.EXPLOSIVE)) { + tMaterial.mAmount /= 4; + continue; + } + if (tMaterial.mMaterial.contains(SubTag.FLAMMABLE)) { + tMaterial.mAmount /= 2; + continue; + } + if (tMaterial.mMaterial.contains(SubTag.NO_SMELTING)) { + tMaterial.mAmount = 0; + continue; + } + if (tMaterial.mMaterial.contains(SubTag.METAL)) { + tMaterial.mMaterial = tMaterial.mMaterial.mSmeltInto.mArcSmeltInto; + continue; + } + tMaterial.mAmount = 0; + } + + aData = new GregtechItemData(aData); + + if (aData.mByProducts.length > 3) for (GregtechMaterialStack tMaterial : aData.getAllGT_MaterialStacks()) + + aData = new GregtechItemData(aData); + + if (!aData.hasValidMaterialData()) return; + + long tAmount = 0; + for (GregtechMaterialStack tMaterial : aData.getAllGT_MaterialStacks()) + tAmount += tMaterial.mAmount * tMaterial.mMaterial.getMass(); + + RA.addArcFurnaceRecipe(aStack, new ItemStack[]{GregtechOreDictUnificator.getIngotOrDust(aData.mMaterial), GregtechOreDictUnificator.getIngotOrDust(aData.getByProduct(0)), GregtechOreDictUnificator.getIngotOrDust(aData.getByProduct(1)), GregtechOreDictUnificator.getIngotOrDust(aData.getByProduct(2))}, null, (int) Math.max(16, tAmount / M), 96); + } + + public static void registerReverseMacerating(ItemStack aStack, GT_Materials aMaterial, long aMaterialAmount, GregtechMaterialStack aByProduct01, GregtechMaterialStack aByProduct02, GregtechMaterialStack aByProduct03, boolean aAllowHammer) { + registerReverseMacerating(aStack, new GregtechItemData(aMaterial == null ? null : new GregtechMaterialStack(aMaterial, aMaterialAmount), aByProduct01, aByProduct02, aByProduct03), aAllowHammer); + } + + public static void registerReverseMacerating(ItemStack aStack, GregtechItemData aData, boolean aAllowHammer) { + if (aStack == null || aData == null) return; + aData = new GregtechItemData(aData); + + if (!aData.hasValidMaterialData()) return; + + for (GregtechMaterialStack tMaterial : aData.getAllGT_MaterialStacks()) + tMaterial.mMaterial = tMaterial.mMaterial.mMacerateInto; + + aData = new GregtechItemData(aData); + + if (!aData.hasValidMaterialData()) return; + + long tAmount = 0; + for (GregtechMaterialStack tMaterial : aData.getAllGT_MaterialStacks()) + tAmount += tMaterial.mAmount * tMaterial.mMaterial.getMass(); + + RA.addPulveriserRecipe(aStack, new ItemStack[]{GregtechOreDictUnificator.getDust(aData.mMaterial), GregtechOreDictUnificator.getDust(aData.getByProduct(0)), GregtechOreDictUnificator.getDust(aData.getByProduct(1)), GregtechOreDictUnificator.getDust(aData.getByProduct(2))}, null, (int) Math.max(16, tAmount / M), 4); + + if (aAllowHammer) for (GregtechMaterialStack tMaterial : aData.getAllGT_MaterialStacks()) + if (tMaterial.mMaterial.contains(SubTag.CRYSTAL) && !tMaterial.mMaterial.contains(SubTag.METAL)) { + if (RA.addForgeHammerRecipe(GT_Utility.copyAmount(1, aStack), GregtechOreDictUnificator.getDust(aData.mMaterial), 200, 32)) + break; + } + ItemStack tDust = GregtechOreDictUnificator.getDust(aData.mMaterial); + if (tDust != null && GT_ModHandler.addPulverisationRecipe(GT_Utility.copyAmount(1, aStack), tDust, GregtechOreDictUnificator.getDust(aData.getByProduct(0)), 100, GregtechOreDictUnificator.getDust(aData.getByProduct(1)), 100, true)) { + if (GregTech_API.sThaumcraftCompat != null) + GregTech_API.sThaumcraftCompat.addCrucibleRecipe(IThaumcraftCompat.ADVANCEDENTROPICPROCESSING, aStack, tDust, Arrays.asList(new TC_AspectStack(TC_Aspects.PERDITIO, Math.max(1, (aData.mMaterial.mAmount * 2) / M)))); + } + } + + /** + * You give this Function a Material and it will scan almost everything for adding recycling Recipes + * + * @param aMat a Material, for example an Ingot or a Gem. + * @param aOutput the Dust you usually get from macerating aMat + * @param aRecipeReplacing allows to replace the Recipe with a Plate variant + */ + public static synchronized void registerUsagesForGT_Materials(ItemStack aMat, String aPlate, boolean aRecipeReplacing) { + if (aMat == null) return; + aMat = GT_Utility.copy(aMat); + ItemStack tStack; + GregtechItemData aItemData = GregtechOreDictUnificator.getItemData(aMat); + if (aItemData == null || aItemData.mPrefix != GregtechOrePrefixes.ingot) aPlate = null; + if (aPlate != null && GregtechOreDictUnificator.getFirstOre(aPlate, 1) == null) aPlate = null; + + sMt1.func_150996_a(aMat.getItem()); + sMt1.stackSize = 1; + Items.feather.setDamage(sMt1, Items.feather.getDamage(aMat)); + + sMt2.func_150996_a(new ItemStack(Blocks.dirt).getItem()); + sMt2.stackSize = 1; + Items.feather.setDamage(sMt2, 0); + + for (ItemStack[] tRecipe : sShapes1) { + int tAmount1 = 0; + for (ItemStack tMat : tRecipe) { + if (tMat == sMt1) tAmount1++; + } + if (aItemData != null && aItemData.hasValidPrefixMaterialData()) + for (ItemStack tCrafted : GT_ModHandler.getRecipeOutputs(tRecipe)) { + GregtechOreDictUnificator.addItemData(tCrafted, new GregtechItemData(aItemData.mMaterial.mMaterial, aItemData.mMaterial.mAmount * tAmount1)); + } + } + + for (GT_Materials tMaterial : sRodMaterialList) { + ItemStack tMt2 = GregtechOreDictUnificator.get(GregtechOrePrefixes.stick, tMaterial, 1); + if (tMt2 != null) { + sMt2.func_150996_a(tMt2.getItem()); + sMt2.stackSize = 1; + Items.feather.setDamage(sMt2, Items.feather.getDamage(tMt2)); + + for (int i = 0; i < sShapes1.length; i++) { + ItemStack[] tRecipe = sShapes1[i]; + + int tAmount1 = 0, tAmount2 = 0; + for (ItemStack tMat : tRecipe) { + if (tMat == sMt1) tAmount1++; + if (tMat == sMt2) tAmount2++; + } + for (ItemStack tCrafted : GT_ModHandler.getVanillyToolRecipeOutputs(tRecipe)) { + if (aItemData != null && aItemData.hasValidPrefixMaterialData()) + GregtechOreDictUnificator.addItemData(tCrafted, new GregtechItemData(aItemData.mMaterial.mMaterial, aItemData.mMaterial.mAmount * tAmount1, new GregtechMaterialStack(tMaterial, OrePrefixes.stick.mMaterialAmount * tAmount2))); + + if (aRecipeReplacing && aPlate != null && sShapesA[i] != null && sShapesA[i].length > 1) { + assert aItemData != null; + if (GregTech_API.sRecipeFile.get(ConfigCategories.Recipes.recipereplacements, aItemData.mMaterial.mMaterial + "." + sShapesA[i][0], true)) { + if (null != (tStack = GT_ModHandler.removeRecipe(tRecipe))) { + switch (sShapesA[i].length) { + case 2: + GT_ModHandler.addCraftingRecipe(tStack, GT_ModHandler.RecipeBits.BUFFERED, new Object[]{sShapesA[i][1], s_P.charAt(0), aPlate, s_R.charAt(0), OrePrefixes.stick.get(tMaterial), s_I.charAt(0), aItemData}); + break; + case 3: + GT_ModHandler.addCraftingRecipe(tStack, GT_ModHandler.RecipeBits.BUFFERED, new Object[]{sShapesA[i][1], sShapesA[i][2], s_P.charAt(0), aPlate, s_R.charAt(0), OrePrefixes.stick.get(tMaterial), s_I.charAt(0), aItemData}); + break; + default: + GT_ModHandler.addCraftingRecipe(tStack, GT_ModHandler.RecipeBits.BUFFERED, new Object[]{sShapesA[i][1], sShapesA[i][2], sShapesA[i][3], s_P.charAt(0), aPlate, s_R.charAt(0), OrePrefixes.stick.get(tMaterial), s_I.charAt(0), aItemData}); + break; + } + } + } + } + } + } + } + } + } } |