aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gtPlusPlus/core/util/reflect/AddGregtechRecipe.java
blob: f33d3d90d7b938a08cbecdb135e9edd4b4099a17 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package gtPlusPlus.core.util.reflect;

import static gtPlusPlus.api.recipe.GTPPRecipeMaps.cokeOvenRecipes;

import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;

import gregtech.api.enums.GTValues;
import gregtech.api.util.GTRecipe;
import gregtech.api.util.GTUtility;

public final class AddGregtechRecipe {

    public static boolean importPyroRecipe(GTRecipe aRecipe) {

        int aModifiedTime = (int) (aRecipe.mDuration * 0.8);

        if (aRecipe.mInputs == null || aRecipe.mFluidInputs == null
            || aRecipe.mFluidOutputs == null
            || aRecipe.mOutputs == null) {
            return false;
        }
        if (aRecipe.mInputs.length > 2 || aRecipe.mFluidInputs.length > 1
            || aRecipe.mFluidOutputs.length > 1
            || aRecipe.mOutputs.length > 9) {
            return false;
        } else if (aRecipe.mInputs.length <= 0) {
            return false;
        }

        int aCircuitNumber = -1;
        Item aCircuit = GTUtility.getIntegratedCircuit(1)
            .getItem();
        boolean hasCircuit = false;

        for (ItemStack a : aRecipe.mInputs) {
            if (a != null && a.getItem() == aCircuit) {
                hasCircuit = true;
                aCircuitNumber = a.getItemDamage();
                break;
            }
        }

        ItemStack aInputItem = null;
        if (!hasCircuit || aCircuitNumber < 1) {
            return false;
        }

        for (ItemStack a : aRecipe.mInputs) {
            if (a != null && a.getItem() != aCircuit) {
                aInputItem = a;
                break;
            }
        }
        ItemStack[] inputs;
        if (aInputItem == null) {
            inputs = new ItemStack[] { GTUtility.getIntegratedCircuit(aCircuitNumber) };
        } else {
            inputs = new ItemStack[] { GTUtility.getIntegratedCircuit(aCircuitNumber), aInputItem };
        }

        GTValues.RA.stdBuilder()
            .itemInputs(inputs)
            .itemOutputs(aRecipe.mOutputs)
            .fluidInputs(aRecipe.mFluidInputs)
            .fluidOutputs(aRecipe.mFluidOutputs)
            .eut(aRecipe.mEUt)
            .duration(aModifiedTime)
            .addTo(cokeOvenRecipes);

        return true;
    }
}