aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/pers/gwyog/gtneioreplugin/util/GT5OreLayerHelper.java
blob: 9026aec71d6b80f7079a133a9197bff0204f6f71 (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
package pers.gwyog.gtneioreplugin.util;

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import cpw.mods.fml.common.Loader;
import gregtech.GT_Mod;
import gregtech.api.GregTech_API;
import gregtech.common.GT_Worldgen_GT_Ore_Layer;
import net.minecraft.client.resources.I18n;
import net.minecraft.item.ItemStack;
import pers.gwyog.gtneioreplugin.GTNEIOrePlugin;
import sun.awt.windows.WWindowPeer;

public class GT5OreLayerHelper {
    public static boolean restrictBiomeSupport = false;
    public static boolean endAsteroidSupport = false;
    public static boolean gcBasicSupport = false;
    public static boolean gcAsteroidSupport = false;
    public static boolean immersiveEngineeringSupport = false;
    public static HashMap<String, OreLayerWrapper> mapOreLayerWrapper = new HashMap<String, OreLayerWrapper>();

    public GT5OreLayerHelper() {
        checkExtraSupport();
        for (GT_Worldgen_GT_Ore_Layer tWorldGen: GT_Worldgen_GT_Ore_Layer.sList)
            mapOreLayerWrapper.put(tWorldGen.mWorldGenName, new OreLayerWrapper(tWorldGen));
  }
    
    private static void checkExtraSupport() {
        Class clazzGTOreLayer = null;
        try {
            clazzGTOreLayer = Class.forName("gregtech.common.GT_Worldgen_GT_Ore_Layer");
        } catch (ClassNotFoundException e) {}
        if (clazzGTOreLayer != null) {
            try {
                Field fieldRestrictBiome = clazzGTOreLayer.getField("mRestrictBiome");
                restrictBiomeSupport = true;
            } catch (Exception e) {}
            try {
                Field fieldEndAsteroid = clazzGTOreLayer.getField("mEndAsteroid");
                endAsteroidSupport = true;
            } catch (Exception e) {}
            try {
                Field fieldGCMoon = clazzGTOreLayer.getField("mMoon");
                Field fieldGCMars = clazzGTOreLayer.getField("mMars");
                gcBasicSupport = true;
            } catch (Exception e) {}
            try {
                Field fieldGCAsteroid = clazzGTOreLayer.getField("mAsteroid");
                gcAsteroidSupport = true;
            } catch (Exception e) {}
        }
        
        // immersive engineering support for GT5.09.25+
        if (Loader.instance().isModLoaded("ImmersiveEngineering")) {
            Class clazzGTMod = null;
            Class clazzGTProxy = null;
            Class clazzGTAPI = null;
            try {
                clazzGTMod = Class.forName("gregtech.GT_Mod");
                clazzGTProxy = Class.forName("gregtech.common.GT_Proxy");
                clazzGTAPI = Class.forName("gregtech.api.GregTech_API");
            } catch (ClassNotFoundException e) {}
            if (clazzGTMod!=null && clazzGTProxy!=null && clazzGTAPI!=null) {
                try {
                    Field fieldImmersiveEngineeringRecipes = clazzGTAPI.getField("mImmersiveEngineering");
                    Field fieldGTProxy = clazzGTMod.getField("gregtechproxy");
                    Field fieldImmersiveEngineering = clazzGTProxy.getField("mImmersiveEngineeringRecipes");
                    immersiveEngineeringSupport = GregTech_API.mImmersiveEngineering && GT_Mod.gregtechproxy.mImmersiveEngineeringRecipes;
                } catch (Exception e) {}
            }
        }
    }
    
    public class OreLayerWrapper {
        public String veinName;
        public short primaryMeta;
        public short secondaryMeta;
        public short betweenMeta;
        public short sporadicMeta;
        public String worldGenHeightRange;
        public String weightedChance;
        public String weightedIEChance;
        public String restrictBiome;
        public boolean genOverworld = false;
        public boolean genNether = false;
        public boolean genEnd = false;
        public boolean genMoon = false;
        public boolean genMars = false;
        public boolean genEndAsteroid = false;
        public boolean genGCAsteroid = false;
        public boolean genIEVein = false;
        
        public OreLayerWrapper(GT_Worldgen_GT_Ore_Layer worldGen) {
            this.veinName = worldGen.mWorldGenName;
            this.primaryMeta = worldGen.mPrimaryMeta;
            this.secondaryMeta = worldGen.mSecondaryMeta;
            this.betweenMeta = worldGen.mBetweenMeta;
            this.sporadicMeta = worldGen.mSporadicMeta;
            this.worldGenHeightRange = worldGen.mMinY + "-" + worldGen.mMaxY;
            this.weightedChance = String.format("%.2f%%", (100.0f*worldGen.mWeight)/GT_Worldgen_GT_Ore_Layer.sWeight);
            this.genOverworld = worldGen.mOverworld;
            this.genNether = worldGen.mNether;
            this.genEnd = worldGen.mEnd;
            if (restrictBiomeSupport) 
                this.restrictBiome = worldGen.mRestrictBiome;
            if (GT5OreLayerHelper.gcBasicSupport) {
                this.genMoon = worldGen.mMoon;
                this.genMars = worldGen.mMars;
            }
            if (GT5OreLayerHelper.endAsteroidSupport)
                this.genEndAsteroid = worldGen.mEndAsteroid;
            if (GT5OreLayerHelper.gcAsteroidSupport) 
                this.genGCAsteroid = worldGen.mAsteroid;

            // immersive engineering support for GT5.09.25+
            if (immersiveEngineeringSupport) {
                this.genIEVein = true;
                this.weightedIEChance = String.format("%.3f%%", (100.0f*worldGen.mWeight)/GT_Worldgen_GT_Ore_Layer.sWeight/8);
            }
        }
        
    }
    
}