aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorGTNH-Colen <54497873+GTNH-Colen@users.noreply.github.com>2022-12-17 20:58:06 +0000
committerGTNH-Colen <54497873+GTNH-Colen@users.noreply.github.com>2022-12-17 20:58:06 +0000
commit1d38214cf68b9cdb1974c5006012d03c05d140da (patch)
tree879191ee51fbb4c48cc2d25d19a1480585a8dc4b /src/main
parent9c2b103c1247a71d706654ac375164ee71a6f039 (diff)
downloadGT5-Unofficial-1d38214cf68b9cdb1974c5006012d03c05d140da.tar.gz
GT5-Unofficial-1d38214cf68b9cdb1974c5006012d03c05d140da.tar.bz2
GT5-Unofficial-1d38214cf68b9cdb1974c5006012d03c05d140da.zip
Helper hashmaps for black hole gen
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/pers/gwyog/gtneioreplugin/util/GT5OreLayerHelper.java69
-rw-r--r--src/main/java/pers/gwyog/gtneioreplugin/util/GT5OreSmallHelper.java4
2 files changed, 71 insertions, 2 deletions
diff --git a/src/main/java/pers/gwyog/gtneioreplugin/util/GT5OreLayerHelper.java b/src/main/java/pers/gwyog/gtneioreplugin/util/GT5OreLayerHelper.java
index ac3873d9bc..fff381def1 100644
--- a/src/main/java/pers/gwyog/gtneioreplugin/util/GT5OreLayerHelper.java
+++ b/src/main/java/pers/gwyog/gtneioreplugin/util/GT5OreLayerHelper.java
@@ -3,6 +3,8 @@ package pers.gwyog.gtneioreplugin.util;
import static pers.gwyog.gtneioreplugin.util.OreVeinLayer.*;
import gregtech.api.GregTech_API;
+import gregtech.api.enums.Materials;
+import gregtech.api.util.GT_OreDictUnificator;
import gregtech.common.GT_Worldgen_GT_Ore_Layer;
import java.util.ArrayList;
import java.util.Arrays;
@@ -12,11 +14,28 @@ import net.minecraft.item.ItemStack;
public class GT5OreLayerHelper {
+ class oreDimensionWrapper {
+ ArrayList<OreLayerWrapper> internalDimOreList = new ArrayList<>();
+ HashMap<OreLayerWrapper, Double> oreVeinToProbabilityInDimension = new HashMap<OreLayerWrapper, Double>();
+
+ // Calculate all weights of ore veins once dimension is initialised.
+ void calculateWeights() {
+ int totalWeight = 0;
+ for (OreLayerWrapper oreVein : internalDimOreList) {
+ totalWeight += oreVein.randomWeight;
+ }
+ for (OreLayerWrapper oreVein : internalDimOreList) {
+ oreVeinToProbabilityInDimension.put(oreVein, ((double) oreVein.randomWeight) / ((double) totalWeight));
+ }
+ }
+ }
+
private static final int DIMENSION_COUNT = 33;
public static Integer[] weightPerWorld = new Integer[DIMENSION_COUNT];
public static Integer[] DimIDs = new Integer[DIMENSION_COUNT];
public static HashMap<String, OreLayerWrapper> mapOreLayerWrapper = new HashMap<>();
public static HashMap<OreLayerWrapper, String> bufferedDims = new HashMap<>();
+ public static HashMap<String, oreDimensionWrapper> dimToOreWrapper = new HashMap<>();
public GT5OreLayerHelper() {
Arrays.fill(weightPerWorld, 0);
@@ -26,6 +45,40 @@ public class GT5OreLayerHelper {
for (OreLayerWrapper layer : mapOreLayerWrapper.values()) {
bufferedDims.put(layer, getDims(layer));
}
+
+ // ------------------------------
+ // Get dims as "Ow,Ne,Ma" etc.
+ for (OreLayerWrapper oreLayer : bufferedDims.keySet()) {
+
+ String dims = bufferedDims.get(oreLayer);
+
+ if (dims.equals("Not available in any Galactic Dim!")) {
+ continue;
+ }
+
+ for (String dim : dims.split(",")) {
+ if (dim.length() != 0) {
+ oreDimensionWrapper dimensionOres = dimToOreWrapper.getOrDefault(dim, new oreDimensionWrapper());
+ dimensionOres.internalDimOreList.add(oreLayer);
+ dimToOreWrapper.put(dim, dimensionOres);
+ }
+ }
+
+ // Calculate probabilities for each dim.
+ for (String dim : dimToOreWrapper.keySet()) {
+ dimToOreWrapper.get(dim).calculateWeights();
+ }
+
+ for (String dim : dimToOreWrapper.keySet()) {
+ double a = dimToOreWrapper.get(dim).oreVeinToProbabilityInDimension.values()
+ .stream()
+ .mapToDouble(Double::valueOf)
+ .sum();
+
+ System.out.println("TEST312IMJD + " + a);
+ }
+ }
+ // ------------------------------
}
public static String getDims(OreLayerWrapper oreLayer) {
@@ -39,12 +92,28 @@ public class GT5OreLayerHelper {
public short randomWeight, size, density;
public List<Integer> Weight = new ArrayList<>();
+ public Materials mPrimaryVeinMaterial;
+ public Materials mSecondaryMaterial;
+ public Materials mBetweenMaterial;
+ public Materials mSporadicMaterial;
+
public OreLayerWrapper(GT_Worldgen_GT_Ore_Layer worldGen) {
this.veinName = worldGen.mWorldGenName;
this.Meta[0] = worldGen.mPrimaryMeta;
this.Meta[1] = worldGen.mSecondaryMeta;
this.Meta[2] = worldGen.mBetweenMeta;
this.Meta[3] = worldGen.mSporadicMeta;
+
+ // Black magic, don't ask me how it works, I have no idea.
+ try {
+ this.mPrimaryVeinMaterial = GT_OreDictUnificator.getAssociation(new ItemStack(GregTech_API.sBlockOres1, 1, worldGen.mPrimaryMeta)).mMaterial.mMaterial;
+ this.mSecondaryMaterial = GT_OreDictUnificator.getAssociation(new ItemStack(GregTech_API.sBlockOres1, 1, worldGen.mSecondaryMeta)).mMaterial.mMaterial;
+ this.mBetweenMaterial = GT_OreDictUnificator.getAssociation(new ItemStack(GregTech_API.sBlockOres1, 1, worldGen.mBetweenMeta)).mMaterial.mMaterial;
+ this.mSporadicMaterial = GT_OreDictUnificator.getAssociation(new ItemStack(GregTech_API.sBlockOres1, 1, worldGen.mSporadicMeta)).mMaterial.mMaterial;
+ } catch(Exception ignored) {
+
+ }
+
this.size = worldGen.mSize;
this.density = worldGen.mDensity;
this.worldGenHeightRange = worldGen.mMinY + "-" + worldGen.mMaxY;
diff --git a/src/main/java/pers/gwyog/gtneioreplugin/util/GT5OreSmallHelper.java b/src/main/java/pers/gwyog/gtneioreplugin/util/GT5OreSmallHelper.java
index a730b3d148..4e2dce5104 100644
--- a/src/main/java/pers/gwyog/gtneioreplugin/util/GT5OreSmallHelper.java
+++ b/src/main/java/pers/gwyog/gtneioreplugin/util/GT5OreSmallHelper.java
@@ -106,13 +106,13 @@ public class GT5OreSmallHelper {
try {
Field fieldRestrictBiome = clazzGTOreSmall.getField("mRestrictBiome");
restrictBiomeSupport = true;
- } catch (Exception e) {
+ } catch (Exception ignored) {
}
try {
Field fieldGCMoon = clazzGTOreSmall.getField("mMoon");
Field fieldGCMars = clazzGTOreSmall.getField("mMars");
gcBasicSupport = true;
- } catch (Exception e) {
+ } catch (Exception ignored) {
}
}
}