diff options
Diffstat (limited to 'src/Java/gtPlusPlus/xmod/gregtech')
-rw-r--r-- | src/Java/gtPlusPlus/xmod/gregtech/HANDLER_GT.java | 4 | ||||
-rw-r--r-- | src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelterGT_Ex.java | 111 |
2 files changed, 114 insertions, 1 deletions
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/HANDLER_GT.java b/src/Java/gtPlusPlus/xmod/gregtech/HANDLER_GT.java index 37c9e90fc5..6dfcab91a7 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/HANDLER_GT.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/HANDLER_GT.java @@ -3,6 +3,7 @@ package gtPlusPlus.xmod.gregtech; import gregtech.api.util.GT_Config; import gtPlusPlus.core.handler.COMPAT_HANDLER; import gtPlusPlus.core.lib.CORE; +import gtPlusPlus.core.recipe.RECIPES_LaserEngraver; import gtPlusPlus.xmod.gregtech.api.enums.GregtechOrePrefixes.GT_Materials; import gtPlusPlus.xmod.gregtech.common.blocks.fluid.GregtechFluidHandler; import gtPlusPlus.xmod.gregtech.common.items.MetaGeneratedGregtechItems; @@ -42,7 +43,8 @@ public class HANDLER_GT { } //Generates recipes for all gregtech smelting and alloy smelting combinations. - RecipeGen_BlastSmelterGT.generateRecipes(); + //RecipeGen_BlastSmelterGT.generateRecipes(); + new RecipeGen_BlastSmelterGT_Ex(); } diff --git a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelterGT_Ex.java b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelterGT_Ex.java new file mode 100644 index 0000000000..31823932ee --- /dev/null +++ b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelterGT_Ex.java @@ -0,0 +1,111 @@ +package gtPlusPlus.xmod.gregtech.loaders; + +import gregtech.api.enums.*; +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.item.ItemUtils; +import gtPlusPlus.core.util.math.MathUtils; +import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.FluidStack; + +public class RecipeGen_BlastSmelterGT_Ex implements IOreRecipeRegistrator { + + private final OrePrefixes[] mSmeltingPrefixes = { + OrePrefixes.crushed, + 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); + } + + public void registerOre(OrePrefixes aPrefix, Materials aMaterial, String aOreDictName, String aModName, ItemStack aStack) { + switch (aPrefix) { + case dust: + ItemStack tDustStack; + 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 dustSmall: + 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 (!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 (!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 if (input1 == null || input2 == null){ + count = 1; + } + 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; + } + + //Set up input components. + ItemStack configCircuit = ItemUtils.getGregtechCircuit(count); + components = new ItemStack[]{configCircuit, input1, input2}; + + //Add Blast Smelter Recipe. + CORE.RA.addBlastSmelterRecipe( + components, + smeltInto.mSmeltInto.getMolten(144L), + 100, + MathUtils.roundToClosestInt(time*0.8), + euCost); // EU Cost + + return false; + } + +}
\ No newline at end of file |