diff options
| author | boubou19 <miisterunknown@gmail.com> | 2024-08-27 20:50:30 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-08-27 18:50:30 +0000 |
| commit | 4908d5967c3dfeff5616c65144e701859b9e30a2 (patch) | |
| tree | 3e58a4b8ebd8b70745e81c4c71c765980e4ec4f4 /src/main/java/pers | |
| parent | 3c574facfb224029c0b69865e281023da6170ce0 (diff) | |
| download | GT5-Unofficial-4908d5967c3dfeff5616c65144e701859b9e30a2.tar.gz GT5-Unofficial-4908d5967c3dfeff5616c65144e701859b9e30a2.tar.bz2 GT5-Unofficial-4908d5967c3dfeff5616c65144e701859b9e30a2.zip | |
Config/gregtech.cfg (#2939)
* first pass on config migration
* second pass on config migration
* removing bad configs
* rename config classes and register them
* move debug options to its own debug category
* migrate pollution
* finish migrating general config
* removing useless config
* finish GregTech.cfg port to GTNHLib
* don't accidentally force panic mode in dev env
* typo
* defaults are now handled by the confg handler
* remove dead config
* force config save after defaults are being written
* stop messing with the GregTech.cfg externally
* removing comments
* new underground fluid builder and porting default underground fluids to code
* move config handlers of gregtech.cfg in their own package
* process MachineStats.cfg
* yeeted MaterialProperties.cfg
* remove unused compat in GTNH
* process OverpoweredStuff.cfg
* process Other.cfg
* ungregify some config variables
* remove unused variables
* fix Ids.cfg not being populated
* delete duplicate printing of MTE IDs in GT5U clients
* bump hodgepodge version to get mod phase timers
* process Client.cfg
* fix bad category naming
* registering all the config handlers in gui
* bump GTNHLib version
* actually only registering client configs
* use proper double arrays now
* move GT ore mixes to patternbuilders
* dead code
* fix multifiles config not being handled properly
* import class from NHCore
* removing reflection
* use enums for registration
* yeet config for Asteroid dimensions
* remove unused since 2015 enum entry
* todo
* rework oremix enums
* imported dimension data in enums
* convert old dirty predicate into proper one
* hook gagreg onto the OreMixes enum
* finally nuke worldgen.ore.mix config category!
* hook gagreg small ores onto the SmallOres enum
* imported dim values in enum
* fix dirty work around in vm predicate
* yeet unused classes
* hook GT stones to GTStones enum
* yeet all the remaining booleans in the worldgen category
* port endasteroids category
* port general category
* deprecated
* yeet unused bw compat
* finish worldgen config migration
* hardcode config into code
* remove not generated config entry
* remove Unification.cfg
* fix build
* migrate oreveins away from config
* migrate small ores away from config
* delete config parser
* forgotten
* fix EoH recipe crash in dev
* fix GT NEI Ore Plugin config and csv paths
* shade opencsv
* rewrite csv generator
* spotless apply
Diffstat (limited to 'src/main/java/pers')
13 files changed, 544 insertions, 1168 deletions
diff --git a/src/main/java/pers/gwyog/gtneioreplugin/Config.java b/src/main/java/pers/gwyog/gtneioreplugin/Config.java index 8501ebabb1..ceced6a78e 100644 --- a/src/main/java/pers/gwyog/gtneioreplugin/Config.java +++ b/src/main/java/pers/gwyog/gtneioreplugin/Config.java @@ -1,22 +1,28 @@ package pers.gwyog.gtneioreplugin; -import java.io.File; - -import net.minecraftforge.common.config.Configuration; - -import cpw.mods.fml.common.event.FMLPreInitializationEvent; - +@com.gtnewhorizon.gtnhlib.config.Config( + modid = GTNEIOrePlugin.MODID, + category = "general", + filename = GTNEIOrePlugin.MODID) public class Config { - public final Configuration tConfig; + @com.gtnewhorizon.gtnhlib.config.Config.Comment("if true, generate both csv files.") + @com.gtnewhorizon.gtnhlib.config.Config.DefaultBoolean(false) + @com.gtnewhorizon.gtnhlib.config.Config.RequiresMcRestart + public static boolean printCsv; + + @com.gtnewhorizon.gtnhlib.config.Config.Comment("the name of the file you want for the ore sheet, it'll appear at the root of your instance.") + @com.gtnewhorizon.gtnhlib.config.Config.DefaultString("GTNH-Oresheet.csv") + @com.gtnewhorizon.gtnhlib.config.Config.RequiresMcRestart + public static String CSVName; - public Config(FMLPreInitializationEvent preinit, String cfgname) { - File tFile = new File(preinit.getModConfigurationDirectory(), cfgname); - tConfig = new Configuration(tFile); - tConfig.load(); - } + @com.gtnewhorizon.gtnhlib.config.Config.Comment("the name of the file you want for the small ore sheet, it'll appear at the root of your instance.") + @com.gtnewhorizon.gtnhlib.config.Config.DefaultString("GTNH-Small-Ores-Sheet.csv") + @com.gtnewhorizon.gtnhlib.config.Config.RequiresMcRestart + public static String CSVnameSmall; - public void save() { - if (tConfig.hasChanged()) tConfig.save(); - } + @com.gtnewhorizon.gtnhlib.config.Config.Comment("Maximum number of lines the dimension names tooltip can have before it wraps around.") + @com.gtnewhorizon.gtnhlib.config.Config.DefaultInt(11) + @com.gtnewhorizon.gtnhlib.config.Config.RequiresMcRestart + public static int maxTooltipLines; } diff --git a/src/main/java/pers/gwyog/gtneioreplugin/GTNEIOrePlugin.java b/src/main/java/pers/gwyog/gtneioreplugin/GTNEIOrePlugin.java index e277ba915c..7ae7b0bc1c 100644 --- a/src/main/java/pers/gwyog/gtneioreplugin/GTNEIOrePlugin.java +++ b/src/main/java/pers/gwyog/gtneioreplugin/GTNEIOrePlugin.java @@ -1,11 +1,16 @@ package pers.gwyog.gtneioreplugin; +import java.io.File; + import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import com.gtnewhorizon.gtnhlib.config.ConfigException; +import com.gtnewhorizon.gtnhlib.config.ConfigurationManager; + import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.event.FMLInitializationEvent; @@ -28,14 +33,19 @@ import pers.gwyog.gtneioreplugin.util.GT5UndergroundFluidHelper; dependencies = "required-after:gregtech;required-after:NotEnoughItems") public class GTNEIOrePlugin { + static { + try { + ConfigurationManager.registerConfig(Config.class); + } catch (ConfigException e) { + throw new RuntimeException(e); + } + } + public static final String MODID = "gtneioreplugin"; public static final String NAME = "GT NEI Ore Plugin GT:NH Mod"; public static final String VERSION = GT_Version.VERSION; public static final Logger LOG = LogManager.getLogger(NAME); - public static boolean csv = false; - public static String CSVname; - public static String CSVnameSmall; - public static int maxTooltipLines = 11; + public static File instanceDir; public static final CreativeTabs creativeTab = new CreativeTabs(MODID) { @Override @@ -50,31 +60,8 @@ public class GTNEIOrePlugin { @EventHandler public void preinit(FMLPreInitializationEvent event) { - Config c = new Config(event, MODID + ".cfg"); - csv = c.tConfig.getBoolean( - "print csv", - "ALL", - false, - "print csv, you need apache commons collections to be injected in the minecraft jar."); - CSVname = c.tConfig.getString( - "CSV_name", - "ALL", - event.getModConfigurationDirectory() + "/GTNH-Oresheet.csv", - "rename the oresheet here, it will appear in /config"); - CSVnameSmall = c.tConfig.getString( - "CSV_name_for_Small_Ore_Sheet", - "ALL", - event.getModConfigurationDirectory() + "/GTNH-Small-Ores-Sheet.csv", - "rename the oresheet here, it will appear in /config"); - maxTooltipLines = c.tConfig.getInt( - "MaxToolTipLines", - "ALL", - 11, - 1, - Integer.MAX_VALUE, - "Maximum number of lines the dimension names tooltip can have before it wraps around."); - - c.save(); + instanceDir = event.getModConfigurationDirectory() + .getParentFile(); } @EventHandler @@ -89,7 +76,7 @@ public class GTNEIOrePlugin { GT5OreSmallHelper.init(); GT5UndergroundFluidHelper.init(); if (event.getSide() == Side.CLIENT) { - if (csv) { + if (Config.printCsv) { new CSVMaker().run(); } } diff --git a/src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5/PluginGT5SmallOreStat.java b/src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5/PluginGT5SmallOreStat.java index 1cf0157354..7e42f912a7 100644 --- a/src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5/PluginGT5SmallOreStat.java +++ b/src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5/PluginGT5SmallOreStat.java @@ -131,7 +131,9 @@ public class PluginGT5SmallOreStat extends PluginGT5Base { private String[] getDimNameArrayFromVeinName(String veinName) { OreSmallWrapper oreSmall = GT5OreSmallHelper.mapOreSmallWrapper.get(veinName); - String[] dims = DimensionHelper.parseDimNames(GT5OreSmallHelper.bufferedDims.get(oreSmall)); + String[] dims = GT5OreSmallHelper.bufferedDims.get(oreSmall) + .keySet() + .toArray(new String[0]); Arrays.sort( dims, Comparator.comparingInt( diff --git a/src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5/PluginGT5VeinStat.java b/src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5/PluginGT5VeinStat.java index 0f3322a500..81aff90ba9 100644 --- a/src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5/PluginGT5VeinStat.java +++ b/src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5/PluginGT5VeinStat.java @@ -135,7 +135,9 @@ public class PluginGT5VeinStat extends PluginGT5Base { private String[] getDimNameArrayFromVeinName(String veinName) { OreLayerWrapper oreLayer = GT5OreLayerHelper.mapOreLayerWrapper.get(veinName); - String[] dims = DimensionHelper.parseDimNames(GT5OreLayerHelper.bufferedDims.get(oreLayer)); + String[] dims = (GT5OreLayerHelper.bufferedDims.get(oreLayer) + .keySet() + .toArray(new String[0])); Arrays.sort( dims, Comparator.comparingInt( diff --git a/src/main/java/pers/gwyog/gtneioreplugin/util/CSVMaker.java b/src/main/java/pers/gwyog/gtneioreplugin/util/CSVMaker.java index 1a99b469af..61fdff46a2 100644 --- a/src/main/java/pers/gwyog/gtneioreplugin/util/CSVMaker.java +++ b/src/main/java/pers/gwyog/gtneioreplugin/util/CSVMaker.java @@ -1,136 +1,60 @@ package pers.gwyog.gtneioreplugin.util; +import static pers.gwyog.gtneioreplugin.Config.CSVName; +import static pers.gwyog.gtneioreplugin.Config.CSVnameSmall; +import static pers.gwyog.gtneioreplugin.GTNEIOrePlugin.instanceDir; + import java.io.BufferedWriter; import java.nio.file.Files; -import java.nio.file.Paths; import java.util.ArrayList; +import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.Map; -import com.opencsv.CSVWriter; -import com.opencsv.bean.ColumnPositionMappingStrategy; -import com.opencsv.bean.StatefulBeanToCsv; -import com.opencsv.bean.StatefulBeanToCsvBuilder; - -import pers.gwyog.gtneioreplugin.GTNEIOrePlugin; import pers.gwyog.gtneioreplugin.plugin.gregtech5.PluginGT5VeinStat; import pers.gwyog.gtneioreplugin.util.GT5OreLayerHelper.OreLayerWrapper; +// todo: yeet any opencsv usage. public class CSVMaker implements Runnable { - public CSVMaker() {} - - public static List<Oremix> Combsort(List<Oremix> list) { - try { - List<Oremix> list2 = new ArrayList<>(list.size()); - list2.addAll(list); - - int step = list2.size(); - boolean swapped; - do { - swapped = false; - if (step > 1) { - step = (int) (step / 1.3); - } - for (int i = 0; i < list2.size() - step; i++) { - if (list2.get(i) - .getOreName() - .substring(0, 3) - .compareTo( - (list2.get(i + step) - .getOreName() - .substring(0, 3))) - > 0) { - Oremix tmp = list2.get(i); - list2.set(i, list2.get(i + step)); - list2.set(i + step, tmp); - swapped = true; - } - } - } while (swapped || step > 1); - return list2; - } catch (Exception e) { - e.printStackTrace(); - return null; - } - } - public void runSmallOres() { try { Iterator<Map.Entry<String, GT5OreSmallHelper.OreSmallWrapper>> it = GT5OreSmallHelper.mapOreSmallWrapper .entrySet() .iterator(); - List<Oremix> OreVeins = new ArrayList<>(); + List<SmallOre> SmallOreVeins = new ArrayList<>(); while (it.hasNext()) { - Oremix oremix = new Oremix(); + SmallOre oremix = new SmallOre(); Map.Entry<String, GT5OreSmallHelper.OreSmallWrapper> pair = it.next(); - String Dims = GT5OreSmallHelper.bufferedDims.get(pair.getValue()); GT5OreSmallHelper.OreSmallWrapper oreLayer = pair.getValue(); - oremix.setOreName(oreLayer.oreGenName.split("\\.")[2]); + + Map<String, Boolean> Dims = GT5OreSmallHelper.bufferedDims.get(oreLayer); + + oremix.setOreName(oreLayer.oreGenName); + oremix.setOreMeta(oreLayer.oreMeta); oremix.setHeight(oreLayer.worldGenHeightRange); - oremix.setDensity(oreLayer.amountPerChunk); - oremix.an = Dims.contains("An"); - oremix.as = Dims.contains("As"); - oremix.bc = Dims.contains("BC"); - oremix.be = Dims.contains("BE"); - oremix.bf = Dims.contains("BF"); - oremix.ca = Dims.contains("Ca"); - oremix.cb = Dims.contains("CA"); - oremix.ce = Dims.contains("Ce"); - oremix.dd = Dims.contains("DD"); - oremix.de = Dims.contains("De"); - oremix.ea = Dims.contains("EA"); - oremix.en = Dims.contains("En"); - oremix.eu = Dims.contains("Eu"); - oremix.ga = Dims.contains("Ga"); - oremix.ha = Dims.contains("Ha"); - oremix.ho = Dims.contains("Ho"); - oremix.io = Dims.contains("Io"); - oremix.kb = Dims.contains("KB"); - oremix.make = Dims.contains("MM"); - oremix.ma = Dims.contains("Ma"); - oremix.mb = Dims.contains("MB"); - oremix.me = Dims.contains("Me"); - oremix.mh = Dims.contains("Mh"); - oremix.mi = Dims.contains("Mi"); - oremix.mo = Dims.contains("Mo"); - oremix.np = Dims.contains("Np"); - oremix.ob = Dims.contains("Ob"); - oremix.ph = Dims.contains("Ph"); - oremix.pl = Dims.contains("Pl"); - oremix.pr = Dims.contains("Pr"); - oremix.se = Dims.contains("Se"); - oremix.tcetie = Dims.contains("TE"); - oremix.tf = Dims.contains("TF"); - oremix.ti = Dims.contains("Ti"); - oremix.tr = Dims.contains("Tr"); - oremix.vb = Dims.contains("VB"); - oremix.ve = Dims.contains("Ve"); - oremix.setOverworld(Dims.contains("Ow")); - oremix.setNether(Dims.contains("Ne")); - oremix.setEnd(Dims.contains("EN")); - OreVeins.add(oremix); + oremix.setAmount(oreLayer.amountPerChunk); + oremix.setDims(Dims); + + SmallOreVeins.add(oremix); - System.out.println(pair.getKey() + " = " + pair.getValue()); it.remove(); // avoids a ConcurrentModificationException } - BufferedWriter one = Files.newBufferedWriter(Paths.get(GTNEIOrePlugin.CSVnameSmall)); - ColumnPositionMappingStrategy<Oremix> strat = new ColumnPositionMappingStrategy<>(); - strat.setType(Oremix.class); - String[] columns = "ORENAME,mix,DENSITY,overworld,nether,end,ea,tf,mo,ma,ph,de,as,ce,eu,ga,ca,io,ve,me,en,ti,mi,ob,pr,tr,pl,kb,ha,make,dd,cb,vb,bc,be,bf,tcetie,an,ho,np,mh,mb,se" - .split("\\,"); - strat.setColumnMapping(columns); - StatefulBeanToCsv<Oremix> beanToCsv = new StatefulBeanToCsvBuilder<Oremix>(one) - .withQuotechar(CSVWriter.NO_QUOTE_CHARACTER) - .withMappingStrategy(strat) - .build(); - List<Oremix> towrite = Combsort(OreVeins); - one.write( - "Ore Name,Primary,Secondary,Inbetween,Around,ID,Tier,Height,Density,Size,Weight,Overworld,Nether,End,End Asteroids,Twilight Forest,Moon,Mars,Phobos,Deimos,Asteroids,Ceres,Europa,Ganymede,Callisto,Io,Venus,Mercury,Enceladus,Titan,Miranda,Oberon,Proteus,Triton,Pluto,Kuiper Belt,Haumea,Makemake,Deep Dark,Centauri Bb,Vega B,Barnard C,Barnard E,Barnard F,T Ceti E,Anubis,Horus,Neper,Maahes,Mehen Belt,Seth"); + + BufferedWriter one = Files.newBufferedWriter( + instanceDir.toPath() + .resolve(CSVnameSmall)); + Collections.sort(SmallOreVeins); + + // header first + one.write(SmallOre.getCsvHeader()); one.newLine(); - beanToCsv.write(towrite); + for (SmallOre ore : SmallOreVeins) { + one.write(ore.getCsvEntry()); + one.newLine(); + } one.flush(); one.close(); } catch (Exception e) { @@ -153,84 +77,41 @@ public class CSVMaker implements Runnable { Oremix oremix = new Oremix(); Map.Entry<String, OreLayerWrapper> pair = it.next(); - String Dims = GT5OreLayerHelper.bufferedDims.get(pair.getValue()); + Map<String, Boolean> Dims = GT5OreLayerHelper.bufferedDims.get(pair.getValue()); OreLayerWrapper oreLayer = pair.getValue(); - oremix.setOreName(oreLayer.veinName.split("\\.")[2]); + oremix.setOreMixName(oreLayer.veinName); oremix.setPrimary(PluginGT5VeinStat.getGTOreLocalizedName(oreLayer.Meta[0])); oremix.setSecondary(PluginGT5VeinStat.getGTOreLocalizedName(oreLayer.Meta[1])); oremix.setInbetween(PluginGT5VeinStat.getGTOreLocalizedName(oreLayer.Meta[2])); - oremix.setAround(PluginGT5VeinStat.getGTOreLocalizedName(oreLayer.Meta[3])); + oremix.setSporadic(PluginGT5VeinStat.getGTOreLocalizedName(oreLayer.Meta[3])); oremix.setSize(oreLayer.size); oremix.setHeight(oreLayer.worldGenHeightRange); oremix.setDensity(oreLayer.density); oremix.setWeight(oreLayer.randomWeight); - oremix.setMix( + oremix.setOreMixIDs( Integer.toString(oreLayer.Meta[0]) + "|" + Integer.toString(oreLayer.Meta[1]) + "|" + Integer.toString(oreLayer.Meta[2]) + "|" + Integer.toString(oreLayer.Meta[3])); - oremix.an = Dims.contains("An"); - oremix.as = Dims.contains("As"); - oremix.bc = Dims.contains("BC"); - oremix.be = Dims.contains("BE"); - oremix.bf = Dims.contains("BF"); - oremix.ca = Dims.contains("Ca"); - oremix.cb = Dims.contains("CA"); - oremix.ce = Dims.contains("Ce"); - oremix.dd = Dims.contains("DD"); - oremix.de = Dims.contains("De"); - oremix.ea = Dims.contains("EA"); - oremix.en = Dims.contains("En"); - oremix.eu = Dims.contains("Eu"); - oremix.ga = Dims.contains("Ga"); - oremix.ha = Dims.contains("Ha"); - oremix.ho = Dims.contains("Ho"); - oremix.io = Dims.contains("Io"); - oremix.kb = Dims.contains("KB"); - oremix.make = Dims.contains("MM"); - oremix.ma = Dims.contains("Ma"); - oremix.mb = Dims.contains("MB"); - oremix.me = Dims.contains("Me"); - oremix.mh = Dims.contains("Mh"); - oremix.mi = Dims.contains("Mi"); - oremix.mo = Dims.contains("Mo"); - oremix.np = Dims.contains("Np"); - oremix.ob = Dims.contains("Ob"); - oremix.ph = Dims.contains("Ph"); - oremix.pl = Dims.contains("Pl"); - oremix.pr = Dims.contains("Pr"); - oremix.se = Dims.contains("Se"); - oremix.tcetie = Dims.contains("TE"); - oremix.tf = Dims.contains("TF"); - oremix.ti = Dims.contains("Ti"); - oremix.tr = Dims.contains("Tr"); - oremix.vb = Dims.contains("VB"); - oremix.ve = Dims.contains("Ve"); - oremix.setOverworld(Dims.contains("Ow")); - oremix.setNether(Dims.contains("Ne")); - oremix.setEnd(Dims.contains("EN")); + oremix.setDims(Dims); OreVeins.add(oremix); - System.out.println(pair.getKey() + " = " + pair.getValue()); it.remove(); // avoids a ConcurrentModificationException } - BufferedWriter one = Files.newBufferedWriter(Paths.get(GTNEIOrePlugin.CSVname)); - ColumnPositionMappingStrategy<Oremix> strat = new ColumnPositionMappingStrategy<>(); - strat.setType(Oremix.class); - String[] columns = "ORENAME,PRIMARY,SECONDARY,INBETWEEN,AROUND,mix,TIER,HEIGHT,DENSITY,SIZE,WEIGHT,overworld,nether,end,ea,tf,mo,ma,ph,de,as,ce,eu,ga,ca,io,ve,me,en,ti,mi,ob,pr,tr,pl,kb,ha,make,dd,cb,vb,bc,be,bf,tcetie,an,ho,np,mh,mb,se" - .split("\\,"); - strat.setColumnMapping(columns); - StatefulBeanToCsv<Oremix> beanToCsv = new StatefulBeanToCsvBuilder<Oremix>(one) - .withQuotechar(CSVWriter.NO_QUOTE_CHARACTER) - .withMappingStrategy(strat) - .build(); - List<Oremix> towrite = Combsort(OreVeins); - one.write( - "Ore Name,Primary,Secondary,Inbetween,Around,ID,Tier,Height,Density,Size,Weight,Overworld,Nether,End,End Asteroids,Twilight Forest,Moon,Mars,Phobos,Deimos,Asteroids,Ceres,Europa,Ganymede,Callisto,Io,Venus,Mercury,Enceladus,Titan,Miranda,Oberon,Proteus,Triton,Pluto,Kuiper Belt,Haumea,Makemake,Deep Dark,Centauri Bb,Vega B,Barnard C,Barnard E,Barnard F,T Ceti E,Anubis,Horus,Neper,Maahes,Mehen Belt,Seth"); + BufferedWriter one = Files.newBufferedWriter( + instanceDir.toPath() + .resolve(CSVName)); + Collections.sort(OreVeins); + + // header first + one.write(Oremix.getCsvHeader()); one.newLine(); - beanToCsv.write(towrite); + for (Oremix ore : OreVeins) { + one.write(ore.getCsvEntry()); + one.newLine(); + } one.flush(); one.close(); } catch (Exception e) { diff --git a/src/main/java/pers/gwyog/gtneioreplugin/util/DimensionHelper.java b/src/main/java/pers/gwyog/gtneioreplugin/util/DimensionHelper.java index e416713208..db7201323b 100644 --- a/src/main/java/pers/gwyog/gtneioreplugin/util/DimensionHelper.java +++ b/src/main/java/pers/gwyog/gtneioreplugin/util/DimensionHelper.java @@ -1,18 +1,59 @@ package pers.gwyog.gtneioreplugin.util; -import static pers.gwyog.gtneioreplugin.GTNEIOrePlugin.maxTooltipLines; +import static bloodasp.galacticgreg.api.enums.DimensionDef.DimNames.ANUBIS; +import static bloodasp.galacticgreg.api.enums.DimensionDef.DimNames.ASTEROIDS; +import static bloodasp.galacticgreg.api.enums.DimensionDef.DimNames.BARNARDC; +import static bloodasp.galacticgreg.api.enums.DimensionDef.DimNames.BARNARDE; +import static bloodasp.galacticgreg.api.enums.DimensionDef.DimNames.BARNARDF; +import static bloodasp.galacticgreg.api.enums.DimensionDef.DimNames.CALLISTO; +import static bloodasp.galacticgreg.api.enums.DimensionDef.DimNames.CENTAURIA; +import static bloodasp.galacticgreg.api.enums.DimensionDef.DimNames.CERES; +import static bloodasp.galacticgreg.api.enums.DimensionDef.DimNames.DEEPDARK; +import static bloodasp.galacticgreg.api.enums.DimensionDef.DimNames.DEIMOS; +import static bloodasp.galacticgreg.api.enums.DimensionDef.DimNames.ENCELADUS; +import static bloodasp.galacticgreg.api.enums.DimensionDef.DimNames.ENDASTEROIDS; +import static bloodasp.galacticgreg.api.enums.DimensionDef.DimNames.EUROPA; +import static bloodasp.galacticgreg.api.enums.DimensionDef.DimNames.GANYMEDE; +import static bloodasp.galacticgreg.api.enums.DimensionDef.DimNames.HAUMEA; +import static bloodasp.galacticgreg.api.enums.DimensionDef.DimNames.HORUS; +import static bloodasp.galacticgreg.api.enums.DimensionDef.DimNames.IO; +import static bloodasp.galacticgreg.api.enums.DimensionDef.DimNames.KUIPERBELT; +import static bloodasp.galacticgreg.api.enums.DimensionDef.DimNames.MAAHES; +import static bloodasp.galacticgreg.api.enums.DimensionDef.DimNames.MAKEMAKE; +import static bloodasp.galacticgreg.api.enums.DimensionDef.DimNames.MARS; +import static bloodasp.galacticgreg.api.enums.DimensionDef.DimNames.MEHENBELT; +import static bloodasp.galacticgreg.api.enums.DimensionDef.DimNames.MERCURY; +import static bloodasp.galacticgreg.api.enums.DimensionDef.DimNames.MIRANDA; +import static bloodasp.galacticgreg.api.enums.DimensionDef.DimNames.MOON; +import static bloodasp.galacticgreg.api.enums.DimensionDef.DimNames.NEPER; +import static bloodasp.galacticgreg.api.enums.DimensionDef.DimNames.OBERON; +import static bloodasp.galacticgreg.api.enums.DimensionDef.DimNames.PHOBOS; +import static bloodasp.galacticgreg.api.enums.DimensionDef.DimNames.PLUTO; +import static bloodasp.galacticgreg.api.enums.DimensionDef.DimNames.PROTEUS; +import static bloodasp.galacticgreg.api.enums.DimensionDef.DimNames.ROSS128B; +import static bloodasp.galacticgreg.api.enums.DimensionDef.DimNames.ROSS128BA; +import static bloodasp.galacticgreg.api.enums.DimensionDef.DimNames.SETH; +import static bloodasp.galacticgreg.api.enums.DimensionDef.DimNames.TCETIE; +import static bloodasp.galacticgreg.api.enums.DimensionDef.DimNames.TITAN; +import static bloodasp.galacticgreg.api.enums.DimensionDef.DimNames.TRITON; +import static bloodasp.galacticgreg.api.enums.DimensionDef.DimNames.VEGAB; +import static bloodasp.galacticgreg.api.enums.DimensionDef.DimNames.VENUS; +import static pers.gwyog.gtneioreplugin.Config.maxTooltipLines; import java.util.Arrays; import java.util.HashMap; import java.util.List; +import java.util.Map; import net.minecraft.util.StatCollector; +import gregtech.common.OreMixBuilder; + public class DimensionHelper { public static final String[] DimName = { // Non GC dimensions in progression order instead of alphabetical - "Overworld", "Nether", "Twilight", "TheEnd", "Vanilla_EndAsteroids", "EndAsteroid", + "Overworld", "Nether", "Twilight", "TheEnd", "EndAsteroid", // T1 "GalacticraftCore_Moon", // T2 @@ -42,8 +83,7 @@ public class DimensionHelper { n -> n.replaceAll("GalacticraftCore_", "") .replaceAll("GalacticraftMars_", "") .replaceAll("GalaxySpace_", "") - .replaceAll("GalacticraftAmunRa_", "") - .replaceAll("Vanilla_", "Vanilla ")) + .replaceAll("GalacticraftAmunRa_", "")) .toArray(String[]::new); public static final String[] DimNameDisplayed = { // first 2 letters if one word else 1 letter of every word, except @@ -54,7 +94,6 @@ public class DimensionHelper { "Ne", // Nether "TF", // Twilight "ED", // TheEnd because En = Encalus - "VA", // Vanilla_EndAsteroids "EA", // EndAsteroid // T1 "Mo", // GalacticraftCore_Moon @@ -155,6 +194,157 @@ public class DimensionHelper { return dims; } + public static Map<String, Boolean> getDims(GT5OreLayerHelper.OreLayerWrapper oreLayer) { + Map<String, Boolean> enabledDims = new HashMap<>(); + Map<String, Boolean> origNames = oreLayer.allowedDimWithOrigNames; + + for (String dimName : origNames.keySet()) { + String abbr = getDimAbbreviatedName(dimName); + if (!origNames.getOrDefault(dimName, false)) { + continue; + } + enabledDims.put(abbr, true); + } + return enabledDims; + } + + public static Map<String, Boolean> getDims(GT5OreSmallHelper.OreSmallWrapper ore) { + Map<String, Boolean> enabledDims = new HashMap<>(); + Map<String, Boolean> origNames = ore.allowedDimWithOrigNames; + + for (String dimName : origNames.keySet()) { + String abbr = getDimAbbreviatedName(dimName); + if (!origNames.getOrDefault(dimName, false)) { + continue; + } + enabledDims.put(abbr, true); + } + return enabledDims; + } + + public static String getDimAbbreviatedName(String dimName) { + String abbreviatedName; + switch (dimName) { + case (OreMixBuilder.OW) -> abbreviatedName = "Ow"; // Overworld + case OreMixBuilder.NETHER -> abbreviatedName = "Ne"; // Nether + case OreMixBuilder.TWILIGHT_FOREST -> abbreviatedName = "TF"; // Twilight + case OreMixBuilder.THE_END -> abbreviatedName = "ED"; // TheEnd because En = Encalus + case ENDASTEROIDS -> abbreviatedName = "EA"; // EndAsteroid + // T1 + case MOON -> abbreviatedName = "Mo"; // GalacticraftCore_Moon + // T2 + case DEIMOS -> abbreviatedName = "De"; // GalaxySpace_Deimos + case MARS -> abbreviatedName = "Ma"; // GalacticraftMars_Mars + case PHOBOS -> abbreviatedName = "Ph"; // GalaxySpace_Phobos + // T3 + case ASTEROIDS -> abbreviatedName = "As"; // GalacticraftMars_Asteroids + case CALLISTO -> abbreviatedName = "Ca"; // GalaxySpace_Callisto + case CERES -> abbreviatedName = "Ce"; // GalaxySpace_Ceres + case EUROPA -> abbreviatedName = "Eu"; // GalaxySpace_Europa + case GANYMEDE -> abbreviatedName = "Ga"; // GalaxySpace_Ganymede + case ROSS128B -> abbreviatedName = "Rb"; // Ross128b + // T4 + case IO -> abbreviatedName = "Io"; // GalaxySpace_Io + case MERCURY -> abbreviatedName = "Me"; // GalaxySpace_Mercury + case VENUS -> abbreviatedName = "Ve"; // GalaxySpace_Venus + // T5 + case ENCELADUS -> abbreviatedName = "En"; // GalaxySpace_Enceladus + case MIRANDA -> abbreviatedName = "Mi"; // GalaxySpace_Miranda + case OBERON -> abbreviatedName = "Ob"; // GalaxySpace_Oberon + case TITAN -> abbreviatedName = "Ti"; // GalaxySpace_Titan + case ROSS128BA -> abbreviatedName = "Ra"; // Ross128ba + // T6 + case PROTEUS -> abbreviatedName = "Pr"; // GalaxySpace_Proteus + case TRITON -> abbreviatedName = "Tr"; // GalaxySpace_Triton + // T7 + case HAUMEA -> abbreviatedName = "Ha"; // GalaxySpace_Haumea + case KUIPERBELT -> abbreviatedName = "KB"; // GalaxySpace_Kuiperbelt + case MAKEMAKE -> abbreviatedName = "MM"; // GalaxySpace_MakeMake + case PLUTO -> abbreviatedName = "Pl"; // GalaxySpace_Pluto + // T8 + case BARNARDC -> abbreviatedName = "BC"; // GalaxySpace_BarnardC + case BARNARDE -> abbreviatedName = "BE"; // GalaxySpace_BarnardE + case BARNARDF -> abbreviatedName = "BF"; // GalaxySpace_BarnardF + case CENTAURIA -> abbreviatedName = "CB"; // GalaxySpace_CentauriA is actually α Centauri Bb + case TCETIE -> abbreviatedName = "TE"; // GalaxySpace_TcetiE + case VEGAB -> abbreviatedName = "VB"; // GalaxySpace_VegaB + // T9 + case ANUBIS -> abbreviatedName = "An"; // GalacticraftAmunRa_Anubis + case HORUS -> abbreviatedName = "Ho"; // GalacticraftAmunRa_Horus + case MAAHES -> abbreviatedName = "Mh"; // GalacticraftAmunRa_Maahes + case MEHENBELT -> abbreviatedName = "MB"; // GalacticraftAmunRa_MehenBelt + case NEPER -> abbreviatedName = "Np"; // GalacticraftAmunRa_Neper + case SETH -> abbreviatedName = "Se"; // GalacticraftAmunRa_Seth + // T10 + case DEEPDARK -> abbreviatedName = "DD"; // Underdark + default -> { + throw new IllegalStateException("String: " + dimName + " has no abbredged name!"); + } + } + return abbreviatedName; + } + + public static String getFullName(String dimName) { + + return switch (dimName) { + case "Ow" -> (OreMixBuilder.OW); // Overworld + case "Ne" -> OreMixBuilder.NETHER; // Nether + case "TF" -> OreMixBuilder.TWILIGHT_FOREST; // Twilight + case "ED" -> OreMixBuilder.THE_END; // TheEnd because En = Encalus + case "EA" -> ENDASTEROIDS; // EndAsteroid + // T1 + case "Mo" -> MOON; // GalacticraftCore_Moon + // T2 + case "De" -> DEIMOS; // GalaxySpace_Deimos + case "Ma" -> MARS; // GalacticraftMars_Mars + case "Ph" -> PHOBOS; // GalaxySpace_Phobos + // T3 + case "As" -> ASTEROIDS; // GalacticraftMars_Asteroids + case "Ca" -> CALLISTO; // GalaxySpace_Callisto + case "Ce" -> CERES; // GalaxySpace_Ceres + case "Eu" -> EUROPA; // GalaxySpace_Europa + case "Ga" -> GANYMEDE; // GalaxySpace_Ganymede + case "Rb" -> ROSS128B; // Ross128b + // T4 + case "Io" -> IO; // GalaxySpace_Io + case "Me" -> MERCURY; // GalaxySpace_Mercury + case "Ve" -> VENUS; // GalaxySpace_Venus + // T5 + case "En" -> ENCELADUS; // GalaxySpace_Enceladus + case "Mi" -> MIRANDA; // GalaxySpace_Miranda + case "Ob" -> OBERON; // GalaxySpace_Oberon + case "Ti" -> TITAN; // GalaxySpace_Titan + case "Ra" -> ROSS128BA; // Ross128ba + // T6 + case "Pr" -> PROTEUS; // GalaxySpace_Proteus + case "Tr" -> TRITON; // GalaxySpace_Triton + // T7 + case "Ha" -> HAUMEA; // GalaxySpace_Haumea + case "KB" -> KUIPERBELT; // GalaxySpace_Kuiperbelt + case "MM" -> MAKEMAKE; // GalaxySpace_MakeMake + case "Pl" -> PLUTO; // GalaxySpace_Pluto + // T8 + case "BC" -> BARNARDC; // GalaxySpace_BarnardC + case "BE" -> BARNARDE; // GalaxySpace_BarnardE + case "BF" -> BARNARDF; // GalaxySpace_BarnardF + case "CB" -> CENTAURIA; // GalaxySpace_CentauriA is actually α Centau |
