diff options
Diffstat (limited to 'src/Java')
12 files changed, 416 insertions, 325 deletions
diff --git a/src/Java/gtPlusPlus/core/item/ModItems.java b/src/Java/gtPlusPlus/core/item/ModItems.java index c36bdf175d..21d3ff8db7 100644 --- a/src/Java/gtPlusPlus/core/item/ModItems.java +++ b/src/Java/gtPlusPlus/core/item/ModItems.java @@ -2,7 +2,6 @@ package gtPlusPlus.core.item; import static gtPlusPlus.core.creative.AddToCreativeTab.tabMachines; import static gtPlusPlus.core.creative.AddToCreativeTab.tabMisc; import static gtPlusPlus.core.lib.CORE.LOAD_ALL_CONTENT; -import static gtPlusPlus.core.util.item.ItemUtils.generateItemsFromMaterial; import gregtech.api.enums.Materials; import gregtech.api.util.GT_OreDictUnificator; import gtPlusPlus.core.common.compat.COMPAT_Baubles; @@ -31,6 +30,7 @@ import gtPlusPlus.core.lib.CORE.configSwitches; import gtPlusPlus.core.lib.LoadedMods; import gtPlusPlus.core.material.ALLOY; import gtPlusPlus.core.material.ELEMENT; +import gtPlusPlus.core.material.MaterialGenerator; import gtPlusPlus.core.util.Utils; import gtPlusPlus.core.util.debug.DEBUG_INIT; import gtPlusPlus.core.util.item.ItemUtils; @@ -206,59 +206,59 @@ public final class ModItems { //Elements generate first so they can be used in compounds. //Uranium-233 is a fissile isotope of uranium that is bred from thorium-232 as part of the thorium fuel cycle. - generateItemsFromMaterial(ELEMENT.getInstance().URANIUM233); - generateItemsFromMaterial(ELEMENT.getInstance().ZIRCONIUM); + MaterialGenerator.generateItemsFromMaterial(ELEMENT.getInstance().URANIUM233); + MaterialGenerator.generateItemsFromMaterial(ELEMENT.getInstance().ZIRCONIUM); //Carbides - Tungsten Carbide exists in .09 so don't generate it. - Should still come before alloys though if (!CORE.MAIN_GREGTECH_5U_EXPERIMENTAL_FORK){ - generateItemsFromMaterial(ALLOY.TUNGSTEN_CARBIDE); + MaterialGenerator.generateItemsFromMaterial(ALLOY.TUNGSTEN_CARBIDE); } - generateItemsFromMaterial(ALLOY.SILICON_CARBIDE); - generateItemsFromMaterial(ALLOY.ZIRCONIUM_CARBIDE); - generateItemsFromMaterial(ALLOY.TANTALUM_CARBIDE); - generateItemsFromMaterial(ALLOY.NIOBIUM_CARBIDE); + MaterialGenerator.generateItemsFromMaterial(ALLOY.SILICON_CARBIDE); + MaterialGenerator.generateItemsFromMaterial(ALLOY.ZIRCONIUM_CARBIDE); + MaterialGenerator.generateItemsFromMaterial(ALLOY.TANTALUM_CARBIDE); + MaterialGenerator.generateItemsFromMaterial(ALLOY.NIOBIUM_CARBIDE); //Generate some Alloys - generateItemsFromMaterial(ALLOY.ENERGYCRYSTAL); - generateItemsFromMaterial(ALLOY.BLOODSTEEL); - generateItemsFromMaterial(ALLOY.BEDROCKIUM); + MaterialGenerator.generateItemsFromMaterial(ALLOY.ENERGYCRYSTAL); + MaterialGenerator.generateItemsFromMaterial(ALLOY.BLOODSTEEL); + MaterialGenerator.generateItemsFromMaterial(ALLOY.BEDROCKIUM); - generateItemsFromMaterial(ALLOY.STABALLOY); - generateItemsFromMaterial(ALLOY.TANTALLOY_60); - generateItemsFromMaterial(ALLOY.TANTALLOY_61); + MaterialGenerator.generateItemsFromMaterial(ALLOY.STABALLOY); + MaterialGenerator.generateItemsFromMaterial(ALLOY.TANTALLOY_60); + MaterialGenerator.generateItemsFromMaterial(ALLOY.TANTALLOY_61); - generateItemsFromMaterial(ALLOY.INCONEL_625); - generateItemsFromMaterial(ALLOY.INCONEL_690); - generateItemsFromMaterial(ALLOY.INCONEL_792); + MaterialGenerator.generateItemsFromMaterial(ALLOY.INCONEL_625); + MaterialGenerator.generateItemsFromMaterial(ALLOY.INCONEL_690); + MaterialGenerator.generateItemsFromMaterial(ALLOY.INCONEL_792); - generateItemsFromMaterial(ALLOY.ZERON_100); + MaterialGenerator.generateItemsFromMaterial(ALLOY.ZERON_100); - generateItemsFromMaterial(ALLOY.MARAGING250); - generateItemsFromMaterial(ALLOY.MARAGING300); - generateItemsFromMaterial(ALLOY.MARAGING350); + MaterialGenerator.generateItemsFromMaterial(ALLOY.MARAGING250); + MaterialGenerator.generateItemsFromMaterial(ALLOY.MARAGING300); + MaterialGenerator.generateItemsFromMaterial(ALLOY.MARAGING350); - generateItemsFromMaterial(ALLOY.STELLITE); - generateItemsFromMaterial(ALLOY.TALONITE); + MaterialGenerator.generateItemsFromMaterial(ALLOY.STELLITE); + MaterialGenerator.generateItemsFromMaterial(ALLOY.TALONITE); //Tumbaga was the name given by Spaniards to a non-specific alloy of gold and copper - generateItemsFromMaterial(ALLOY.TUMBAGA); + MaterialGenerator.generateItemsFromMaterial(ALLOY.TUMBAGA); //Potin is traditionally an alloy of bronze, tin and lead, with varying quantities of each possible - generateItemsFromMaterial(ALLOY.POTIN); + MaterialGenerator.generateItemsFromMaterial(ALLOY.POTIN); - generateItemsFromMaterial(ALLOY.HASTELLOY_W); - generateItemsFromMaterial(ALLOY.HASTELLOY_X); - generateItemsFromMaterial(ALLOY.HASTELLOY_C276); - generateItemsFromMaterial(ALLOY.HASTELLOY_N); + MaterialGenerator.generateItemsFromMaterial(ALLOY.HASTELLOY_W); + MaterialGenerator.generateItemsFromMaterial(ALLOY.HASTELLOY_X); + MaterialGenerator.generateItemsFromMaterial(ALLOY.HASTELLOY_C276); + MaterialGenerator.generateItemsFromMaterial(ALLOY.HASTELLOY_N); - generateItemsFromMaterial(ALLOY.INCOLOY_020); - generateItemsFromMaterial(ALLOY.INCOLOY_DS); - generateItemsFromMaterial(ALLOY.INCOLOY_MA956); + MaterialGenerator.generateItemsFromMaterial(ALLOY.INCOLOY_020); + MaterialGenerator.generateItemsFromMaterial(ALLOY.INCOLOY_DS); + MaterialGenerator.generateItemsFromMaterial(ALLOY.INCOLOY_MA956); //Leagrisium - generateItemsFromMaterial(ALLOY.LEAGRISIUM); + MaterialGenerator.generateItemsFromMaterial(ALLOY.LEAGRISIUM); //Must be the final Alloy to Generate - generateItemsFromMaterial(ALLOY.QUANTUM); + MaterialGenerator.generateItemsFromMaterial(ALLOY.QUANTUM); } catch (Throwable r){ Utils.LOG_INFO("Failed to Generated a Material. "+r.getMessage()); diff --git a/src/Java/gtPlusPlus/core/material/Material.java b/src/Java/gtPlusPlus/core/material/Material.java index d73ac96bec..893b310ba4 100644 --- a/src/Java/gtPlusPlus/core/material/Material.java +++ b/src/Java/gtPlusPlus/core/material/Material.java @@ -27,7 +27,7 @@ public class Material { protected Object dataVar; - private ArrayList<MaterialStack> vMaterialInput; + private ArrayList<MaterialStack> vMaterialInput = new ArrayList<MaterialStack>(); public final long[] vSmallestRatio; private final short[] RGBA; @@ -98,7 +98,7 @@ public class Material { if (inputs.length != 0){ for (int i=0; i < inputs.length; i++){ if (inputs[i] != null){ - this.vMaterialInput.set(i, inputs[i]); + this.vMaterialInput.add(i, inputs[i]); } } } @@ -288,6 +288,7 @@ public class Material { final public ItemStack[] getMaterialComposites(){ //Utils.LOG_WARNING("Something requested the materials needed for "+localizedName); + if (vMaterialInput != null){ if (!vMaterialInput.isEmpty()){ ItemStack[] temp = new ItemStack[vMaterialInput.size()]; for (int i=0;i<vMaterialInput.size();i++){ @@ -310,6 +311,7 @@ public class Material { } return temp; } + } return new ItemStack[]{}; } diff --git a/src/Java/gtPlusPlus/core/material/MaterialGenerator.java b/src/Java/gtPlusPlus/core/material/MaterialGenerator.java new file mode 100644 index 0000000000..55014f5ee8 --- /dev/null +++ b/src/Java/gtPlusPlus/core/material/MaterialGenerator.java @@ -0,0 +1,108 @@ +package gtPlusPlus.core.material; + +import gtPlusPlus.core.block.base.BasicBlock.BlockTypes; +import gtPlusPlus.core.block.base.BlockBaseModular; +import gtPlusPlus.core.item.base.bolts.BaseItemBolt; +import gtPlusPlus.core.item.base.dusts.BaseItemDust; +import gtPlusPlus.core.item.base.gears.BaseItemGear; +import gtPlusPlus.core.item.base.ingots.BaseItemIngot; +import gtPlusPlus.core.item.base.ingots.BaseItemIngotHot; +import gtPlusPlus.core.item.base.nugget.BaseItemNugget; +import gtPlusPlus.core.item.base.plates.BaseItemPlate; +import gtPlusPlus.core.item.base.plates.BaseItemPlateDouble; +import gtPlusPlus.core.item.base.rings.BaseItemRing; +import gtPlusPlus.core.item.base.rods.BaseItemRod; +import gtPlusPlus.core.item.base.rods.BaseItemRodLong; +import gtPlusPlus.core.item.base.rotors.BaseItemRotor; +import gtPlusPlus.core.item.base.screws.BaseItemScrew; +import gtPlusPlus.core.util.Utils; +import gtPlusPlus.core.util.item.ItemUtils; +import gtPlusPlus.xmod.gregtech.loaders.RecipeGen_BlastSmelter; +import gtPlusPlus.xmod.gregtech.loaders.RecipeGen_DustGeneration; +import gtPlusPlus.xmod.gregtech.loaders.RecipeGen_Extruder; +import gtPlusPlus.xmod.gregtech.loaders.RecipeGen_Plates; +import gtPlusPlus.xmod.gregtech.loaders.RecipeGen_ShapedCrafting; +import net.minecraft.block.Block; +import net.minecraft.item.Item; + +public class MaterialGenerator implements Runnable { + + final Material toGenerate; + + public MaterialGenerator(final Material M){ + this.toGenerate = M; + } + + @Override + public void run() { + generateItemsFromMaterial(toGenerate); + } + + + public static void generateItemsFromMaterial(final Material matInfo){ + String unlocalizedName = matInfo.getUnlocalizedName(); + String materialName = matInfo.getLocalizedName(); + short[] C = matInfo.getRGBA(); + int Colour = Utils.rgbtoHexValue(C[0], C[1], C[2]); + boolean hotIngot = matInfo.requiresBlastFurnace(); + int materialTier = matInfo.vTier; //TODO + + if (materialTier > 10 || materialTier <= 0){ + materialTier = 2; + } + + int sRadiation = 0; + if (ItemUtils.isRadioactive(materialName)){ + sRadiation = ItemUtils.getRadioactivityLevel(materialName); + } + + if (sRadiation >= 1){ + Item temp; + Block tempBlock; + tempBlock = new BlockBaseModular(unlocalizedName, materialName,BlockTypes.STANDARD, Colour); + temp = new BaseItemIngot("itemIngot"+unlocalizedName, materialName, Colour, sRadiation); + + temp = new BaseItemDust("itemDust"+unlocalizedName, materialName, matInfo, Colour, "Dust", materialTier, sRadiation); + temp = new BaseItemDust("itemDustTiny"+unlocalizedName, materialName, matInfo, Colour, "Tiny", materialTier, sRadiation); + temp = new BaseItemDust("itemDustSmall"+unlocalizedName, materialName, matInfo, Colour, "Small", materialTier, sRadiation); + temp = new BaseItemNugget(matInfo); + temp = new BaseItemPlate(matInfo); + temp = new BaseItemRod(matInfo); + temp = new BaseItemRodLong(matInfo); + } + + else { + Item temp; + Block tempBlock; + tempBlock = new BlockBaseModular(unlocalizedName, materialName,BlockTypes.STANDARD, Colour); + tempBlock = new BlockBaseModular(unlocalizedName, materialName,BlockTypes.FRAME, Colour); + temp = new BaseItemIngot("itemIngot"+unlocalizedName, materialName, Colour, sRadiation); + if (hotIngot){ + Item tempIngot = temp; + temp = new BaseItemIngotHot("itemHotIngot"+unlocalizedName, materialName, ItemUtils.getSimpleStack(tempIngot, 1), materialTier); + } + temp = new BaseItemDust("itemDust"+unlocalizedName, materialName, matInfo, Colour, "Dust", materialTier, sRadiation); + temp = new BaseItemDust("itemDustTiny"+unlocalizedName, materialName, matInfo, Colour, "Tiny", materialTier, sRadiation); + temp = new BaseItemDust("itemDustSmall"+unlocalizedName, materialName, matInfo, Colour, "Small", materialTier, sRadiation); + temp = new BaseItemNugget(matInfo); + temp = new BaseItemPlate(matInfo); + temp = new BaseItemPlateDouble(matInfo); + temp = new BaseItemBolt(matInfo); + temp = new BaseItemRod(matInfo); + temp = new BaseItemRodLong(matInfo); + temp = new BaseItemRing(matInfo); + temp = new BaseItemScrew(matInfo); + temp = new BaseItemRotor(matInfo); + temp = new BaseItemGear(matInfo); + } + + //Add A jillion Recipes + RecipeGen_Plates.generateRecipes(matInfo); + RecipeGen_Extruder.generateRecipes(matInfo); + RecipeGen_ShapedCrafting.generateRecipes(matInfo); + RecipeGen_DustGeneration.generateRecipes(matInfo); + RecipeGen_BlastSmelter.generateARecipe(matInfo); + + } + +} diff --git a/src/Java/gtPlusPlus/core/util/array/ArrayUtils.java b/src/Java/gtPlusPlus/core/util/array/ArrayUtils.java new file mode 100644 index 0000000000..ea02aaf1da --- /dev/null +++ b/src/Java/gtPlusPlus/core/util/array/ArrayUtils.java @@ -0,0 +1,18 @@ +package gtPlusPlus.core.util.array; + +import java.util.Arrays; + +public class ArrayUtils { + + public static void expandArray(Object[] someArray, Object newValueToAdd) { + Object[] series = someArray; + series = addElement(series, newValueToAdd); + } + + private static Object[] addElement(Object[] series, Object newValueToAdd) { + series = Arrays.copyOf(series, series.length + 1); + series[series.length - 1] = newValueToAdd; + return series; + } + +} diff --git a/src/Java/gtPlusPlus/core/util/item/ItemUtils.java b/src/Java/gtPlusPlus/core/util/item/ItemUtils.java index 39cdaacdb6..69d909f294 100644 --- a/src/Java/gtPlusPlus/core/util/item/ItemUtils.java +++ b/src/Java/gtPlusPlus/core/util/item/ItemUtils.java @@ -4,26 +4,12 @@ import gregtech.api.enums.Materials; import gregtech.api.enums.OrePrefixes; import gregtech.api.util.GT_ModHandler; import gregtech.api.util.GT_OreDictUnificator; -import gtPlusPlus.core.block.base.BasicBlock.BlockTypes; -import gtPlusPlus.core.block.base.BlockBaseModular; import gtPlusPlus.core.item.ModItems; import gtPlusPlus.core.item.base.BasicSpawnEgg; -import gtPlusPlus.core.item.base.bolts.BaseItemBolt; import gtPlusPlus.core.item.base.dusts.BaseItemDust; import gtPlusPlus.core.item.base.dusts.BaseItemDustUnique; import gtPlusPlus.core.item.base.dusts.decimal.BaseItemCentidust; import gtPlusPlus.core.item.base.dusts.decimal.BaseItemDecidust; -import gtPlusPlus.core.item.base.gears.BaseItemGear; -import gtPlusPlus.core.item.base.ingots.BaseItemIngot; -import gtPlusPlus.core.item.base.ingots.BaseItemIngotHot; -import gtPlusPlus.core.item.base.nugget.BaseItemNugget; -import gtPlusPlus.core.item.base.plates.BaseItemPlate; -import gtPlusPlus.core.item.base.plates.BaseItemPlateDouble; -import gtPlusPlus.core.item.base.rings.BaseItemRing; -import gtPlusPlus.core.item.base.rods.BaseItemRod; -import gtPlusPlus.core.item.base.rods.BaseItemRodLong; -import gtPlusPlus.core.item.base.rotors.BaseItemRotor; -import gtPlusPlus.core.item.base.screws.BaseItemScrew; import gtPlusPlus.core.item.tool.staballoy.MultiPickaxeBase; import gtPlusPlus.core.item.tool.staballoy.MultiSpadeBase; import gtPlusPlus.core.lib.CORE; @@ -32,16 +18,10 @@ import gtPlusPlus.core.material.Material; import gtPlusPlus.core.util.Utils; import gtPlusPlus.core.util.materials.MaterialUtils; import gtPlusPlus.core.util.wrapper.var; -import gtPlusPlus.xmod.gregtech.loaders.RecipeGen_BlastSmelter; -import gtPlusPlus.xmod.gregtech.loaders.RecipeGen_DustGeneration; -import gtPlusPlus.xmod.gregtech.loaders.RecipeGen_Extruder; -import gtPlusPlus.xmod.gregtech.loaders.RecipeGen_Plates; -import gtPlusPlus.xmod.gregtech.loaders.RecipeGen_ShapedCrafting; import java.util.ArrayList; import java.util.List; -import net.minecraft.block.Block; import net.minecraft.item.Item; import net.minecraft.item.Item.ToolMaterial; import net.minecraft.item.ItemStack; @@ -299,75 +279,6 @@ public class ItemUtils { return null; } - public static void generateItemsFromMaterial(Material matInfo){ - - String unlocalizedName = matInfo.getUnlocalizedName(); - String materialName = matInfo.getLocalizedName(); - short[] C = matInfo.getRGBA(); - int Colour = Utils.rgbtoHexValue(C[0], C[1], C[2]); - boolean hotIngot = matInfo.requiresBlastFurnace(); - int materialTier = matInfo.vTier; //TODO - - if (materialTier > 10 || materialTier <= 0){ - materialTier = 2; - } - - - - int sRadiation = 0; - if (isRadioactive(materialName)){ - sRadiation = getRadioactivityLevel(materialName); - } - - if (sRadiation >= 1){ - Item temp; - Block tempBlock; - tempBlock = new BlockBaseModular(unlocalizedName, materialName,BlockTypes.STANDARD, Colour); - temp = new BaseItemIngot("itemIngot"+unlocalizedName, materialName, Colour, sRadiation); - - temp = new BaseItemDust("itemDust"+unlocalizedName, materialName, matInfo, Colour, "Dust", materialTier, sRadiation); - temp = new BaseItemDust("itemDustTiny"+unlocalizedName, materialName, matInfo, Colour, "Tiny", materialTier, sRadiation); - temp = new BaseItemDust("itemDustSmall"+unlocalizedName, materialName, matInfo, Colour, "Small", materialTier, sRadiation); - temp = new BaseItemNugget(matInfo); - temp = new BaseItemPlate(matInfo); - temp = new BaseItemRod(matInfo); - temp = new BaseItemRodLong(matInfo); - } - - else { - Item temp; - Block tempBlock; - tempBlock = new BlockBaseModular(unlocalizedName, materialName,BlockTypes.STANDARD, Colour); - tempBlock = new BlockBaseModular(unlocalizedName, materialName,BlockTypes.FRAME, Colour); - temp = new BaseItemIngot("itemIngot"+unlocalizedName, materialName, Colour, sRadiation); - if (hotIngot){ - Item tempIngot = temp; - temp = new BaseItemIngotHot("itemHotIngot"+unlocalizedName, materialName, ItemUtils.getSimpleStack(tempIngot, 1), materialTier); - } - temp = new BaseItemDust("itemDust"+unlocalizedName, materialName, matInfo, Colour, "Dust", materialTier, sRadiation); - temp = new BaseItemDust("itemDustTiny"+unlocalizedName, materialName, matInfo, Colour, "Tiny", materialTier, sRadiation); - temp = new BaseItemDust("itemDustSmall"+unlocalizedName, materialName, matInfo, Colour, "Small", materialTier, sRadiation); - temp = new BaseItemNugget(matInfo); - temp = new BaseItemPlate(matInfo); - temp = new BaseItemPlateDouble(matInfo); - temp = new BaseItemBolt(matInfo); - temp = new BaseItemRod(matInfo); - temp = new BaseItemRodLong(matInfo); - temp = new BaseItemRing(matInfo); - temp = new BaseItemScrew(matInfo); - temp = new BaseItemRotor(matInfo); - temp = new BaseItemGear(matInfo); - } - - //Add A jillion Recipes - RecipeGen_Plates.generateRecipes(matInfo); - RecipeGen_Extruder.generateRecipes(matInfo); - RecipeGen_ShapedCrafting.generateRecipes(matInfo); - RecipeGen_DustGeneration.generateRecipes(matInfo); - RecipeGen_BlastSmelter.generateARecipe(matInfo); - - } - public static Item[] generateDusts(String unlocalizedName, String materialName, int materialTier, Material matInfo, int Colour){ int radioactive = getRadioactivityLevel(materialName); Item[] output = { diff --git a/src/Java/gtPlusPlus/core/util/materials/MaterialUtils.java b/src/Java/gtPlusPlus/core/util/materials/MaterialUtils.java index dac1162357..1ccb0f771c 100644 --- a/src/Java/gtPlusPlus/core/util/materials/MaterialUtils.java +++ b/src/Java/gtPlusPlus/core/util/materials/MaterialUtils.java @@ -77,7 +77,7 @@ public class MaterialUtils { 50, //Protons 50, //Neutrons false, - null, + "", sRadioactivity); return temp; } diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_AlloyBlastSmelter.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_AlloyBlastSmelter.java index 34b8dde304..61661b324b 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_AlloyBlastSmelter.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_AlloyBlastSmelter.java @@ -116,7 +116,7 @@ public class GregtechMetaTileEntity_AlloyBlastSmelter Utils.LOG_INFO("Found some Valid Inputs."); long tVoltage = getMaxInputVoltage(); byte tTier = (byte) Math.max(1, GT_Utility.getTier(tVoltage)); - GT_Recipe tRecipe = GT_Recipe.GT_Recipe_Map.sBlastRecipes.findRecipe(getBaseMetaTileEntity(), false, gregtech.api.enums.GT_Values.V[tTier], tFluids, tInputs); + GT_Recipe tRecipe = Recipe_GT.Gregtech_Recipe_Map.sAlloyBlastSmelterRecipes.findRecipe(getBaseMetaTileEntity(), false, gregtech.api.enums.GT_Values.V[tTier], tFluids, tInputs); if ((tRecipe != null) && (this.mHeatingCapacity >= tRecipe.mSpecialValue) && (tRecipe.isRecipeInputEqual(true, tFluids, tInputs))) { this.mEfficiency = (10000 - (getIdealStatus() - getRepairStatus()) * 1000); this.mEfficiencyIncrease = 10000; @@ -135,7 +135,7 @@ public class GregtechMetaTileEntity_AlloyBlastSmelter this.mEUt = (-this.mEUt); } this.mMaxProgresstime = Math.max(1, this.mMaxProgresstime); - this.mOutputItems = new ItemStack[]{tRecipe.getOutput(0), tRecipe.getOutput(1)}; + this.mOutputFluids = new FluidStack[]{tRecipe.getFluidOutput(0)}; updateSlots(); return true; } diff --git a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelter.java b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelter.java index 54a5614b80..fec7fade67 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelter.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelter.java @@ -2,13 +2,9 @@ package gtPlusPlus.xmod.gregtech.loaders; import gregtech.api.enums.GT_Values; import gregtech.api.enums.ItemList; -import gregtech.api.enums.Materials; -import gregtech.api.enums.OrePrefixes; -import gregtech.api.enums.SubTag; -import gregtech.api.objects.MaterialStack; -import gregtech.api.util.GT_OreDictUnificator; import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.material.Material; +import gtPlusPlus.core.material.MaterialStack; import gtPlusPlus.core.util.Utils; import gtPlusPlus.core.util.item.ItemUtils; @@ -16,159 +12,20 @@ import java.util.ArrayList; import net.minecraft.item.ItemStack; -public class RecipeGen_BlastSmelter { +public class RecipeGen_BlastSmelter implements Runnable{ - public static void generateRecipes(){ - - Materials[] GregMaterials = Materials.values(); - - for (Materials M : GregMaterials){ - - if (M.equals(Materials.Iridium) || M.equals(Materials.Osmium) || M.equals(Materials.Osmiridium) - || !M.equals(Materials.Osmiridium) || !M.equals(Materials.Osmiridium) || !M.equals(Materials.Osmiridium) - || !M.equals(Materials.Osmiridium) || !M.equals(Materials.Osmiridium) || !M.equals(Materials.Osmiridium) - || !M.equals(Materials.Osmiridium) || !M.equals(Materials.Osmiridium) || !M.equals(Materials.Osmiridium) - || !M.equals(Materials.Osmiridium) || !M.equals(Materials.Osmiridium) || !M.equals(Materials.Osmiridium) - ){ - - - //Add a Blast Smelting Recipe, Let's go! - ItemStack tStack; - if ((null != (tStack = GT_OreDictUnificator.get(OrePrefixes.ingot, M.mSmeltInto, 1L))) && (!M.contains(SubTag.NO_SMELTING) && (M.contains(SubTag.METAL)))) { - - //Prepare some Variables - ItemStack[] components; - MaterialStack[] tMaterial; - short counter=0; - int inputStackCount=0; - int fluidAmount=0; - boolean doTest = true; - - //This Bad boy here is what dictates unique recipes. Fuck life, right? - ItemStack circuitGT = ItemUtils.getGregtechCircuit(0); - - - //Set a duration - int duration = 0; - if (M.mBlastFurnaceTemp > 150){ - duration = (int) Math.max(M.getMass() / 50L, 1L) * M.mBlastFurnaceTemp; - } - else { - duration = (int) Math.max(M.getMass() / 50L, 1L) * 150; - } - - - //Make a simple one Material Materialstack[] and log it for validity. - tMaterial = new MaterialStack[]{new MaterialStack(M, 1)}; - circuitGT = ItemUtils.getGregtechCircuit(1); - ItemStack[] tItemStackTest = new ItemStack[]{circuitGT, ItemUtils.getItemStackOfAmountFromOreDictNoBroken("dust"+M, 1)}; - inputStackCount = 1; - fluidAmount = 144*inputStackCount; - Utils.LOG_WARNING("Adding an Alloy Blast Smelter Recipe for "+M+". Gives "+fluidAmount+"L of molten metal."); - Utils.LOG_WARNING("tMaterial.length: "+tMaterial.length+"."); - for (int das=0;das<tItemStackTest.length;das++){ - if (tItemStackTest[das] != null) - Utils.LOG_WARNING("tMaterial["+das+"]: "+tItemStackTest[das].getDisplayName()+" Meta: "+tItemStackTest[das].getItemDamage()+", Amount: "+tItemStackTest[das].stackSize); - } - - //Generate Recipes for all singular materials that can be made molten. - if (M.mBlastFurnaceRequired) { - doTest = CORE.RA.addBlastSmelterRecipe(tItemStackTest, M.getMolten(fluidAmount), 100, duration, 240); - } - else { - doTest = CORE.RA.addBlastSmelterRecipe(tItemStackTest, M.getMolten(fluidAmount), 100, duration/2, 120); - } - - if (doTest){ - //Reset the Variables for compounds if last recipe was a success. - inputStackCount=0; - counter=0; - - - int mMaterialListSize=0; - for (MaterialStack ternkfsdf:M.mMaterialList){ - mMaterialListSize++; - } - Utils.LOG_WARNING("Size: "+mMaterialListSize); - //If this Material has some kind of compound list, proceed - if (mMaterialListSize > 1){ - MaterialStack[] tempStack = new MaterialStack[mMaterialListSize]; - circuitGT = ItemUtils.getGregtechCircuit(mMaterialListSize); - //Just double checking - if (tempStack.length > 1){ - - //Builds me a MaterialStack[] from the MaterialList of M. - int ooo=0; - for (MaterialStack xMaterial : M.mMaterialList){ - Utils.LOG_WARNING("FOUND: "+xMaterial.mMaterial); - Utils.LOG_WARNING("ADDING: "+xMaterial.mMaterial); - tempStack[ooo] = M.mMaterialList.get(ooo); - ooo++; - } - - //Builds me an ItemStack[] of the materials. - Without a circuit - this gets a good count for the 144L fluid multiplier - components = new ItemStack[tempStack.length]; - for (MaterialStack aOutputPart : tempStack){ - if (aOutputPart != null){ - Utils.LOG_WARNING("Finding dust: "+aOutputPart.mMaterial); - ItemStack rStack = ItemUtils.getItemStackOfAmountFromOreDictNoBroken("dust"+aOutputPart.mMaterial, (int) aOutputPart.mAmount); - if (rStack != null){ - Utils.LOG_WARNING("Found dust: "+aOutputPart.mMaterial); - components[counter] = rStack; - inputStackCount = inputStackCount+rStack.stackSize; - } - } - counter++; - } - - - if (mMaterialListSize > 0 && mMaterialListSize < 9){ - 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]; - } - } - } - - /*//Add a shapeless recipe for each dust this way - Compat mode. - ItemStack outputStack = tStack; - outputStack.stackSize = mMaterialListSize; - RecipeUtils.buildShapelessRecipe(outputStack, components);*/ - - - - //Set Fluid output - fluidAmount = 144*inputStackCount; - - - Utils.LOG_WARNING("Adding an Alloy Blast Smelter Recipe for "+M+" using it's compound dusts. This material has "+ inputStackCount+" parts. Gives "+fluidAmount+"L of molten metal."); - Utils.LOG_WARNING("tMaterial.length: "+components.length+"."); - for (int das=0;das<components.length;das++){ - if (components[das] != null) - Utils.LOG_WARNING("tMaterial["+das+"]: "+components[das].getDisplayName()+" Meta: "+components[das].getItemDamage()+", Amount: "+components[das].stackSize); - } - if (M.mBlastFurnaceRequired) { - CORE.RA.addBlastSmelterRecipe(components, M.getMolten(fluidAmount), 100, duration, 500); - } - else { - CORE.RA.addBlastSmelterRecipe(components, M.getMolten(fluidAmount), 100, duration, 240); - } - } - } - } - } - } - } + final Material toGenerate; + + public RecipeGen_BlastSmelter(final Material M){ + this.toGenerate = M; + } + + @Override + public void run() { + generateARecipe(toGenerate); } - - public static void generateARecipe(Material M){ + public static void generateARecipe(final Material M){ //Add a Blast Smelting Recipe, Let's go! ItemStack tStack; @@ -176,7 +33,7 @@ public class RecipeGen_BlastSmelter { //Prepare some Variables ItemStack[] components; - ArrayList<gtPlusPlus.core.material.MaterialStack> tMaterial; + ArrayList<MaterialStack> tMaterial = new ArrayList<MaterialStack>(); short counter=0; int inputStackCount=0; int fluidAmount=0; @@ -367,22 +224,5 @@ public class RecipeGen_BlastSmelter { Utils.LOG_WARNING("doTest: "+doTest+" | tMaterial != null: "+(tMaterial != null)); } } - } - - - private ItemStack[] getItemStackFromMaterialStack(MaterialStack[] aInput){ - ItemStack[] components = new ItemStack[aInput.length]; - short counter=0; - for (MaterialStack aOutputPart : aInput){ - if (aOutputPart != null && components[counter] != null){ - ItemStack aStack = ItemUtils.getItemStackOfAmountFromOreDictNoBroken("dust"+aOutputPart.mMaterial, (int) aOutputPart.mAmount); - components[counter] = aStack; - } - counter++; - } - return components; - } - - } diff --git a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelterGT.java b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelterGT.java new file mode 100644 index 0000000000..be2dbff77a --- /dev/null +++ b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelterGT.java @@ -0,0 +1,172 @@ +package gtPlusPlus.xmod.gregtech.loaders; + +import gregtech.api.enums.Materials; +import gregtech.api.enums.OrePrefixes; +import gregtech.api.enums.SubTag; +import gregtech.api.objects.MaterialStack; +import gregtech.api.util.GT_OreDictUnificator; +import gtPlusPlus.core.lib.CORE; +import gtPlusPlus.core.util.Utils; +import gtPlusPlus.core.util.item.ItemUtils; +import net.minecraft.item.ItemStack; + +public class RecipeGen_BlastSmelterGT implements Runnable{ + + public RecipeGen_BlastSmelterGT(){ + + } + + @Override + public void run() { + generateRecipes(); + } + + public static void generateRecipes(){ + + Materials[] GregMaterials = Materials.values(); + + for (Materials M : GregMaterials){ + + if (M.equals(Materials.Iridium) || M.equals(Materials.Osmium) || M.equals(Materials.Osmiridium) + || !M.equals(Materials.Osmiridium) || !M.equals(Materials.Osmiridium) || !M.equals(Materials.Osmiridium) + || !M.equals(Materials.Osmiridium) || !M.equals(Materials.Osmiridium) || !M.equals(Materials.Osmiridium) + || !M.equals(Materials.Osmiridium) || !M.equals(Materials.Osmiridium) || !M.equals(Materials.Osmiridium) + || !M.equals(Materials.Osmiridium) || !M.equals(Materials.Osmiridium) || !M.equals(Materials.Osmiridium) + ){ + + + //Add a Blast Smelting Recipe, Let's go! + ItemStack tStack; + if ((null != (tStack = GT_OreDictUnificator.get(OrePrefixes.ingot, M.mSmeltInto, 1L))) && (!M.contains(SubTag.NO_SMELTING) && (M.contains(SubTag.METAL)))) { + + //Prepare some Variables + ItemStack[] components; + MaterialStack[] tMaterial; + short counter=0; + int inputStackCount=0; + int fluidAmount=0; + boolean doTest = true; + + //This Bad boy here is what dictates unique recipes. Fuck life, right? + ItemStack circuitGT = ItemUtils.getGregtechCircuit(0); + + + //Set a duration + int duration = 0; + if (M.mBlastFurnaceTemp > 150){ + duration = (int) Math.max(M.getMass() / 50L, 1L) * M.mBlastFurnaceTemp; + } + else { + duration = (int) Math.max(M.getMass() / 50L, 1L) * 150; + } + + + //Make a simple one Material Materialstack[] and log it for validity. + tMaterial = new MaterialStack[]{new MaterialStack(M, 1)}; + circuitGT = ItemUtils.getGregtechCircuit(1); + ItemStack[] tItemStackTest = new ItemStack[]{circuitGT, ItemUtils.getItemStackOfAmountFromOreDictNoBroken("dust"+M, 1)}; + inputStackCount = 1; + fluidAmount = 144*inputStackCount; + Utils.LOG_WARNING("Adding an Alloy Blast Smelter Recipe for "+M+". Gives "+fluidAmount+"L of molten metal."); + Utils.LOG_WARNING("tMaterial.length: "+tMaterial.length+"."); + for (int das=0;das<tItemStackTest.length;das++){ + if (tItemStackTest[das] != null) + Utils.LOG_WARNING("tMaterial["+das+"]: "+tItemStackTest[das].getDisplayName()+" Meta: "+tItemStackTest[das].getItemDamage()+", Amount: "+tItemStackTest[das].stackSize); + } + + //Generate Recipes for all singular materials that can be made molten. + if (M.mBlastFurnaceRequired) { + doTest = CORE.RA.addBlastSmelterRecipe(tItemStackTest, M.getMolten(fluidAmount), 100, duration, 240); + } + else { + doTest = CORE.RA.addBlastSmelterRecipe(tItemStackTest, M.getMolten(fluidAmount), 100, duration/2, 120); + } + + if (doTest){ + //Reset the Variables for compounds if last recipe was a success. + inputStackCount=0; + counter=0; + + + int mMaterialListSize=0; + for (MaterialStack ternkfsdf:M.mMaterialList){ + mMaterialListSize++; + } + Utils.LOG_WARNING("Size: "+mMaterialListSize); + //If this Material has some kind of compound list, proceed + if (mMaterialListSize > 1){ + MaterialStack[] tempStack = new MaterialStack[mMaterialListSize]; + circuitGT = ItemUtils.getGregtechCircuit(mMaterialListSize); + //Just double checking + if (tempStack.length > 1){ + + //Builds me a MaterialStack[] from the MaterialList of M. + int ooo=0; + for (MaterialStack xMaterial : M.mMaterialList){ + Utils.LOG_WARNING("FOUND: "+xMaterial.mMaterial); + Utils.LOG_WARNING("ADDING: "+xMaterial.mMaterial); + tempStack[ooo] = M.mMaterialList.get(ooo); + ooo++; + } + + //Builds me an ItemStack[] of the materials. - Without a circuit - this gets a good count for the 144L fluid multiplier + components = new ItemStack[tempStack.length]; + for (MaterialStack aOutputPart : tempStack){ + if (aOutputPart != null){ + Utils.LOG_WARNING("Finding dust: "+aOutputPart.mMaterial); + ItemStack rStack = ItemUtils.getItemStackOfAmountFromOreDictNoBroken("dust"+aOutputPart.mMaterial, (int) aOutputPart.mAmount); + if (rStack != null){ + Utils.LOG_WARNING("Found dust: "+aOutputPart.mMaterial); + components[counter] = rStack; + inputStackCount = inputStackCount+rStack.stackSize; + } + } + counter++; + } + + + if (mMaterialListSize > 0 && mMaterialListSize < 9){ + 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]; + } + } + } + + /*//Add a shapeless recipe for each dust this way - Compat mode. + ItemStack outputStack = tStack; + outputStack.stackSize = mMaterialListSize; + RecipeUtils.buildShapelessRecipe(outputStack, components);*/ + + + + //Set Fluid output + fluidAmount = 144*inputStackCount; + + + Utils.LOG_WARNING("Adding an Alloy Blast Smelter Recipe for "+M+" using it's compound dusts. This material has "+ inputStackCount+" parts. Gives "+fluidAmount+"L of molten metal."); + Utils.LOG_WARNING("tMaterial.length: "+components.length+"."); + for (int das=0;das<components.length;das++){ + if (components[das] != null) + Utils.LOG_WARNING("tMaterial["+das+"]: "+components[das].getDisplayName()+" Meta: "+components[das].getItemDamage()+", Amount: "+components[das].stackSize); + } + if (M.mBlastFurnaceRequired) { + CORE.RA.addBlastSmelterRecipe(components, M.getMolten(fluidAmount), 100, duration, 500); + } + else { + CORE.RA.addBlastSmelterRecipe(components, M.getMolten(fluidAmount), 100, duration, 240); + } + } + } + } + } + } + } + } +} diff --git a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_DustGeneration.java b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_DustGeneration.java index 4f847d697f..c0122cbcf5 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_DustGeneration.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_DustGeneration.java @@ -7,10 +7,21 @@ import gtPlusPlus.core.util.item.ItemUtils; import gtPlusPlus.core.util.recipe.RecipeUtils; import net.minecraft.item.ItemStack; -public class RecipeGen_DustGeneration { +public class RecipeGen_DustGeneration implements Runnable{ - public static void generateRecipes(Material material){ - int tVoltageMultiplier = material.getMeltingPointK() >= 2800 ? 64 : 16; + final Material toGenerate; + + public RecipeGen_DustGeneration(final Material M){ + this.toGenerate = M; + } + + @Override + public void run() { + generateRecipes(toGenerate); + } + + public static void generateRecipes(final Material material){ + final int tVoltageMultiplier = material.getMeltingPointK() >= 2800 ? 64 : 16; Utils.LOG_WARNING("Generating Shaped Crafting recipes for "+material.getLocalizedName()); //TODO //Ring Recipe @@ -27,12 +38,12 @@ public class RecipeGen_DustGeneration { } - ItemStack normalDust = material.getDust(1); - ItemStack smallDust = material.getSmallDust(1); - ItemStack tinyDust = material.getTinyDust(1); + final ItemStack normalDust = material.getDust(1); + final ItemStack smallDust = material.getSmallDust(1); + final ItemStack tinyDust = material.getTinyDust(1); - ItemStack[] inputStacks = material.getMaterialComposites(); - ItemStack outputStacks = material.getDust(material.smallestStackSizeWhenProcessing); + final ItemStack[] inputStacks = material.getMaterialComposites(); + final ItemStack outputStacks = material.getDust(material.smallestStackSizeWhenProcessing); if (RecipeUtils.recipeBuilder( tinyDust, tinyDust, tinyDust, @@ -87,7 +98,7 @@ public class RecipeGen_DustGeneration { if (inputStacks.length != 0 && inputStacks.length <= 4){ //Log Input items Utils.LOG_WARNING(ItemUtils.getArrayStackNames(inputStacks)); - long[] inputStackSize = material.vSmallestRatio; + final long[] inputStackSize = material.vSmallestRatio; Utils.LOG_INFO("mixer is stacksizeVar null? "+(inputStackSize != null)); //Is smallest ratio invalid? if (inputStackSize != null){ @@ -98,10 +109,18 @@ public class RecipeGen_DustGeneration { } //Relog input values, with stack sizes Utils.LOG_WARNING(ItemUtils.getArrayStackNames(inputStacks)); + + //Get us four ItemStacks to input into the mixer + ItemStack input1, input2, input3, input4; + input1 = (inputStacks.length >= 1) ? (input1 = (inputStacks[0] == null) ? null : inputStacks[0]) : null; + 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; + //Add mixer Recipe if (GT_Values.RA.addMixerRecipe( - inputStacks[0], inputStacks[1], - inputStacks[2], inputStacks[3], + input1, input2, + input3, input4, null, null, outputStacks, (int) Math.max(material.getMass() * 2L * 1, 1), diff --git a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Plates.java b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Plates.java index add6cf41b4..0502156525 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Plates.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Plates.java @@ -8,18 +8,28 @@ import gtPlusPlus.core.material.Material; import gtPlusPlus.core.util.Utils; import net.minecraft.item.ItemStack; -public class RecipeGen_Plates { +public class RecipeGen_Plates implements Runnable{ - public static void generateRecipes(Material material){ + final Material toGenerate; + + public RecipeGen_Plates(final Material M){ + this.toGenerate = M; + } + + @Override + public void run() { + generateRecipes(toGenerate); + } + + public static void generateRecipes(final Material material){ - int tVoltageMultiplier = material.getMeltingPointK() >= 2800 ? 64 : 16; - ItemStack ingotStackOne = material.getIngot(1); - ItemStack ingotStackTwo = material.getIngot(2); - ItemStack shape_Mold = ItemList.Shape_Mold_Plate.get(0); - ItemStack shape_Extruder = ItemList.Shape_Extruder_Plate.get(0); - ItemStack plate_Single = material.getPlate(1); - ItemStack plate_SingleTwo = material.getPlate(2); - ItemStack plate_Double = material.getPlateDouble(1); + final int tVoltageMultiplier = material.getMeltingPointK() >= 2800 ? 64 : 16; + 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_Double = material.getPlateDouble(1); Utils.LOG_WARNING("Generating Plate recipes for "+material.getLocalizedName()); diff --git a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_ShapedCrafting.java b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_ShapedCrafting.java index 0e8db188ae..6eaa164342 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_ShapedCrafting.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_ShapedCrafting.java @@ -6,9 +6,20 @@ import gtPlusPlus.core.util.Utils; import gtPlusPlus.core.util.recipe.RecipeUtils; import net.minecraft.item.ItemStack; -public class RecipeGen_ShapedCrafting { +public class RecipeGen_ShapedCrafting implements Runnable{ - public static void generateRecipes(Material material){ + final Material toGenerate; + + public RecipeGen_ShapedCrafting(final Material M){ + this.toGenerate = M; + } + + @Override + public void run() { + generateRecipes(toGenerate); + } + + public static void generateRecipes(final Material material){ Utils.LOG_WARNING("Generating Shaped Crafting recipes for "+material.getLocalizedName()); //TODO //Plates @@ -62,7 +73,7 @@ public class RecipeGen_ShapedCrafting { //Framebox Recipe if (!material.isRadioactive){ - ItemStack stackStick = material.getRod(1); + final ItemStack stackStick = material.getRod(1); if (RecipeUtils.recipeBuilder( stackStick, stackStick, stackStick, stackStick, "craftingToolWrench", stackStick, |