aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/loaders/oreprocessing/ProcessingPipe.java
blob: 58f0c6e29bbf0a208beeec28498ae03ff47d7490 (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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
package gregtech.loaders.oreprocessing;

import static gregtech.api.enums.GT_Values.RA;
import static gregtech.api.util.GT_Utility.calculateRecipeEU;

import net.minecraft.item.ItemStack;

import gregtech.api.enums.*;
import gregtech.api.util.GT_ModHandler;
import gregtech.api.util.GT_OreDictUnificator;
import gregtech.api.util.GT_Utility;

public class ProcessingPipe implements gregtech.api.interfaces.IOreRecipeRegistrator {

    public ProcessingPipe() {
        OrePrefixes.pipeHuge.add(this);
        OrePrefixes.pipeLarge.add(this);
        OrePrefixes.pipeMedium.add(this);
        OrePrefixes.pipeSmall.add(this);
        OrePrefixes.pipeTiny.add(this);
        OrePrefixes.pipeRestrictiveHuge.add(this);
        OrePrefixes.pipeRestrictiveLarge.add(this);
        OrePrefixes.pipeRestrictiveMedium.add(this);
        OrePrefixes.pipeRestrictiveSmall.add(this);
        OrePrefixes.pipeRestrictiveTiny.add(this);
        OrePrefixes.pipeQuadruple.add(this);
        OrePrefixes.pipeNonuple.add(this);
    }

    @Override
    public void registerOre(OrePrefixes aPrefix, Materials aMaterial, String aOreDictName, String aModName,
            ItemStack aStack) {
        switch (aPrefix) {
            case pipeHuge, pipeLarge, pipeMedium, pipeSmall, pipeTiny -> {
                if (aMaterial.getProcessingMaterialTierEU() < TierEU.IV) {

                    GT_ModHandler.addCraftingRecipe(
                            GT_OreDictUnificator.get(OrePrefixes.pipeTiny, aMaterial, 8L),
                            GT_ModHandler.RecipeBits.BUFFERED,
                            new Object[] { "PPP", "h w", "PPP", 'P', OrePrefixes.plate.get(aMaterial) });
                    GT_ModHandler.addCraftingRecipe(
                            GT_OreDictUnificator.get(OrePrefixes.pipeSmall, aMaterial, 6L),
                            GT_ModHandler.RecipeBits.BUFFERED,
                            new Object[] { "PWP", "P P", "PHP", 'P',
                                    aMaterial == Materials.Wood ? OrePrefixes.plank.get(aMaterial)
                                            : OrePrefixes.plate.get(aMaterial),
                                    'H',
                                    aMaterial.contains(SubTag.WOOD) ? ToolDictNames.craftingToolSoftHammer
                                            : ToolDictNames.craftingToolHardHammer,
                                    'W', aMaterial.contains(SubTag.WOOD) ? ToolDictNames.craftingToolSaw
                                            : ToolDictNames.craftingToolWrench });
                    GT_ModHandler.addCraftingRecipe(
                            GT_OreDictUnificator.get(OrePrefixes.pipeMedium, aMaterial, 2L),
                            GT_ModHandler.RecipeBits.BUFFERED,
                            new Object[] { "PPP", "W H", "PPP", 'P',
                                    aMaterial == Materials.Wood ? OrePrefixes.plank.get(aMaterial)
                                            : OrePrefixes.plate.get(aMaterial),
                                    'H',
                                    aMaterial.contains(SubTag.WOOD) ? ToolDictNames.craftingToolSoftHammer
                                            : ToolDictNames.craftingToolHardHammer,
                                    'W', aMaterial.contains(SubTag.WOOD) ? ToolDictNames.craftingToolSaw
                                            : ToolDictNames.craftingToolWrench });
                    GT_ModHandler.addCraftingRecipe(
                            GT_OreDictUnificator.get(OrePrefixes.pipeLarge, aMaterial, 1L),
                            GT_ModHandler.RecipeBits.BUFFERED,
                            new Object[] { "PHP", "P P", "PWP", 'P',
                                    aMaterial == Materials.Wood ? OrePrefixes.plank.get(aMaterial)
                                            : OrePrefixes.plate.get(aMaterial),
                                    'H',
                                    aMaterial.contains(SubTag.WOOD) ? ToolDictNames.craftingToolSoftHammer
                                            : ToolDictNames.craftingToolHardHammer,
                                    'W', aMaterial.contains(SubTag.WOOD) ? ToolDictNames.craftingToolSaw
                                            : ToolDictNames.craftingToolWrench });
                    GT_ModHandler.addCraftingRecipe(
                            GT_OreDictUnificator.get(OrePrefixes.pipeHuge, aMaterial, 1L),
                            GT_ModHandler.RecipeBits.BUFFERED,
                            new Object[] { "DhD", "D D", "DwD", 'D', OrePrefixes.plateDouble.get(aMaterial) });
                }
            }
            case pipeRestrictiveHuge, pipeRestrictiveLarge, pipeRestrictiveMedium, pipeRestrictiveSmall, pipeRestrictiveTiny -> RA.addAssemblerRecipe(
                    GT_OreDictUnificator.get(aOreDictName.replaceFirst("Restrictive", ""), null, 1L, false, true),
                    GT_OreDictUnificator.get(
                            OrePrefixes.ring,
                            Materials.Steel,
                            aPrefix.mSecondaryMaterial.mAmount / OrePrefixes.ring.mMaterialAmount),
                    GT_Utility.copyAmount(1L, aStack),
                    (int) (aPrefix.mSecondaryMaterial.mAmount * 400L / OrePrefixes.ring.mMaterialAmount),
                    4);
            case pipeQuadruple -> {
                if (aMaterial.getProcessingMaterialTierEU() < TierEU.IV) {

                    GT_ModHandler.addCraftingRecipe(
                            GT_OreDictUnificator.get(OrePrefixes.pipeQuadruple, aMaterial, 1),
                            GT_ModHandler.RecipeBits.REVERSIBLE | GT_ModHandler.RecipeBits.BUFFERED,
                            new Object[] { "MM ", "MM ", "   ", 'M',
                                    GT_OreDictUnificator.get(OrePrefixes.pipeMedium, aMaterial, 1) });
                }
                RA.addAssemblerRecipe(
                        GT_OreDictUnificator.get(OrePrefixes.pipeMedium, aMaterial, 4),
                        GT_Utility.getIntegratedCircuit(9),
                        GT_OreDictUnificator.get(OrePrefixes.pipeQuadruple, aMaterial, 1),
                        60,
                        calculateRecipeEU(aMaterial, 4));
            }
            case pipeNonuple -> {
                if (aMaterial.getProcessingMaterialTierEU() < TierEU.IV) {

                    GT_ModHandler.addCraftingRecipe(
                            GT_Utility.copyAmount(1, aStack),
                            GT_ModHandler.RecipeBits.REVERSIBLE | GT_ModHandler.RecipeBits.BUFFERED,
                            new Object[] { "PPP", "PPP", "PPP", 'P',
                                    GT_OreDictUnificator.get(
                                            aOreDictName.replaceFirst("Nonuple", "Small"),
                                            null,
                                            1L,
                                            false,
                                            true) });
                }
                RA.addAssemblerRecipe(
                        GT_OreDictUnificator.get(OrePrefixes.pipeSmall, aMaterial, 9),
                        GT_Utility.getIntegratedCircuit(9),
                        GT_OreDictUnificator.get(OrePrefixes.pipeNonuple, aMaterial, 1),
                        60,
                        calculateRecipeEU(aMaterial, 8));
            }
            default -> {}
        }
    }
}