From e08a304cd38f54d023a9ac4534bcd20d10cdd7c9 Mon Sep 17 00:00:00 2001 From: Lyft <127234178+Lyfts@users.noreply.github.com> Date: Sat, 28 Sep 2024 16:33:57 +0200 Subject: Give ore mixes localized names (#3290) Co-authored-by: Martin Robertz --- src/main/java/gregtech/api/enums/OreMixes.java | 105 ++++++++++++++------- src/main/java/gregtech/common/OreMixBuilder.java | 35 ++++++- .../plugin/gregtech5/PluginGT5Base.java | 28 +----- .../plugin/gregtech5/PluginGT5VeinStat.java | 2 +- .../gtneioreplugin/util/GT5OreLayerHelper.java | 3 +- 5 files changed, 110 insertions(+), 63 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/gregtech/api/enums/OreMixes.java b/src/main/java/gregtech/api/enums/OreMixes.java index 0a4b2fbc4e..8c9800ba00 100644 --- a/src/main/java/gregtech/api/enums/OreMixes.java +++ b/src/main/java/gregtech/api/enums/OreMixes.java @@ -95,7 +95,8 @@ public enum OreMixes { .primary(Materials.BrownLimonite) .secondary(Materials.YellowLimonite) .inBetween(Materials.BandedIron) - .sporadic(Materials.Malachite)), + .sporadic(Materials.Malachite) + .localize(Materials.Iron)), Cassiterite(new OreMixBuilder().name("ore.mix.cassiterite") .heightRange(60, 220) @@ -107,7 +108,8 @@ public enum OreMixes { .primary(Materials.Tin) .secondary(Materials.Tin) .inBetween(Materials.Cassiterite) - .sporadic(Materials.Tin)), + .sporadic(Materials.Tin) + .localize(Materials.Cassiterite)), Tetrahedrite(new OreMixBuilder().name("ore.mix.tetrahedrite") .heightRange(80, 120) @@ -155,7 +157,8 @@ public enum OreMixes { .primary(Materials.Chalcopyrite) .secondary(Materials.Iron) .inBetween(Materials.Pyrite) - .sporadic(Materials.Copper)), + .sporadic(Materials.Copper) + .localize(Materials.Copper)), Bauxite(new OreMixBuilder().name("ore.mix.bauxite") .heightRange(10, 80) @@ -191,7 +194,8 @@ public enum OreMixes { .primary(Materials.RockSalt) .secondary(Materials.Salt) .inBetween(Materials.Lepidolite) - .sporadic(Materials.Spodumene)), + .sporadic(Materials.Spodumene) + .localize(Materials.Salt)), Redstone(new OreMixBuilder().name("ore.mix.redstone") .heightRange(5, 40) @@ -227,7 +231,8 @@ public enum OreMixes { .primary(Materials.Garnierite) .secondary(Materials.Nickel) .inBetween(Materials.Cobaltite) - .sporadic(Materials.Pentlandite)), + .sporadic(Materials.Pentlandite) + .localize(Materials.Nickel)), Platinum(new OreMixBuilder().name("ore.mix.platinum") .heightRange(40, 50) @@ -238,7 +243,8 @@ public enum OreMixes { .primary(Materials.Cooperite) .secondary(Materials.Palladium) .inBetween(Materials.Platinum) - .sporadic(Materials.Iridium)), + .sporadic(Materials.Iridium) + .localize(Materials.Platinum)), Pitchblende(new OreMixBuilder().name("ore.mix.pitchblende") .heightRange(60, 60) @@ -260,7 +266,8 @@ public enum OreMixes { .primary(Materials.Bastnasite) .secondary(Materials.Bastnasite) .inBetween(Materials.Monazite) - .sporadic(Materials.Neodymium)), + .sporadic(Materials.Neodymium) + .localize(Materials.Monazite)), Molybdenum(new OreMixBuilder().name("ore.mix.molybdenum") .heightRange(20, 50) @@ -272,7 +279,8 @@ public enum OreMixes { .primary(Materials.Wulfenite) .secondary(Materials.Molybdenite) .inBetween(Materials.Molybdenum) - .sporadic(Materials.Powellite)), + .sporadic(Materials.Powellite) + .localize(Materials.Molybdenum)), Tungstate(new OreMixBuilder().name("ore.mix.tungstate") .heightRange(20, 60) @@ -297,7 +305,8 @@ public enum OreMixes { .primary(Materials.Scheelite) .secondary(Materials.Scheelite) .inBetween(Materials.Tungstate) - .sporadic(Materials.Lithium)), + .sporadic(Materials.Lithium) + .localize(Materials.Tungstate)), Sapphire(new OreMixBuilder().name("ore.mix.sapphire") .heightRange(10, 40) @@ -309,7 +318,8 @@ public enum OreMixes { .primary(Materials.Almandine) .secondary(Materials.Pyrope) .inBetween(Materials.Sapphire) - .sporadic(Materials.GreenSapphire)), + .sporadic(Materials.GreenSapphire) + .localize(Materials.Sapphire)), Manganese(new OreMixBuilder().name("ore.mix.manganese") .heightRange(20, 30) @@ -321,7 +331,8 @@ public enum OreMixes { .primary(Materials.Grossular) .secondary(Materials.Spessartine) .inBetween(Materials.Pyrolusite) - .sporadic(Materials.Tantalite)), + .sporadic(Materials.Tantalite) + .localize(Materials.Manganese)), Quartz(new OreMixBuilder().name("ore.mix.quartz") .heightRange(80, 120) @@ -345,7 +356,8 @@ public enum OreMixes { .primary(Materials.Graphite) .secondary(Materials.Graphite) .inBetween(Materials.Diamond) - .sporadic(Materials.Coal)), + .sporadic(Materials.Coal) + .localize(Materials.Diamond)), Olivine(new OreMixBuilder().name("ore.mix.olivine") .heightRange(10, 40) @@ -357,7 +369,8 @@ public enum OreMixes { .primary(Materials.Bentonite) .secondary(Materials.Magnesite) .inBetween(Materials.Olivine) - .sporadic(Materials.Glauconite)), + .sporadic(Materials.Glauconite) + .localize(Materials.Olivine)), Apatite(new OreMixBuilder().name("ore.mix.apatite") .heightRange(40, 60) @@ -391,7 +404,8 @@ public enum OreMixes { .primary(Materials.Lazurite) .secondary(Materials.Sodalite) .inBetween(Materials.Lapis) - .sporadic(Materials.Calcite)), + .sporadic(Materials.Calcite) + .localize(Materials.Lapis)), Beryllium(new OreMixBuilder().name("ore.mix.beryllium") .heightRange(5, 30) @@ -425,7 +439,8 @@ public enum OreMixes { .primary(Materials.Uraninite) .secondary(Materials.Uraninite) .inBetween(Materials.Uranium) - .sporadic(Materials.Uranium)), + .sporadic(Materials.Uranium) + .localize(Materials.Uranium)), OilSand(new OreMixBuilder().name("ore.mix.oilsand") .heightRange(50, 80) .weight(40) @@ -458,7 +473,8 @@ public enum OreMixes { .primary(Materials.InfusedWater) .secondary(Materials.InfusedFire) .inBetween(Materials.Amber) - .sporadic(Materials.Cinnabar)), + .sporadic(Materials.Cinnabar) + .localize(Materials.InfusedWater, Materials.InfusedFire, Materials.Amber)), TerraAer(new OreMixBuilder().name("ore.mix.terraaer") .heightRange(5, 35) @@ -470,7 +486,8 @@ public enum OreMixes { .primary(Materials.InfusedEarth) .secondary(Materials.InfusedAir) .inBetween(Materials.Amber) - .sporadic(Materials.Cinnabar)), + .sporadic(Materials.Cinnabar) + .localize(Materials.InfusedEarth, Materials.InfusedAir)), PerditioOrdo(new OreMixBuilder().name("ore.mix.perditioordo") .heightRange(5, 35) @@ -482,7 +499,8 @@ public enum OreMixes { .primary(Materials.InfusedEntropy) .secondary(Materials.InfusedOrder) .inBetween(Materials.Amber) - .sporadic(Materials.Cinnabar)), + .sporadic(Materials.Cinnabar) + .localize(Materials.InfusedEntropy, Materials.InfusedOrder)), CopperTin(new OreMixBuilder().name("ore.mix.coppertin") .heightRange(80, 200) @@ -493,7 +511,8 @@ public enum OreMixes { .primary(Materials.Chalcopyrite) .secondary(Materials.Vermiculite) .inBetween(Materials.Cassiterite) - .sporadic(Materials.Alunite)), + .sporadic(Materials.Alunite) + .localize(Materials.Vermiculite)), TitaniumChrome(new OreMixBuilder().name("ore.mix.titaniumchrome") .heightRange(10, 70) @@ -528,7 +547,8 @@ public enum OreMixes { .primary(Materials.CassiteriteSand) .secondary(Materials.GarnetSand) .inBetween(Materials.Asbestos) - .sporadic(Materials.Diatomite)), + .sporadic(Materials.Diatomite) + .localize(Materials.Tin)), KaoliniteZeolite(new OreMixBuilder().name("ore.mix.kaolinitezeolite") .heightRange(50, 70) @@ -552,7 +572,8 @@ public enum OreMixes { .primary(Materials.Kyanite) .secondary(Materials.Mica) .inBetween(Materials.Cassiterite) - .sporadic(Materials.Pollucite)), + .sporadic(Materials.Pollucite) + .localize(Materials.Mica)), Dolomite(new OreMixBuilder().name("ore.mix.dolomite") .heightRange(150, 200) @@ -575,7 +596,8 @@ public enum OreMixes { .primary(Materials.Platinum) .secondary(Materials.Chrome) .inBetween(Materials.Cooperite) - .sporadic(Materials.Palladium)), + .sporadic(Materials.Palladium) + .localize(Materials.Palladium)), IridiumMytryl(new OreMixBuilder().name("ore.mix.iridiummytryl") .heightRange(15, 40) @@ -586,7 +608,8 @@ public enum OreMixes { .primary(Materials.Nickel) .secondary(Materials.Iridium) .inBetween(Materials.Palladium) - .sporadic(Materials.Mithril)), + .sporadic(Materials.Mithril) + .localize(Materials.Iridium)), Osmium(new OreMixBuilder().name("ore.mix.osmium") .heightRange(5, 30) @@ -597,7 +620,8 @@ public enum OreMixes { .primary(Materials.Nickel) .secondary(Materials.Osmium) .inBetween(Materials.Iridium) - .sporadic(Materials.Nickel)), + .sporadic(Materials.Nickel) + .localize(Materials.Osmium)), SaltPeterElectrotine(new OreMixBuilder().name("ore.mix.saltpeterelectrotine") .heightRange(5, 45) @@ -609,7 +633,8 @@ public enum OreMixes { .primary(Materials.Saltpeter) .secondary(Materials.Diatomite) .inBetween(Materials.Electrotine) - .sporadic(Materials.Alunite)), + .sporadic(Materials.Alunite) + .localize(Materials.Electrotine)), Desh(new OreMixBuilder().name("ore.mix.desh") .heightRange(5, 40) @@ -708,7 +733,8 @@ public enum OreMixes { .primary(Materials.Gold) .secondary(Materials.Gold) .inBetween(Materials.InfusedGold) - .sporadic(Materials.Platinum)), + .sporadic(Materials.Platinum) + .localize(Materials.InfusedGold)), Niobium(new OreMixBuilder().name("ore.mix.niobium") .heightRange(5, 30) @@ -763,7 +789,8 @@ public enum OreMixes { .primary(Materials.GarnetSand) .secondary(Materials.NetherStar) .inBetween(Materials.GarnetRed) - .sporadic(Materials.GarnetYellow)), + .sporadic(Materials.GarnetYellow) + .localize(Materials.NetherStar)), Garnet(new OreMixBuilder().name("ore.mix.garnet") .heightRange(10, 30) @@ -785,7 +812,8 @@ public enum OreMixes { .primary(Materials.Cadmium) .secondary(Materials.Caesium) .inBetween(Materials.Lanthanum) - .sporadic(Materials.Cerium)), + .sporadic(Materials.Cerium) + .localize(Materials.RareEarth)), RichNuclear(new OreMixBuilder().name("ore.mix.richnuclear") .heightRange(55, 120) @@ -796,7 +824,8 @@ public enum OreMixes { .primary(Materials.Uranium) .secondary(Materials.Plutonium) .inBetween(Materials.Thorium) - .sporadic(Materials.Thorium)), + .sporadic(Materials.Thorium) + .localize(Materials.Plutonium)), HeavyPentele(new OreMixBuilder().name("ore.mix.heavypentele") .heightRange(40, 60) @@ -851,7 +880,8 @@ public enum OreMixes { .primary(Materials.Quartzite) .secondary(Materials.Barite) .inBetween(Materials.CertusQuartz) - .sporadic(Materials.CertusQuartz)), + .sporadic(Materials.CertusQuartz) + .localize(Materials.Quartz)), Rutile(new OreMixBuilder().name("ore.mix.rutile") .heightRange(5, 20) @@ -874,7 +904,8 @@ public enum OreMixes { .primary(Materials.Galena) .secondary(Materials.Silver) .inBetween(Materials.Lead) - .sporadic(Materials.Cryolite)), + .sporadic(Materials.Cryolite) + .localize(Materials.Cryolite)), LuVTantalite(new OreMixBuilder().name("ore.mix.luvtantalite") .heightRange(20, 30) @@ -907,7 +938,8 @@ public enum OreMixes { .primary(Materials.Neutronium) .secondary(Materials.Adamantium) .inBetween(Materials.InfinityCatalyst) - .sporadic(Materials.Bedrockium)), + .sporadic(Materials.Bedrockium) + .localize(Materials.InfinityCatalyst)), CosmicNeutronium(new OreMixBuilder().name("ore.mix.cosmicneutronium") .heightRange(5, 20) @@ -918,7 +950,8 @@ public enum OreMixes { .primary(Materials.Neutronium) .secondary(Materials.CosmicNeutronium) .inBetween(Materials.BlackPlutonium) - .sporadic(Materials.Bedrockium)), + .sporadic(Materials.Bedrockium) + .localize(Materials.CosmicNeutronium)), Dilithium(new OreMixBuilder().name("ore.mix.dilithium") .heightRange(30, 100) @@ -940,7 +973,8 @@ public enum OreMixes { .primary(Materials.Naquadah) .secondary(Materials.NaquadahEnriched) .inBetween(Materials.Naquadria) - .sporadic(Materials.Trinium)), + .sporadic(Materials.Trinium) + .localize(Materials.Naquadria)), AwakenedDraconium(new OreMixBuilder().name("ore.mix.awakeneddraconium") .heightRange(20, 40) @@ -951,7 +985,8 @@ public enum OreMixes { .primary(Materials.Draconium) .secondary(Materials.Draconium) .inBetween(Materials.DraconiumAwakened) - .sporadic(Materials.NetherStar)), + .sporadic(Materials.NetherStar) + .localize(Materials.DraconiumAwakened)), Tengam(new OreMixBuilder().name("ore.mix.tengam") .heightRange(30, 180) diff --git a/src/main/java/gregtech/common/OreMixBuilder.java b/src/main/java/gregtech/common/OreMixBuilder.java index cd8d14c884..86453ca0a8 100644 --- a/src/main/java/gregtech/common/OreMixBuilder.java +++ b/src/main/java/gregtech/common/OreMixBuilder.java @@ -1,5 +1,6 @@ package gregtech.common; +import java.util.Arrays; import java.util.HashMap; import java.util.Map; @@ -16,7 +17,8 @@ public class OreMixBuilder { public boolean enabledByDefault = true; public Map dimsEnabled = new HashMap<>(); public int minY, maxY, weight, density, size; - public Materials primary, secondary, between, sporadic; + public Materials primary, secondary, between, sporadic, representative; + public String localizedName; public OreMixBuilder name(String name) { this.oreMixName = name; @@ -65,6 +67,10 @@ public class OreMixBuilder { public OreMixBuilder primary(Materials primary) { this.primary = primary; + if (representative == null || localizedName == null) { + representative = primary; + localizedName = primary.mLocalizedName; + } return this; } @@ -83,4 +89,31 @@ public class OreMixBuilder { return this; } + /** + * Sets the localized name for the ore mix based on the provided materials. + * If more than one material is provided, their localized names are concatenated + * with commas, last comma is replaced by "&". + * + * @param materials The materials to be used for localization. The first material + * in the array will be used to represent to ore mix in GUI's. + * If none are provided the {@link #primary} will be used. + */ + public OreMixBuilder localize(Materials... materials) { + if (materials.length > 1) { + String localizedName = String.join( + ", ", + Arrays.stream(materials) + .map(material -> material.mLocalizedName) + .toArray(String[]::new)); + int index = localizedName.lastIndexOf(", "); + if (index != -1) { + localizedName = localizedName.substring(0, index) + " & " + localizedName.substring(index + 2); + } + this.localizedName = localizedName; + } else { + this.localizedName = materials[0].mLocalizedName; + } + this.representative = materials[0]; + return this; + } } diff --git a/src/main/java/gtneioreplugin/plugin/gregtech5/PluginGT5Base.java b/src/main/java/gtneioreplugin/plugin/gregtech5/PluginGT5Base.java index 86117f099a..859ea87bb2 100644 --- a/src/main/java/gtneioreplugin/plugin/gregtech5/PluginGT5Base.java +++ b/src/main/java/gtneioreplugin/plugin/gregtech5/PluginGT5Base.java @@ -3,38 +3,16 @@ package gtneioreplugin.plugin.gregtech5; import net.minecraft.client.resources.I18n; import codechicken.lib.gui.GuiDraw; -import gregtech.api.GregTechAPI; import gregtech.api.enums.Materials; import gregtech.api.util.GTLanguageManager; import gtneioreplugin.plugin.PluginBase; public abstract class PluginGT5Base extends PluginBase { - protected static String getLocalizedNameForItem(Materials aMaterial, String aFormat) { - return String.format( - aFormat.replace("%s", "%temp") - .replace("%material", "%s"), - aMaterial.mLocalizedName) - .replace("%temp", "%s"); - } - - protected static String getLocalizedNameForItem(String aFormat, int aMaterialID) { - if (aMaterialID >= 0 && aMaterialID < 1000) { - Materials aMaterial = GregTechAPI.sGeneratedMaterials[aMaterialID]; - if (aMaterial != null) { - return getLocalizedNameForItem(aMaterial, aFormat); - } - } - return aFormat; - } - public static String getGTOreLocalizedName(short index) { - - if (!getLocalizedNameForItem(GTLanguageManager.getTranslation(getGTOreUnlocalizedName(index)), index % 1000) - .contains("Awakened")) - return getLocalizedNameForItem( - GTLanguageManager.getTranslation(getGTOreUnlocalizedName(index)), - index % 1000); + String name = Materials + .getLocalizedNameForItem(GTLanguageManager.getTranslation(getGTOreUnlocalizedName(index)), index % 1000); + if (!name.contains("Awakened")) return name; else return "Aw. Draconium Ore"; } diff --git a/src/main/java/gtneioreplugin/plugin/gregtech5/PluginGT5VeinStat.java b/src/main/java/gtneioreplugin/plugin/gregtech5/PluginGT5VeinStat.java index 6e02539a87..cb89a0bc7b 100644 --- a/src/main/java/gtneioreplugin/plugin/gregtech5/PluginGT5VeinStat.java +++ b/src/main/java/gtneioreplugin/plugin/gregtech5/PluginGT5VeinStat.java @@ -91,7 +91,7 @@ public class PluginGT5VeinStat extends PluginGT5Base { } private static void drawVeinName(OreLayerWrapper oreLayer) { - drawVeinNameLine(I18n.format(oreLayer.veinName) + " "); + drawVeinNameLine(oreLayer.localizedName + " "); } private static void drawVeinNameLine(String veinName) { diff --git a/src/main/java/gtneioreplugin/util/GT5OreLayerHelper.java b/src/main/java/gtneioreplugin/util/GT5OreLayerHelper.java index ac4d6c4aca..0e8e5b3462 100644 --- a/src/main/java/gtneioreplugin/util/GT5OreLayerHelper.java +++ b/src/main/java/gtneioreplugin/util/GT5OreLayerHelper.java @@ -71,7 +71,7 @@ public class GT5OreLayerHelper { public static class OreLayerWrapper { - public final String veinName, worldGenHeightRange; + public final String veinName, worldGenHeightRange, localizedName; public final short[] Meta = new short[4]; public final short randomWeight, size, density; public final Map allowedDimWithOrigNames; @@ -83,6 +83,7 @@ public class GT5OreLayerHelper { public OreLayerWrapper(OreMixBuilder mix) { this.veinName = mix.oreMixName; + this.localizedName = mix.localizedName; this.Meta[0] = (short) mix.primary.mMetaItemSubID; this.Meta[1] = (short) mix.secondary.mMetaItemSubID; this.Meta[2] = (short) mix.between.mMetaItemSubID; -- cgit