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 α Centauri Bb + case "TE" -> TCETIE; // GalaxySpace_TcetiE + case "VB" -> VEGAB; // GalaxySpace_VegaB + // T9 + case "An" -> ANUBIS; // GalacticraftAmunRa_Anubis + case "Ho" -> HORUS; // GalacticraftAmunRa_Horus + case "Mh" -> MAAHES; // GalacticraftAmunRa_Maahes + case "MB" -> MEHENBELT; // GalacticraftAmunRa_MehenBelt + case "Np" -> NEPER; // GalacticraftAmunRa_Neper + case "Se" -> SETH; // GalacticraftAmunRa_Seth + // T10 + case "DD" -> DEEPDARK; // Underdark + default -> { + throw new IllegalStateException("String: " + dimName + " has no abbredged name!"); + } + }; + } + public static List<String> convertCondensedStringToToolTip(String line) { return tooltipBuffer.computeIfAbsent(line, (String tmp) -> computeString(line)); } diff --git a/src/main/java/pers/gwyog/gtneioreplugin/util/GT5CFGHelper.java b/src/main/java/pers/gwyog/gtneioreplugin/util/GT5CFGHelper.java deleted file mode 100644 index 7394edea58..0000000000 --- a/src/main/java/pers/gwyog/gtneioreplugin/util/GT5CFGHelper.java +++ /dev/null @@ -1,225 +0,0 @@ -package pers.gwyog.gtneioreplugin.util; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileReader; -import java.io.IOException; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; - -import net.minecraftforge.common.config.ConfigCategory; -import net.minecraftforge.common.config.Configuration; -import net.minecraftforge.common.config.Property; - -import cpw.mods.fml.common.FMLLog; -import gregtech.api.GregTech_API; -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 final String oreVeinNotInAnyDim = "Not available in any Galactic Dim!"; - - private static final File F = GregTech_API.sWorldgenFile.mConfig.getConfigFile(); - - public static String GT5CFGSmallOres(String Veinname) { - List<String> raw = new ArrayList<>(); - List<String> rawbools = new ArrayList<>(); - String st; - Configuration c = new Configuration(F); - ConfigCategory configCategory = c.getCategory("worldgen." + Veinname); - for (Property p : configCategory.getOrderedValues()) { - if (p.isBooleanValue() && p.getBoolean()) { - raw.add(p.getName() + "=" + p.getBoolean()); - } - } - if (!raw.isEmpty()) { - for (String s : raw) { - for (int j = 0; j < DimensionHelper.DimName.length; j++) { - if (s.contains(DimensionHelper.DimName[j])) { - rawbools.add(s); - } - } - } - } else GTNEIOrePlugin.LOG.info("Config entry not found for Vein: " + Veinname); - - StringBuilder ret = new StringBuilder(" "); - - HashSet<String> rawboolsset = new HashSet<>(); - if (!rawbools.isEmpty()) { - for (String rawbool : rawbools) { - st = rawbool.replace("B:", "") - .replace("_true", "") - .replace("_false", "") - .replaceAll(" ", "") - .replaceAll("\"", ""); - rawboolsset.add(st); - } - rawbools = new ArrayList<>(rawboolsset); - for (int j = 0; j < DimensionHelper.DimName.length; j++) { - for (String rawbool : rawbools) { - st = rawbool; - if (st.contains(DimensionHelper.DimName[j]) && st.contains("=true")) { - ret.append(DimensionHelper.DimNameDisplayed[j]) - .append(","); - } - } - } - } - ret = new StringBuilder( - ret.toString() - .trim()); - if (ret.toString() - .equals("") - || ret.toString() - .equals(" ")) { - ret = new StringBuilder(oreVeinNotInAnyDim); - } - return ret.toString(); - } - - public static String GT5CFG(String Veinname) { - // FMLLog.info(Veinname); - if (F == null) { - FMLLog.bigWarning("GT_CFG_NOT_found[0]"); - return "Error while Loading CFG"; - } else try { - int buffer = (int) (0.1 * Runtime.getRuntime() - .freeMemory()); - if (buffer > F.length()) { - buffer = (int) F.length(); - } - // allocate 10% of free memory for read-in-buffer, if there is less than filesize memory available - // FMLLog.info("GT_CFG_found[0]"); - FileReader in = new FileReader(F); - // FMLLog.info("FileReader created"); - BufferedReader reader = new BufferedReader(in, buffer); - // FMLLog.info("BufferedReader" +Integer.toString(buffer)+"created"); - String st; - List<String> raw = new ArrayList<>(); - List<String> rawbools = new ArrayList<>(); - Boolean[] found = new Boolean[2]; - found[0] = false; - found[1] = false; - - do { - // FMLLog.info("erste"); - // read until reached eof or mix { - st = reader.readLine(); - // FMLLog.info("st: "+st); - if (st != null && st.trim() - .equals("mix {")) { - while (!(st == null || found[0])) { - // FMLLog.info("zweite"); - st = reader.readLine(); - // read until reached eof or Veinname { - // FMLLog.info("MIXst: "+st); - if (st != null && st.trim() - .equals(Veinname + " {")) { - // FMLLog.info("VEINNAMEst: "+st); - while (!(st == null || found[0])) { - st = reader.readLine(); - if ((!(st == null)) && st.trim() - .equals("}")) { - found[0] = true; - } - // FMLLog.info("dritte"); - // add everything below Veinname { undtil } to raw - raw.add(st); - } - } - } - } - - if (st != null && st.trim() - .equals("dimensions {")) { - while (!(st == null || found[1])) { - // FMLLog.info("zweite"); - st = reader.readLine(); - if (st != null && (st.trim() - .equals("mix {"))) { - while (!(st == null || found[1])) { - // FMLLog.info("dritte"); - st = reader.readLine(); - // read until reached eof or Veinname { - // FMLLog.info("MIXst: "+st); - if (st != null && st.trim() - .equals(Veinname + " {")) { - // FMLLog.info("VEINNAMEst: "+st); - while (!(st == null || found[1])) { - st = reader.readLine(); - if ((!(st == null)) && st.trim() - .equals("}")) { - found[1] = true; - } - // FMLLog.info("vierte"); - // add everything below Veinname { undtil } to raw - raw.add(st); - } - } - } - } - } - } - } while (st != null); - reader.close(); // not needed anymore - - if (!raw.isEmpty()) { - for (String s : raw) { - // filter needed booleans from raw - /// FMLLog.info("raw contains"+raw.get(i)); - for (int j = 0; j < DimensionHelper.DimName.length; j++) { - if (s.contains(DimensionHelper.DimName[j])) { - rawbools.add(s); - } - } - // FMLLog.info("rawbools: "+rawbools.get(i)); - } - } else { - GTNEIOrePlugin.LOG.info("Config entry not found for Vein: " + Veinname); - } - - StringBuilder ret = new StringBuilder(" "); - - HashSet<String> rawboolsset = new HashSet<>(); - if (!rawbools.isEmpty()) { - // remove dublicates - for (String rawbool : rawbools) { - st = rawbool.replace("B:", "") - .replace("_true", "") - .replace("_false", "") - .replaceAll(" ", "") - .replaceAll("\"", ""); - rawboolsset.add(st); - } - rawbools = new ArrayList<>(rawboolsset); - // filter for dims set to true - for (int j = 0; j < DimensionHelper.DimName.length; j++) { - // FMLLog.info("RawBools:"+st); - for (String rawbool : rawbools) { - st = rawbool; - if (st.contains(DimensionHelper.DimName[j]) && st.contains("=true")) { - ret.append(DimensionHelper.DimNameDisplayed[j]) - .append(","); - } - } - } - } - ret = new StringBuilder( - ret.toString() - .trim()); - // FMLLog.info("ret:"+ret); - if (ret.toString() - .equals("") - || ret.toString() - .equals(" ")) { - ret = new StringBuilder(oreVeinNotInAnyDim); - } - return ret.toString(); - } catch (IOException e) { - e.printStackTrace(); - return "Error while Loading CFG"; - } - } -} diff --git a/src/main/java/pers/gwyog/gtneioreplugin/util/GT5OreLayerHelper.java b/src/main/java/pers/gwyog/gtneioreplugin/util/GT5OreLayerHelper.java index ccb8c88e75..246ace7fda 100644 --- a/src/main/java/pers/gwyog/gtneioreplugin/util/GT5OreLayerHelper.java +++ b/src/main/java/pers/gwyog/gtneioreplugin/util/GT5OreLayerHelper.java @@ -1,20 +1,20 @@ package pers.gwyog.gtneioreplugin.util; -import static pers.gwyog.gtneioreplugin.util.GT5CFGHelper.oreVeinNotInAnyDim; +import static pers.gwyog.gtneioreplugin.util.DimensionHelper.getDims; import static pers.gwyog.gtneioreplugin.util.OreVeinLayer.*; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; +import java.util.Map; import net.minecraft.item.ItemStack; import gregtech.api.GregTech_API; import gregtech.api.enums.Materials; -import gregtech.api.objects.ItemData; -import gregtech.api.util.GT_OreDictUnificator; -import gregtech.common.GT_Worldgen_GT_Ore_Layer; +import gregtech.api.enums.OreMixes; +import gregtech.common.OreMixBuilder; public class GT5OreLayerHelper { @@ -39,14 +39,14 @@ public class GT5OreLayerHelper { public static final Integer[] weightPerWorld = new Integer[DIMENSION_COUNT]; public static final Integer[] DimIDs = new Integer[DIMENSION_COUNT]; public static final HashMap<String, OreLayerWrapper> mapOreLayerWrapper = new HashMap<>(); - public static final HashMap<OreLayerWrapper, String> bufferedDims = new HashMap<>(); + public static final HashMap<OreLayerWrapper, Map<String, Boolean>> bufferedDims = new HashMap<>(); public static final HashMap<String, NormalOreDimensionWrapper> dimToOreWrapper = new HashMap<>(); public static void init() { Arrays.fill(weightPerWorld, 0); Arrays.fill(DimIDs, 0); - for (GT_Worldgen_GT_Ore_Layer tWorldGen : GT_Worldgen_GT_Ore_Layer.sList) - mapOreLayerWrapper.put(tWorldGen.mWorldGenName, new OreLayerWrapper(tWorldGen)); + for (OreMixes mix : OreMixes.values()) + mapOreLayerWrapper.put(mix.oreMixBuilder.oreMixName, new OreLayerWrapper(mix.oreMixBuilder)); for (OreLayerWrapper layer : mapOreLayerWrapper.values()) { bufferedDims.put(layer, getDims(layer)); } @@ -55,17 +55,12 @@ public class GT5OreLayerHelper { // Get dims as "Ow,Ne,Ma" etc. bufferedDims.forEach((veinInfo, dims) -> { - if (dims.equals(oreVeinNotInAnyDim)) { - return; - } - for (String dim : dims.split(",")) { - if (!dim.isEmpty()) { - NormalOreDimensionWrapper dimensionOres = dimToOreWrapper - .getOrDefault(dim, new NormalOreDimensionWrapper()); - dimensionOres.internalDimOreList.add(veinInfo); - dimToOreWrapper.put(dim, dimensionOres); - } + for (String dim : dims.keySet()) { + NormalOreDimensionWrapper dimensionOres = dimToOreWrapper + .getOrDefault(dim, new NormalOreDimensionWrapper()); + dimensionOres.internalDimOreList.add(veinInfo); + dimToOreWrapper.put(dim, dimensionOres); } // Calculate probabilities for each dim. @@ -77,48 +72,36 @@ public class GT5OreLayerHelper { // --- End of handling for dimToOreWrapper --- } - public static String getDims(OreLayerWrapper oreLayer) { - return GT5CFGHelper.GT5CFG( - oreLayer.veinName.replace("ore.mix.custom" + ".", "") - .replace("ore.mix.", "")); - } - public static class OreLayerWrapper { public final String veinName, worldGenHeightRange; public final short[] Meta = new short[4]; public final short randomWeight, size, density; + public final Map<String, Boolean> allowedDimWithOrigNames; public final Materials mPrimaryVeinMaterial; public final Materials mSecondaryMaterial; public final Materials mBetweenMaterial; public final 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. - ItemData primaryVeinData = GT_OreDictUnificator - .getAssociation(new ItemStack(GregTech_API.sBlockOres1, 1, worldGen.mPrimaryMeta)); - this.mPrimaryVeinMaterial = primaryVeinData != null ? primaryVeinData.mMaterial.mMaterial : null; - ItemData secondaryVeinData = GT_OreDictUnificator - .getAssociation(new ItemStack(GregTech_API.sBlockOres1, 1, worldGen.mSecondaryMeta)); - this.mSecondaryMaterial = secondaryVeinData != null ? secondaryVeinData.mMaterial.mMaterial : null; - ItemData betweenVeinData = GT_OreDictUnificator - .getAssociation(new ItemStack(GregTech_API.sBlockOres1, 1, worldGen.mBetweenMeta)); - this.mBetweenMaterial = betweenVeinData != null ? betweenVeinData.mMaterial.mMaterial : null; - ItemData sporadicVeinData = GT_OreDictUnificator - .getAssociation(new ItemStack(GregTech_API.sBlockOres1, 1, worldGen.mSporadicMeta)); - this.mSporadicMaterial = sporadicVeinData != null ? sporadicVeinData.mMaterial.mMaterial : null; - - this.size = worldGen.mSize; - this.density = worldGen.mDensity; - this.worldGenHeightRange = worldGen.mMinY + "-" + worldGen.mMaxY; - this.randomWeight = worldGen.mWeight; + public OreLayerWrapper(OreMixBuilder mix) { + this.veinName = mix.oreMixName; + this.Meta[0] = (short) mix.primary.mMetaItemSubID; + this.Meta[1] = (short) mix.secondary.mMetaItemSubID; + this.Meta[2] = (short) mix.between.mMetaItemSubID; + this.Meta[3] = (short) mix.sporadic.mMetaItemSubID; + + this.mPrimaryVeinMaterial = mix.primary; + this.mSecondaryMaterial = mix.secondary; + this.mBetweenMaterial = mix.between; + this.mSporadicMaterial = mix.sporadic; + + this.size = (short) mix.size; + this.density = (short) mix.density; + this.worldGenHeightRange = mix.minY + "-" + mix.maxY; + this.randomWeight = (short) mix.weight; + + this.allowedDimWithOrigNames = mix.dimsEnabled; } public List<ItemStack> getVeinLayerOre(int maximumMaterialIndex, int veinLayer) { diff --git a/src/main/java/pers/gwyog/gtneioreplugin/util/GT5OreSmallHelper.java b/src/main/java/pers/gwyog/gtneioreplugin/util/GT5OreSmallHelper.java index 725b0c2819..bed47193b9 100644 --- a/src/main/java/pers/gwyog/gtneioreplugin/util/GT5OreSmallHelper.java +++ b/src/main/java/pers/gwyog/gtneioreplugin/util/GT5OreSmallHelper.java @@ -1,20 +1,22 @@ package pers.gwyog.gtneioreplugin.util; -import static pers.gwyog.gtneioreplugin.util.GT5CFGHelper.oreVeinNotInAnyDim; +import static pers.gwyog.gtneioreplugin.util.DimensionHelper.getDims; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Map; import net.minecraft.item.ItemStack; import gregtech.api.GregTech_API; import gregtech.api.enums.Materials; import gregtech.api.enums.OrePrefixes; -import gregtech.api.objects.ItemData; +import gregtech.api.enums.SmallOres; import gregtech.api.util.GT_OreDictUnificator; import gregtech.api.world.GT_Worldgen; import gregtech.common.GT_Worldgen_GT_Ore_SmallPieces; +import gregtech.common.SmallOreBuilder; public class GT5OreSmallHelper { @@ -24,7 +26,7 @@ public class GT5OreSmallHelper { public static final HashMap<String, OreSmallWrapper> mapOreSmallWrapper = new HashMap<>(); public static final HashMap<String, Short> mapOreDropUnlocalizedNameToOreMeta = new HashMap<>(); public static final HashMap<Short, List<ItemStack>> mapOreMetaToOreDrops = new HashMap<>(); - public static final HashMap<OreSmallWrapper, String> bufferedDims = new HashMap<>(); + public static final HashMap<OreSmallWrapper, Map<String, Boolean>> bufferedDims = new HashMap<>(); public static final HashMap<String, SmallOreDimensionWrapper> dimToSmallOreWrapper = new HashMap<>(); public static class SmallOreDimensionWrapper { @@ -50,89 +52,89 @@ public class GT5OreSmallHelper { ItemStack stack; Materials material; short meta; - for (GT_Worldgen worldGen : GregTech_API.sWorldgenList) - if (worldGen.mWorldGenName.startsWith("ore.small.") && worldGen instanceof GT_Worldgen_GT_Ore_SmallPieces) { - GT_Worldgen_GT_Ore_SmallPieces worldGenSmallPieces = (GT_Worldgen_GT_Ore_SmallPieces) worldGen; - meta = worldGenSmallPieces.mMeta; - if (meta < 0) break; - material = GregTech_API.sGeneratedMaterials[meta]; - mapOreSmallWrapper.put(worldGen.mWorldGenName, new OreSmallWrapper(worldGenSmallPieces)); - if (!mapOreMetaToOreDrops.containsKey(meta)) { - List<ItemStack> stackList = new ArrayList<>(); - stack = GT_OreDictUnificator.get( - OrePrefixes.gemExquisite, - material, - GT_OreDictUnificator.get(OrePrefixes.gem, material, 1L), - 1L); - if (stack != null && !mapOreDropUnlocalizedNameToOreMeta.containsKey(stack.getUnlocalizedName())) { - mapOreDropUnlocalizedNameToOreMeta.put(stack.getUnlocalizedName(), meta); - stackList.add(stack); - } - stack = GT_OreDictUnificator.get( - OrePrefixes.gemFlawless, - material, - GT_OreDictUnificator.get(OrePrefixes.gem, material, 1L), - 1L); - if (stack != null && !mapOreDropUnlocalizedNameToOreMeta.containsKey(stack.getUnlocalizedName())) { - mapOreDropUnlocalizedNameToOreMeta.put(stack.getUnlocalizedName(), meta); - stackList.add(stack); - } - stack = GT_OreDictUnificator.get(OrePrefixes.gem, material, 1L); - if (stack != null && !mapOreDropUnlocalizedNameToOreMeta.containsKey(stack.getUnlocalizedName())) { - mapOreDropUnlocalizedNameToOreMeta.put(stack.getUnlocalizedName(), meta); - stackList.add(stack); - } - stack = GT_OreDictUnificator.get( - OrePrefixes.gemFlawed, - material, - GT_OreDictUnificator.get(OrePrefixes.crushed, material, 1L), - 1L); - if (stack != null && !mapOreDropUnlocalizedNameToOreMeta.containsKey(stack.getUnlocalizedName())) { - mapOreDropUnlocalizedNameToOreMeta.put(stack.getUnlocalizedName(), meta); - stackList.add(stack); - } - stack = GT_OreDictUnificator.get(OrePrefixes.crushed, material, 1L); - if (stack != null && !mapOreDropUnlocalizedNameToOreMeta.containsKey(stack.getUnlocalizedName())) { - mapOreDropUnlocalizedNameToOreMeta.put(stack.getUnlocalizedName(), meta); - stackList.add(stack); - } - stack = GT_OreDictUnificator.get( - OrePrefixes.gemChipped, - material, - GT_OreDictUnificator.get(OrePrefixes.dustImpure, material, 1L), - 1L); - if (stack != null && !mapOreDropUnlocalizedNameToOreMeta.containsKey(stack.getUnlocalizedName())) { - mapOreDropUnlocalizedNameToOreMeta.put(stack.getUnlocalizedName(), meta); - stackList.add(stack); - } - stack = GT_OreDictUnificator.get(OrePrefixes.dustImpure, material, 1L); - if (stack != null && !mapOreDropUnlocalizedNameToOreMeta.containsKey(stack.getUnlocalizedName())) { - mapOreDropUnlocalizedNameToOreMeta.put(stack.getUnlocalizedName(), meta); - stackList.add(stack); - } - oreSmallList.add(new ItemStack(GregTech_API.sBlockOres1, 1, meta + SMALL_ORE_BASE_META)); - mapOreMetaToOreDrops.put(meta, stackList); - } + Map<String, SmallOreBuilder> smallOreDefMap = new HashMap<>(); + + for (SmallOres ore : SmallOres.values()) { + smallOreDefMap.put(ore.smallOreBuilder.smallOreName, ore.smallOreBuilder); + } + + for (GT_Worldgen worldGen : GregTech_API.sWorldgenList) { + if (!worldGen.mWorldGenName.startsWith("ore.small.") + || !(worldGen instanceof GT_Worldgen_GT_Ore_SmallPieces)) { + continue; + } + + GT_Worldgen_GT_Ore_SmallPieces worldGenSmallPieces = (GT_Worldgen_GT_Ore_SmallPieces) worldGen; + meta = worldGenSmallPieces.mMeta; + if (meta < 0) break; + material = GregTech_API.sGeneratedMaterials[meta]; + mapOreSmallWrapper.put( + worldGen.mWorldGenName, + new OreSmallWrapper(smallOreDefMap.get(worldGenSmallPieces.mWorldGenName))); + if (mapOreMetaToOreDrops.containsKey(meta)) { + continue; + } + + List<ItemStack> stackList = new ArrayList<>(); + stack = GT_OreDictUnificator + .get(OrePrefixes.gemExquisite, material, GT_OreDictUnificator.get(OrePrefixes.gem, material, 1L), 1L); + if (stack != null && !mapOreDropUnlocalizedNameToOreMeta.containsKey(stack.getUnlocalizedName())) { + mapOreDropUnlocalizedNameToOreMeta.put(stack.getUnlocalizedName(), meta); + stackList.add(stack); + } + stack = GT_OreDictUnificator + .get(OrePrefixes.gemFlawless, material, GT_OreDictUnificator.get(OrePrefixes.gem, material, 1L), 1L); + if (stack != null && !mapOreDropUnlocalizedNameToOreMeta.containsKey(stack.getUnlocalizedName())) { + mapOreDropUnlocalizedNameToOreMeta.put(stack.getUnlocalizedName(), meta); + stackList.add(stack); + } + stack = GT_OreDictUnificator.get(OrePrefixes.gem, material, 1L); + if (stack != null && !mapOreDropUnlocalizedNameToOreMeta.containsKey(stack.getUnlocalizedName())) { + mapOreDropUnlocalizedNameToOreMeta.put(stack.getUnlocalizedName(), meta); + stackList.add(stack); } + stack = GT_OreDictUnificator + .get(OrePrefixes.gemFlawed, material, GT_OreDictUnificator.get(OrePrefixes.crushed, material, 1L), 1L); + if (stack != null && !mapOreDropUnlocalizedNameToOreMeta.containsKey(stack.getUnlocalizedName())) { + mapOreDropUnlocalizedNameToOreMeta.put(stack.getUnlocalizedName(), meta); + stackList.add(stack); + } + stack = GT_OreDictUnificator.get(OrePrefixes.crushed, material, 1L); + if (stack != null && !mapOreDropUnlocalizedNameToOreMeta.containsKey(stack.getUnlocalizedName())) { + mapOreDropUnlocalizedNameToOreMeta.put(stack.getUnlocalizedName(), meta); + stackList.add(stack); + } + stack = GT_OreDictUnificator.get( + OrePrefixes.gemChipped, + material, + GT_OreDictUnificator.get(OrePrefixes.dustImpure, material, 1L), + 1L); + if (stack != null && !mapOreDropUnlocalizedNameToOreMeta.containsKey(stack.getUnlocalizedName())) { + mapOreDropUnlocalizedNameToOreMeta.put(stack.getUnlocalizedName(), meta); + stackList.add(stack); + } + stack = GT_OreDictUnificator.get(OrePrefixes.dustImpure, material, 1L); + if (stack != null && !mapOreDropUnlocalizedNameToOreMeta.containsKey(stack.getUnlocalizedName())) { + mapOreDropUnlocalizedNameToOreMeta.put(stack.getUnlocalizedName(), meta); + stackList.add(stack); + } + oreSmallList.add(new ItemStack(GregTech_API.sBlockOres1, 1, meta + SMALL_ORE_BASE_META)); + mapOreMetaToOreDrops.put(meta, stackList); + + } for (OreSmallWrapper oreSmallWrapper : mapOreSmallWrapper.values()) { - bufferedDims.put(oreSmallWrapper, GT5CFGHelper.GT5CFGSmallOres(oreSmallWrapper.oreGenName)); + bufferedDims.put(oreSmallWrapper, getDims(oreSmallWrapper)); } // --- 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); - } + for (String dim : dims.keySet()) { + SmallOreDimensionWrapper dimensionSmallOres = dimToSmallOreWrapper + .getOrDefault(dim, new SmallOreDimensionWrapper()); + dimensionSmallOres.internalDimOreList.add(veinInfo); + dimToSmallOreWrapper.put(dim, dimensionSmallOres); } // Calculate probabilities for each dim. @@ -169,6 +171,8 @@ public class GT5OreSmallHelper { public final String worldGenHeightRange; public final short amountPerChunk; + public final Map<String, Boolean> allowedDimWithOrigNames; + @SuppressWarnings("unused") public Materials getOreMaterial() { return oreMaterial; @@ -176,14 +180,14 @@ public class GT5OreSmallHelper { private final Materials oreMaterial; - 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; - ItemData oreData = GT_OreDictUnificator - .getAssociation(new ItemStack(GregTech_API.sBlockOres1, 1, worldGen.mMeta)); - this.oreMaterial = oreData != null ? oreData.mMaterial.mMaterial : null; + public OreSmallWrapper(SmallOreBuilder ore) { + this.oreGenName = ore.smallOreName; + this.oreMeta = (short) ore.ore.mMetaItemSubID; + this.worldGenHeightRange = ore.minY + "-" + ore.maxY; + this.amountPerChunk = (short) ore.amount; + this.oreMaterial = ore.ore; + + this.allowedDimWithOrigNames = ore.dimsEnabled; } public List<ItemStack> getMaterialDrops(int maximumIndex) { diff --git a/src/main/java/pers/gwyog/gtneioreplugin/util/Oremix.java b/src/main/java/pers/gwyog/gtneioreplugin/util/Oremix.java index 401cadc09f..aba9497dbe 100644 --- a/src/main/java/pers/gwyog/gtneioreplugin/util/Oremix.java +++ b/src/main/java/pers/gwyog/gtneioreplugin/util/Oremix.java @@ -1,600 +1,121 @@ package pers.gwyog.gtneioreplugin.util; -import com.opencsv.bean.CsvBindByName; -import com.opencsv.bean.CsvCustomBindByName; +import static pers.gwyog.gtneioreplugin.util.DimensionHelper.DimNameDisplayed; -@SuppressWarnings("unused") -public class Oremix { +import java.util.Map; - @CsvCustomBindByName(column = "Moon", converter = XtoBool.class) - public boolean mo; +public class Oremix implements Comparable<Oremix> { - @CsvCustomBindByName(column = "End Asteroids", converter = XtoBool.class) - public boolean ea; + private String oreMixName; - @CsvCustomBindByName(column = "AstroidBelt", converter = XtoBool.class) - public boolean as; - - @CsvCustomBindByName(column = "Barnard C", converter = XtoBool.class) - public boolean bc; - - @CsvCustomBindByName(column = "Barnard E", converter = XtoBool.class) - public boolean be; - - @CsvCustomBindByName(column = "Barnard F", converter = XtoBool.class) - public boolean bf; - - @CsvCustomBindByName(column = "Mars", converter = XtoBool.class) - public boolean ma; - - @CsvCustomBindByName(column = "Callisto", converter = XtoBool.class) - public boolean ca; - - @CsvCustomBindByName(column = "Centauri Bb", converter = XtoBool.class) - public boolean cb; - - @CsvCustomBindByName(column = "Ceres", converter = XtoBool.class) - public boolean ce; - - @CsvCustomBindByName(column = "Twilight Forest", converter = XtoBool.class) - public boolean tf; - - @CsvCustomBindByName(column = "Deep Dark", converter = XtoBool.class) - public boolean dd; - - @CsvCustomBindByName(column = "Phobos", converter = XtoBool.class) - public boolean ph; - - @CsvCustomBindByName(column = "Deimos", converter = XtoBool.class) - public boolean de; - - @CsvCustomBindByName(column = "Europa", converter = XtoBool.class) - public boolean eu; - - @CsvCustomBindByName(column = "Ganymede", converter = XtoBool.class) - public boolean ga; - - @CsvCustomBindByName(column = "Io", converter = XtoBool.class) - public boolean io; - - @CsvCustomBindByName(column = "Venus", converter = XtoBool.class) - public boolean ve; - - @CsvCustomBindByName(column = "Mercury", converter = XtoBool.class) - public boolean me; - - @CsvCustomBindByName(column = "Enceladus", converter = XtoBool.class) - public boolean en; - - @CsvCustomBindByName(column = "Titan", converter = XtoBool.class) - public boolean ti; - - @CsvCustomBindByName(column = "Miranda", converter = XtoBool.class) - public boolean mi; - - @CsvCustomBindByName(column = "Oberon", converter = XtoBool.class) - public boolean ob; - - @CsvCustomBindByName(column = "Triton", converter = XtoBool.class) - public boolean tr; - - @CsvCustomBindByName(column = "Proteus", converter = XtoBool.class) - public boolean pr; - - @CsvCustomBindByName(column = "Pluto", converter = XtoBool.class) - public boolean pl; - - @CsvCustomBindByName(column = "Kuiper Belt", converter = XtoBool.class) - public boolean kb; - - @CsvCustomBindByName(column = "Haumea", converter = XtoBool.class) - public boolean ha; - - @CsvCustomBindByName(column = "Makemake", converter = XtoBool.class) - public boolean make; - - @CsvCustomBindByName(column = "Vega B", converter = XtoBool.class) - public boolean vb; - - @CsvCustomBindByName(column = "T Ceti E", converter = XtoBool.class) - public boolean tcetie; - - @CsvCustomBindByName(column = "Anubis", required = false, converter = XtoBool.class) - public boolean an; - - @CsvCustomBindByName(column = "Horus", required = false, converter = XtoBool.class) - public boolean ho; - - @CsvCustomBindByName(column = "Neper", required = false, converter = XtoBool.class) - public boolean np; - - @CsvCustomBindByName(column = "Maahes", required = false, converter = XtoBool.class) - public boolean mh; - - @CsvCustomBindByName(column = "Mehen Belt", required = false, converter = XtoBool.class) - public boolean mb; - - @CsvCustomBindByName(column = "Seth", required = false, converter = XtoBool.class) - public boolean se; - - @CsvCustomBindByName(column = "Ore Name", required = true, converter = Veinrenamer.class) - private String oreName; - - @CsvBindByName(column = "Primary") private String primary = ""; - @CsvBindByName(column = "Secondary") private String secondary = ""; - @CsvBindByName(column = "Inbetween") private String inbetween = ""; - @CsvBindByName(column = "Around") - private String around = ""; - - @CsvBindByName(column = "ID ") - private String mix = ""; + private String sporadic = ""; - @CsvBindByName(column = "Tier") - private String tier = ""; + private String oreMixIDs = ""; - @CsvBindByName(column = "Height") private String height = ""; - @CsvBindByName(column = "Density") private int density; - @CsvBindByName(column = "Size") private int size; - @CsvBindByName(column = "Weight") private int weight; - @CsvCustomBindByName(column = "Overworld", converter = XtoBool.class) - private boolean overworld; - - @CsvCustomBindByName(column = "Nether", converter = XtoBool.class) - private boolean nether; - - @CsvCustomBindByName(column = "End", converter = XtoBool.class) - private boolean end; - - private int miny, maxy; - - public Oremix() {} - - public boolean isMo() { - return mo; - } - - public void setMo(boolean mo) { - this.mo = mo; - } - - public boolean isEa() { - return ea; - } - - public void setEa(boolean ea) { - this.ea = ea; - } - - public boolean isAs() { - return as; - } - - public void setAs(boolean as) { - this.as = as; - } - - public boolean isBc() { - return bc; - } - - public void setBc(boolean bc) { - this.bc = bc; - } - - public boolean isBe() { - return be; - } - - public void setBe(boolean be) { - this.be = be; - } - - public boolean isBf() { - return bf; - } - - public void setBf(boolean bf) { - this.bf = bf; - } - - public boolean isMa() { - return ma; - } - - public void setMa(boolean ma) { - this.ma = ma; - } - - public boolean isCa() { - return ca; - } - - public void setCa(boolean ca) { - this.ca = ca; - } - - public boolean isCb() { - return cb; - } - - public void setCb(boolean cb) { - this.cb = cb; - } - - public boolean isCe() { - return ce; - } - - public void setCe(boolean ce) { - this.ce = ce; - } - - public boolean isTf() { - return tf; - } - - public void setTf(boolean tf) { - this.tf = tf; - } - - public boolean isDd() { - return dd; - } - - public void setDd(boolean dd) { - this.dd = dd; - } - - public boolean isPh() { - return ph; - } - - public void setPh(boolean ph) { - this.ph = ph; - } - - public boolean isDe() { - return de; - } - - public void setDe(boolean de) { - this.de = de; - } - - public boolean isEu() { - return eu; - } - - public void setEu(boolean eu) { - this.eu = eu; - } - - public boolean isGa() { - return ga; - } - - public void setGa(boolean ga) { - this.ga = ga; - } - - public boolean isIo() { - return io; - } - - public void setIo(boolean io) { - this.io = io; - } - - public boolean isVe() { - return ve; - } - - public void setVe(boolean ve) { - this.ve = ve; - } - - public boolean isMe() { - return me; - } - - public void setMe(boolean me) { - this.me = me; - } - - public boolean isEn() { - return en; - } - - public void setEn(boolean en) { - this.en = en; - } - - public boolean isTi() { - return ti; - } - - public void setTi(boolean ti) { - this.ti = ti; - } - - public boolean isMi() { - return mi; - } - - public void setMi(boolean mi) { - this.mi = mi; - } - - public boolean isOb() { - return ob; - } - - public void setOb(boolean ob) { - this.ob = ob; - } - - public boolean isTr() { - return tr; - } - - public void setTr(boolean tr) { - this.tr = tr; - } - - public boolean isPr() { - return pr; - } - - public void setPr(boolean pr) { - this.pr = pr; - } - - public boolean isPl() { - return pl; - } - - public void setPl(boolean pl) { - this.pl = pl; - } - - public boolean isKb() { - return kb; - } - - public void setKb(boolean kb) { - this.kb = kb; - } - - public boolean isHa() { - return ha; - } + private static final int sizeData = 10; // hors dims - public void setHa(boolean ha) { - this.ha = ha; - } + private Map<String, Boolean> dimensions; - public boolean isMake() { - return make; + public void setDims(Map<String, Boolean> dims) { + this.dimensions = dims; } - public void setMake(boolean make) { - this.make = make; + public String getOreMixName() { + return this.oreMixName; } - public boolean isVb() { - return vb; - } - - public void setVb(boolean vb) { - this.vb = vb; - } - - public boolean isTcetie() { - return tcetie; - } - - public void setTcetie(boolean tcetie) { - this.tcetie = tcetie; - } - - public boolean isAn() { - return an; - } - - public void setAn(boolean an) { - this.an = an; - } - - public boolean isHo() { - return ho; - } - - public void setHo(boolean ho) { - this.ho = ho; - } - - public boolean isNp() { - return np; - } - - public void setNp(boolean np) { - this.np = np; - } - - public boolean isMh() { - return mh; - } - - public void setMh(boolean mh) { - this.mh = mh; - } - - public boolean isMb() { - return mb; - } - - public void setMb(boolean mb) { - this.mb = mb; - } - - public boolean isSe() { - return se; - } - - public void setSe(boolean se) { - this.se = se; - } - - public String getOreName() { - return this.oreName; - } - - public void setOreName(String s) { - this.oreName = s; - } - - public String getPrimary() { - return this.primary; + public void setOreMixName(String s) { + this.oreMixName = s; } public void setPrimary(String s) { this.primary = s; } - public String getSecondary() { - return this.secondary; - } - public void setSecondary(String s) { this.secondary = s; } - public String getInbetween() { - return this.inbetween; - } - public void setInbetween(String s) { this.inbetween = s; } - public String getAround() { - return this.around; - } - - public void setAround(String s) { - this.around = s; - } - - public String getMix() { - return this.mix; - } - - public void setMix(String s) { - this.mix = s; - } - - public String getTier() { - return this.tier; - } - - public void setTier(String s) { - this.tier = s; + public void setSporadic(String s) { + this.sporadic = s; } - public String getHeight() { - return this.height; + public void setOreMixIDs(String s) { + this.oreMixIDs = s; } public void setHeight(String s) { this.height = s; } - public int getDensity() { - return this.density; - } - public void setDensity(int i) { this.density = i; } - public int getSize() { - return this.size; - } - public void setSize(int i) { this.size = i; } - public int getWeight() { - return this.weight; - } - public void setWeight(int i) { this.weight = i; } - public int getMinY() { - calculateminmax(); - return this.miny; - } - - public void setMinY(int i) { - this.miny = i; - } - - public int getMaxY() { - calculateminmax(); - return this.maxy; - } - - public void setMaxY(int i) { - this.maxy = i; - } - - public boolean getOverworld() { - return this.overworld; - } - - public void setOverworld(boolean s) { - this.overworld = s; - } - - public boolean getNether() { - return this.nether; - } - - public void setNether(boolean s) { - this.nether = s; - } - - public boolean getEnd() { - return this.end; - } - - public void setEnd(boolean s) { - this.end = s; - } - - private void calculateminmax() { - this.miny = Integer.parseInt(this.height.split("-")[0]); - this.maxy = Integer.parseInt(this.height.split("-")[1]); - } - - public String getHeightcalced() { - return this.miny + "-" + this.maxy; + @Override + public int compareTo(Oremix ore) { + return ore.oreMixName.compareTo(ore.oreMixName); + } + + public static String getCsvHeader() { + String[] headers = new String[sizeData + DimNameDisplayed.length]; + headers[0] = "Ore Mix Name"; + headers[1] = "Primary Ore"; + headers[2] = "Secondary Ore"; + headers[3] = "InBetween Ore"; + headers[4] = "Sporadic Ore"; + headers[5] = "Ore Meta IDs"; + headers[6] = "Height"; + headers[7] = "Density"; + headers[8] = "Size"; + headers[9] = "Weight"; + for (int i = 0; i < DimNameDisplayed.length; i++) { + headers[sizeData + i] = DimensionHelper.getFullName(DimNameDisplayed[i]); + } + return String.join(",", headers); + } + + public String getCsvEntry() { + String[] values = new String[sizeData + DimNameDisplayed.length]; + values[0] = oreMixName; + values[1] = primary; + values[2] = secondary; + values[3] = inbetween; + values[4] = sporadic; + values[5] = oreMixIDs; + values[6] = height; + values[7] = Integer.toString(density); + values[8] = Integer.toString(size); + values[9] = Integer.toString(weight); + for (int i = 0; i < DimNameDisplayed.length; i++) { + values[sizeData + i] = Boolean.toString(dimensions.getOrDefault(DimNameDisplayed[i], false)); + } + return String.join(",", values); } } diff --git a/src/main/java/pers/gwyog/gtneioreplugin/util/SmallOre.java b/src/main/java/pers/gwyog/gtneioreplugin/util/SmallOre.java new file mode 100644 index 0000000000..75a691ad1c --- /dev/null +++ b/src/main/java/pers/gwyog/gtneioreplugin/util/SmallOre.java @@ -0,0 +1,82 @@ +package pers.gwyog.gtneioreplugin.util; + +import static pers.gwyog.gtneioreplugin.util.DimensionHelper.DimNameDisplayed; + +import java.util.Map; + +@SuppressWarnings("unused") +public class SmallOre implements Comparable<SmallOre> { + + private String oreName; + private int oreMeta; + private int amount; + private String height = ""; + private static final int sizeData = 4; // hors dims + + private Map<String, Boolean> dimensions; + + public void setDims(Map<String, Boolean> dims) { + this.dimensions = dims; + } + + public String getOreName() { + return this.oreName; + } + + public void setOreName(String s) { + this.oreName = s; + } + + public int getOreMeta() { + return this.oreMeta; + } + + public void setOreMeta(int meta) { + this.oreMeta = meta; + } + + public String getHeight() { + return this.height; + } + + public void setHeight(String s) { + this.height = s; + } + + public void setAmount(int i) { + this.amount = i; + } + + public int getAmount() { + return this.amount; + } + + public static String getCsvHeader() { + String[] headers = new String[sizeData + DimNameDisplayed.length]; + headers[0] = "Ore Name"; + headers[1] = "Block Meta"; + headers[2] = "Height"; + headers[3] = "Amount Per Chunk"; + for (int i = 0; i < DimNameDisplayed.length; i++) { + headers[sizeData + i] = DimensionHelper.getFullName(DimNameDisplayed[i]); + } + return String.join(",", headers); + } + + public String getCsvEntry() { + String[] values = new String[sizeData + DimNameDisplayed.length]; + values[0] = oreName; + values[1] = Integer.toString(oreMeta); + values[2] = getHeight(); + values[3] = Integer.toString(amount); + for (int i = 0; i < DimNameDisplayed.length; i++) { + values[sizeData + i] = Boolean.toString(dimensions.getOrDefault(DimNameDisplayed[i], false)); + } + return String.join(",", values); + } + + @Override + public int compareTo(SmallOre other) { + return oreName.compareTo(other.oreName); + } +} diff --git a/src/main/java/pers/gwyog/gtneioreplugin/util/Veinrenamer.java b/src/main/java/pers/gwyog/gtneioreplugin/util/Veinrenamer.java deleted file mode 100644 index 346573e2a9..0000000000 --- a/src/main/java/pers/gwyog/gtneioreplugin/util/Veinrenamer.java +++ /dev/null @@ -1,23 +0,0 @@ -package pers.gwyog.gtneioreplugin.util; - -import com.opencsv.bean.AbstractBeanField; - -public class Veinrenamer<T> extends AbstractBeanField<T> { - - @Override - protected Object convert(String value) { - String ret; - CharSequence s = "/"; - - if (value.contains(s)) { - ret = value.split("/")[1]; - ret = ret.replaceAll("&", ""); - ret = ret.replaceAll(" ", ""); - ret = ret.replaceAll("\\.", ""); - ret = ret.toLowerCase(); - } else ret = value; - ret = ret.replaceAll(" ", ""); - ret = ret.toLowerCase(); - return ret; - } -} diff --git a/src/main/java/pers/gwyog/gtneioreplugin/util/XtoBool.java b/src/main/java/pers/gwyog/gtneioreplugin/util/XtoBool.java deleted file mode 100644 index 4c15cdecb6..0000000000 --- a/src/main/java/pers/gwyog/gtneioreplugin/util/XtoBool.java +++ /dev/null @@ -1,34 +0,0 @@ -package pers.gwyog.gtneioreplugin.util; - -import java.util.ResourceBundle; - -import org.apache.commons.beanutils.ConversionException; -import org.apache.commons.beanutils.Converter; -import org.apache.commons.beanutils.converters.BooleanConverter; - -import com.opencsv.bean.AbstractBeanField; -import com.opencsv.exceptions.CsvDataTypeMismatchException; - -public class XtoBool<T> extends AbstractBeanField<T> { - - @Override - protected Object convert(String value) throws CsvDataTypeMismatchException { - if (value.isEmpty()) { - return null; - } - String[] trueStrings = { "x", "X" }; - String[] falseStrings = { "" }; - Converter bc = new BooleanConverter(trueStrings, falseStrings); - try { - return bc.convert(Boolean.class, value.trim()); - } catch (ConversionException e) { - CsvDataTypeMismatchException csve = new CsvDataTypeMismatchException( - value, - field.getType(), - ResourceBundle.getBundle("convertGermanToBoolean", errorLocale) - .getString("input.not.boolean")); - csve.initCause(e); - throw csve; - } - } -} |