aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus/xmod/gregtech
diff options
context:
space:
mode:
authorAlkalus <draknyte1@hotmail.com>2017-07-27 10:02:53 +1000
committerAlkalus <draknyte1@hotmail.com>2017-07-27 10:02:53 +1000
commitc680993ec0cfdae50439669c42ffb4a78f3bfb7e (patch)
tree45fb5237d5f0ec88220d85b7ae91dca827343f50 /src/Java/gtPlusPlus/xmod/gregtech
parent01dce237960e968a46880b425cdd935042cc3c78 (diff)
downloadGT5-Unofficial-c680993ec0cfdae50439669c42ffb4a78f3bfb7e.tar.gz
GT5-Unofficial-c680993ec0cfdae50439669c42ffb4a78f3bfb7e.tar.bz2
GT5-Unofficial-c680993ec0cfdae50439669c42ffb4a78f3bfb7e.zip
+ Added new handler for Blast Smelter recipe addition.
> Should now handle recipes in the same manner the Electric Blast Furnace does. > However, if it requires a fluid input it will skip that material. > Should also now add recipes for crushed ores and small dusts. $ This fixes #116 and also fixes #99.
Diffstat (limited to 'src/Java/gtPlusPlus/xmod/gregtech')
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/HANDLER_GT.java4
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelterGT_Ex.java111
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