aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/bwcrossmod/tgregworks/MaterialsInjector.java
blob: a8e65e51f2ff73669d33d2968a155d6ca2a4ba20 (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
package bwcrossmod.tgregworks;

import static gregtech.api.enums.Mods.TinkersGregworks;

import net.minecraftforge.common.config.Property;

import bartworks.MainMod;
import bartworks.system.material.Werkstoff;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import gregtech.GT_Version;
import gregtech.api.enums.Materials;
import gregtech.api.enums.OrePrefixes;
import vexatos.tgregworks.TGregworks;
import vexatos.tgregworks.item.ItemTGregPart;
import vexatos.tgregworks.reference.Config;

@Mod(
    modid = MaterialsInjector.MOD_ID,
    name = MaterialsInjector.NAME,
    version = MaterialsInjector.VERSION,
    dependencies = """
        required-after:IC2;\
        required-after:gregtech;\
        required-after:bartworks;\
        before:TGregworks;\
        before:miscutils;""")
public class MaterialsInjector {

    public static final String NAME = "BartWorks Mod Additions - TGregworks Container";
    public static final String VERSION = GT_Version.VERSION;
    public static final String MOD_ID = "bartworkscrossmodtgregworkscontainer";

    @Mod.EventHandler
    public void init(FMLInitializationEvent init) {
        if (TinkersGregworks.isModLoaded()) {
            MaterialsInjector.run();
        }
    }

    public static void run() {
        MainMod.LOGGER.info("Registering TGregworks - BartWorks tool parts.");
        Werkstoff.werkstoffHashSet.stream()
            .filter(x -> x.hasItemType(OrePrefixes.gem) || x.hasItemType(OrePrefixes.plate))
            .map(Werkstoff::getBridgeMaterial)
            .filter(x -> x.mMetaItemSubID == -1)
            .filter(x -> x.mDurability != 0)
            .forEach(m -> {
                setConfigProps(m);
                registerParts(m);
            });

        TGregworks.registry.configProps.clear();
        TGregworks.registry.configIDs.clear();

        ItemTGregPart.toolMaterialNames = TGregworks.registry.toolMaterialNames;
    }

    private static void registerParts(Materials m) {
        TGregworks.registry.toolMaterialNames.add(m.mDefaultLocalName);
        int matID = TGregworks.registry.getMaterialID(m);

        TGregworks.registry.addToolMaterial(matID, m);
        TGregworks.registry.addBowMaterial(matID, m);
        TGregworks.registry.addArrowMaterial(matID, m);

        TGregworks.registry.matIDs.put(m, matID);
        TGregworks.registry.materialIDMap.put(matID, m);
    }

    private static void setConfigProps(Materials m) {
        if (TGregworks.config.get(Config.Category.Enable, m.mName, true)
            .getBoolean(true)) {
            TGregworks.registry.toolMaterials.add(m);
            Property configProp = TGregworks.config
                .get(Config.onMaterial(Config.MaterialID), m.mName, 0, null, 0, 100000);
            TGregworks.registry.configProps.put(m, configProp);
            TGregworks.registry.configIDs.add(configProp.getInt());
        }
    }
}