diff options
author | Connor-Colenso <52056774+Connor-Colenso@users.noreply.github.com> | 2022-12-21 17:26:57 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-12-21 17:26:57 +0000 |
commit | 3f1f37d003b28d02bd896aebf6287420e8dcceeb (patch) | |
tree | 9321b3bf07782c1b80b79af9dfa46115249b160d /src/main/java/pers | |
parent | b1d0a92687b36b5e0878e08befd09dffc0ba85ce (diff) | |
download | GT5-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')
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) { |