aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/pers
diff options
context:
space:
mode:
authorConnor-Colenso <52056774+Connor-Colenso@users.noreply.github.com>2022-12-21 17:26:57 +0000
committerGitHub <noreply@github.com>2022-12-21 17:26:57 +0000
commit3f1f37d003b28d02bd896aebf6287420e8dcceeb (patch)
tree9321b3bf07782c1b80b79af9dfa46115249b160d /src/main/java/pers
parentb1d0a92687b36b5e0878e08befd09dffc0ba85ce (diff)
downloadGT5-Unofficial-3f1f37d003b28d02bd896aebf6287420e8dcceeb.tar.gz
GT5-Unofficial-3f1f37d003b28d02bd896aebf6287420e8dcceeb.tar.bz2
GT5-Unofficial-3f1f37d003b28d02bd896aebf6287420e8dcceeb.zip
More helpers for other mods (#29)
* Add small ore helper hash maps, clean up a little and add getDimensionRocketTier to BlockDimensionDisplay * Try catch exception to prevent state engine erroring. * Spotless * Adjust tier display slightly for errors. Co-authored-by: GTNH-Colen <54497873+GTNH-Colen@users.noreply.github.com>
Diffstat (limited to 'src/main/java/pers')
-rw-r--r--src/main/java/pers/gwyog/gtneioreplugin/plugin/block/BlockDimensionDisplay.java9
-rw-r--r--src/main/java/pers/gwyog/gtneioreplugin/plugin/renderer/ItemDimensionDisplayRenderer.java50
-rw-r--r--src/main/java/pers/gwyog/gtneioreplugin/util/GT5CFGHelper.java1
-rw-r--r--src/main/java/pers/gwyog/gtneioreplugin/util/GT5OreLayerHelper.java8
-rw-r--r--src/main/java/pers/gwyog/gtneioreplugin/util/GT5OreSmallHelper.java58
5 files changed, 102 insertions, 24 deletions
diff --git a/src/main/java/pers/gwyog/gtneioreplugin/plugin/block/BlockDimensionDisplay.java b/src/main/java/pers/gwyog/gtneioreplugin/plugin/block/BlockDimensionDisplay.java
index 5ef2cb04a9..048ce84aff 100644
--- a/src/main/java/pers/gwyog/gtneioreplugin/plugin/block/BlockDimensionDisplay.java
+++ b/src/main/java/pers/gwyog/gtneioreplugin/plugin/block/BlockDimensionDisplay.java
@@ -1,5 +1,7 @@
package pers.gwyog.gtneioreplugin.plugin.block;
+import static pers.gwyog.gtneioreplugin.plugin.renderer.ItemDimensionDisplayRenderer.getPrefix;
+
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
@@ -9,6 +11,12 @@ import net.minecraft.util.IIcon;
public class BlockDimensionDisplay extends Block {
private final String dimension;
+
+ public long getDimensionRocketTier() {
+ return dimensionRocketTier;
+ }
+
+ private final long dimensionRocketTier;
private IIcon iconTop;
private IIcon iconRight;
private IIcon iconLeft;
@@ -16,6 +24,7 @@ public class BlockDimensionDisplay extends Block {
public BlockDimensionDisplay(String dimension) {
super(Material.rock);
this.dimension = dimension;
+ this.dimensionRocketTier = getPrefix(dimension);
}
@Override
diff --git a/src/main/java/pers/gwyog/gtneioreplugin/plugin/renderer/ItemDimensionDisplayRenderer.java b/src/main/java/pers/gwyog/gtneioreplugin/plugin/renderer/ItemDimensionDisplayRenderer.java
index b175b456b1..f3feda0544 100644
--- a/src/main/java/pers/gwyog/gtneioreplugin/plugin/renderer/ItemDimensionDisplayRenderer.java
+++ b/src/main/java/pers/gwyog/gtneioreplugin/plugin/renderer/ItemDimensionDisplayRenderer.java
@@ -22,6 +22,7 @@ public class ItemDimensionDisplayRenderer implements IItemRenderer {
return false;
}
+ // Renders the actual text on top of planet items.
@Override
public void renderItem(ItemRenderType type, ItemStack stack, Object... data) {
String dimension = ItemDimensionDisplay.getDimension(stack);
@@ -32,56 +33,65 @@ public class ItemDimensionDisplayRenderer implements IItemRenderer {
renderItem.renderItemIntoGUI(
Minecraft.getMinecraft().fontRenderer, Minecraft.getMinecraft().renderEngine, stack, 0, 0, false);
- String prefix = getPrefix(dimension);
- if (!prefix.isEmpty()) {
- FontRenderer fontRender = Minecraft.getMinecraft().fontRenderer;
- float smallTextScale = 3F / 4F;
+ FontRenderer fontRender = Minecraft.getMinecraft().fontRenderer;
+ float smallTextScale = 3F / 4F;
- GL11.glPushMatrix();
- GL11.glTranslatef(0, 0, 300);
- GL11.glScalef(smallTextScale, smallTextScale, 1.0f);
+ GL11.glPushMatrix();
+ GL11.glTranslatef(0, 0, 300);
+ GL11.glScalef(smallTextScale, smallTextScale, 1.0f);
- fontRender.drawString(prefix, 0, (int) (16 / smallTextScale) - fontRender.FONT_HEIGHT + 1, 0xFFFFFF, true);
+ long prefix = getPrefix(dimension);
+ String tooltipPrefix = prefix != -1 ? "T" + prefix : "INVALID. Please, report this to the GTNH team";
- GL11.glPopMatrix();
- }
+ fontRender.drawString(
+ tooltipPrefix, 0, (int) (16 / smallTextScale) - fontRender.FONT_HEIGHT + 1, 0xFFFFFF, true);
+
+ GL11.glPopMatrix();
GL11.glDisable(GL11.GL_ALPHA_TEST);
}
- private static String getPrefix(String dimName) {
+ // See DimensionHelper.DimNameDisplayed for real names of these.
+ public static long getPrefix(String dimName) {
switch (dimName) {
+ case "Ow":
+ case "Ne":
+ case "TF":
+ case "ED":
+ case "VA":
+ case "EA":
+ return 0L;
case "Mo":
- return "T1";
+ return 1L;
case "De":
case "Ma":
case "Ph":
- return "T2";
+ return 2L;
case "As":
case "Ca":
case "Ce":
case "Eu":
case "Ga":
case "Rb":
- return "T3";
+ return 3L;
case "Io":
case "Me":
case "Ve":
- return "T4";
+ return 4L;
case "En":
case "Mi":
case "Ob":
case "Ti":
case "Ra":
- return "T5";
+ return 5L;
case "Pr":
case "Tr":
- return "T6";
+ return 6L;
case "Ha":
case "KB":
case "MM":
case "Pl":
- return "T7";
+ return 7L;
case "BC":
case "BE":
case "BF":
@@ -89,9 +99,9 @@ public class ItemDimensionDisplayRenderer implements IItemRenderer {
case "TE":
case "DD":
case "VB":
- return "T8";
+ return 8L;
default:
- return "";
+ return -1L;
}
}
}
diff --git a/src/main/java/pers/gwyog/gtneioreplugin/util/GT5CFGHelper.java b/src/main/java/pers/gwyog/gtneioreplugin/util/GT5CFGHelper.java
index f6448660f0..9b12e3d007 100644
--- a/src/main/java/pers/gwyog/gtneioreplugin/util/GT5CFGHelper.java
+++ b/src/main/java/pers/gwyog/gtneioreplugin/util/GT5CFGHelper.java
@@ -16,6 +16,7 @@ import pers.gwyog.gtneioreplugin.GTNEIOrePlugin;
public class GT5CFGHelper {
+ // Do NOT ever put a comma in this or it will break split calls later in the code. Bad, but it is what it is.
public static String oreVeinNotInAnyDim = "Not available in any Galactic Dim!";
private static File F = GregTech_API.sWorldgenFile.mConfig.getConfigFile();
diff --git a/src/main/java/pers/gwyog/gtneioreplugin/util/GT5OreLayerHelper.java b/src/main/java/pers/gwyog/gtneioreplugin/util/GT5OreLayerHelper.java
index c240a175c7..3df3d98242 100644
--- a/src/main/java/pers/gwyog/gtneioreplugin/util/GT5OreLayerHelper.java
+++ b/src/main/java/pers/gwyog/gtneioreplugin/util/GT5OreLayerHelper.java
@@ -15,7 +15,7 @@ import net.minecraft.item.ItemStack;
public class GT5OreLayerHelper {
- public static class OreDimensionWrapper {
+ public static class NormalOreDimensionWrapper {
public final ArrayList<OreLayerWrapper> internalDimOreList = new ArrayList<>();
public final HashMap<OreLayerWrapper, Double> oreVeinToProbabilityInDimension = new HashMap<>();
@@ -36,7 +36,7 @@ public class GT5OreLayerHelper {
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 static HashMap<String, NormalOreDimensionWrapper> dimToOreWrapper = new HashMap<>();
public GT5OreLayerHelper() {
Arrays.fill(weightPerWorld, 0);
@@ -57,7 +57,8 @@ public class GT5OreLayerHelper {
for (String dim : dims.split(",")) {
if (!dim.isEmpty()) {
- OreDimensionWrapper dimensionOres = dimToOreWrapper.getOrDefault(dim, new OreDimensionWrapper());
+ NormalOreDimensionWrapper dimensionOres =
+ dimToOreWrapper.getOrDefault(dim, new NormalOreDimensionWrapper());
dimensionOres.internalDimOreList.add(veinInfo);
dimToOreWrapper.put(dim, dimensionOres);
}
@@ -113,7 +114,6 @@ public class GT5OreLayerHelper {
.mMaterial
.mMaterial;
} catch (Exception ignored) {
-
}
this.size = worldGen.mSize;
diff --git a/src/main/java/pers/gwyog/gtneioreplugin/util/GT5OreSmallHelper.java b/src/main/java/pers/gwyog/gtneioreplugin/util/GT5OreSmallHelper.java
index a730b3d148..9ea39398ea 100644
--- a/src/main/java/pers/gwyog/gtneioreplugin/util/GT5OreSmallHelper.java
+++ b/src/main/java/pers/gwyog/gtneioreplugin/util/GT5OreSmallHelper.java
@@ -1,5 +1,7 @@
package pers.gwyog.gtneioreplugin.util;
+import static pers.gwyog.gtneioreplugin.util.GT5CFGHelper.oreVeinNotInAnyDim;
+
import gregtech.api.GregTech_API;
import gregtech.api.enums.Materials;
import gregtech.api.enums.OrePrefixes;
@@ -21,6 +23,24 @@ public class GT5OreSmallHelper {
public static HashMap<String, Short> mapOreDropUnlocalizedNameToOreMeta = new HashMap<>();
public static HashMap<Short, List<ItemStack>> mapOreMetaToOreDrops = new HashMap<>();
public static HashMap<OreSmallWrapper, String> bufferedDims = new HashMap<>();
+ public static HashMap<String, SmallOreDimensionWrapper> dimToSmallOreWrapper = new HashMap<>();
+
+ public static class SmallOreDimensionWrapper {
+ public final ArrayList<OreSmallWrapper> internalDimOreList = new ArrayList<>();
+ public final HashMap<OreSmallWrapper, Double> oreVeinToProbabilityInDimension = new HashMap<>();
+
+ // Calculate all weights of ore veins once dimension is initialised.
+ private void calculateWeights() {
+ int totalWeight = 0;
+ for (OreSmallWrapper oreVein : internalDimOreList) {
+ totalWeight += oreVein.amountPerChunk;
+ }
+ for (OreSmallWrapper oreVein : internalDimOreList) {
+ oreVeinToProbabilityInDimension.put(
+ oreVein, ((double) oreVein.amountPerChunk) / ((double) totalWeight));
+ }
+ }
+ }
public GT5OreSmallHelper() {
checkExtraSupport();
@@ -94,6 +114,30 @@ public class GT5OreSmallHelper {
for (OreSmallWrapper oreSmallWrapper : mapOreSmallWrapper.values()) {
bufferedDims.put(oreSmallWrapper, GT5CFGHelper.GT5CFGSmallOres(oreSmallWrapper.oreGenName));
}
+
+ // --- Handling of dimToOreWrapper ---
+
+ // Get dims as "Ow,Ne,Ma" etc.
+ bufferedDims.forEach((veinInfo, dims) -> {
+ if (dims.equals(oreVeinNotInAnyDim)) {
+ return;
+ }
+
+ for (String dim : dims.split(",")) {
+ if (!dim.isEmpty()) {
+ SmallOreDimensionWrapper dimensionSmallOres =
+ dimToSmallOreWrapper.getOrDefault(dim, new SmallOreDimensionWrapper());
+ dimensionSmallOres.internalDimOreList.add(veinInfo);
+ dimToSmallOreWrapper.put(dim, dimensionSmallOres);
+ }
+ }
+
+ // Calculate probabilities for each dim.
+ for (String dim : dimToSmallOreWrapper.keySet()) {
+ dimToSmallOreWrapper.get(dim).calculateWeights();
+ }
+ });
+ // --- End of handling for dimToOreWrapper ---
}
private static void checkExtraSupport() {
@@ -137,11 +181,25 @@ public class GT5OreSmallHelper {
public short amountPerChunk;
public String restrictBiome;
+ public Materials getOreMaterial() {
+ return oreMaterial;
+ }
+
+ private Materials oreMaterial = null;
+
public OreSmallWrapper(GT_Worldgen_GT_Ore_SmallPieces worldGen) {
this.oreGenName = worldGen.mWorldGenName;
this.oreMeta = worldGen.mMeta;
this.worldGenHeightRange = worldGen.mMinY + "-" + worldGen.mMaxY;
this.amountPerChunk = worldGen.mAmount;
+ try {
+ this.oreMaterial = GT_OreDictUnificator.getAssociation(
+ new ItemStack(GregTech_API.sBlockOres1, 1, worldGen.mMeta))
+ .mMaterial
+ .mMaterial;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
}
public List<ItemStack> getMaterialDrops(int maximumIndex) {