diff options
author | GTNH-Colen <54497873+GTNH-Colen@users.noreply.github.com> | 2022-12-17 20:58:06 +0000 |
---|---|---|
committer | GTNH-Colen <54497873+GTNH-Colen@users.noreply.github.com> | 2022-12-17 20:58:06 +0000 |
commit | 1d38214cf68b9cdb1974c5006012d03c05d140da (patch) | |
tree | 879191ee51fbb4c48cc2d25d19a1480585a8dc4b /src/main | |
parent | 9c2b103c1247a71d706654ac375164ee71a6f039 (diff) | |
download | GT5-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.java | 69 | ||||
-rw-r--r-- | src/main/java/pers/gwyog/gtneioreplugin/util/GT5OreSmallHelper.java | 4 |
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) { } } } |