aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/bloodasp/galacticgreg/dynconfig
diff options
context:
space:
mode:
authorboubou19 <miisterunknown@gmail.com>2024-08-27 20:50:30 +0200
committerGitHub <noreply@github.com>2024-08-27 18:50:30 +0000
commit4908d5967c3dfeff5616c65144e701859b9e30a2 (patch)
tree3e58a4b8ebd8b70745e81c4c71c765980e4ec4f4 /src/main/java/bloodasp/galacticgreg/dynconfig
parent3c574facfb224029c0b69865e281023da6170ce0 (diff)
downloadGT5-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/bloodasp/galacticgreg/dynconfig')
-rw-r--r--src/main/java/bloodasp/galacticgreg/dynconfig/DynamicDimensionConfig.java130
-rw-r--r--src/main/java/bloodasp/galacticgreg/dynconfig/DynamicOreMixWorldConfig.java93
2 files changed, 61 insertions, 162 deletions
diff --git a/src/main/java/bloodasp/galacticgreg/dynconfig/DynamicDimensionConfig.java b/src/main/java/bloodasp/galacticgreg/dynconfig/DynamicDimensionConfig.java
index 5c419c7c13..0c57c961af 100644
--- a/src/main/java/bloodasp/galacticgreg/dynconfig/DynamicDimensionConfig.java
+++ b/src/main/java/bloodasp/galacticgreg/dynconfig/DynamicDimensionConfig.java
@@ -9,14 +9,9 @@ import bloodasp.galacticgreg.GalacticGreg;
import bloodasp.galacticgreg.api.Enums.DimensionType;
import bloodasp.galacticgreg.api.ModContainer;
import bloodasp.galacticgreg.api.ModDimensionDef;
+import bloodasp.galacticgreg.api.enums.properties.Asteroids;
import bloodasp.galacticgreg.registry.GalacticGregRegistry;
-import gregtech.api.GregTech_API;
-/**
- * This dynamic config is different to the OreMix one. This is used/bound to the ModDimensionDef, and the
- * OreMixWorldConfig is bound to the veins. Don't get confused!
- *
- */
public class DynamicDimensionConfig {
public static class AsteroidConfig {
@@ -29,8 +24,6 @@ public class DynamicDimensionConfig {
public int SpecialBlockChance;
public int SmallOreChance;
public boolean ObeyHeightLimits;
- public int OreGenMaxY;
- public int FloatingAsteroidMinY;
public boolean HiddenOres;
public int LootChestChance;
public int LootChestTable;
@@ -40,14 +33,6 @@ public class DynamicDimensionConfig {
private static Map<String, AsteroidConfig> _mDynamicAsteroidMap = new HashMap<>();
- private static String getConfigKeyName(ModContainer pMC, ModDimensionDef pMDD) {
- return String.format("galacticgreg.asteroids.%s.%s", pMC.getModName(), pMDD.getDimensionName());
- }
-
- private static String getConfigKeyName(ModContainer pMC, ModDimensionDef pMDD, String pSubCat) {
- return String.format("%s.%s", getConfigKeyName(pMC, pMDD), pSubCat);
- }
-
public static AsteroidConfig getAsteroidConfig(ModDimensionDef pDimDef) {
return _mDynamicAsteroidMap.getOrDefault(pDimDef.getDimIdentifier(), null);
}
@@ -59,62 +44,69 @@ public class DynamicDimensionConfig {
for (ModDimensionDef mdd : mc.getDimensionList()) {
DimensionType dt = mdd.getDimensionType();
- if (dt == DimensionType.Asteroid || dt == DimensionType.AsteroidAndPlanet) {
- String tDimIdentifier = mdd.getDimIdentifier();
- if (_mDynamicAsteroidMap.containsKey(tDimIdentifier)) GalacticGreg.Logger.warn(
+ if (dt != DimensionType.Asteroid) {
+ continue;
+ }
+ String tDimIdentifier = mdd.getDimIdentifier();
+ if (_mDynamicAsteroidMap.containsKey(tDimIdentifier)) {
+ GalacticGreg.Logger.warn(
"Found 2 Dimensions with the same Identifier! This should never happen, and you should report this to me. Identifier in question: %s",
tDimIdentifier);
- else {
- AsteroidConfig aConf = new AsteroidConfig();
- aConf.MinSize = GregTech_API.sWorldgenFile.get(getConfigKeyName(mc, mdd), "SizeMin", 5);
- aConf.MaxSize = GregTech_API.sWorldgenFile.get(getConfigKeyName(mc, mdd), "SizeMax", 15);
- aConf.Probability = GregTech_API.sWorldgenFile
- .get(getConfigKeyName(mc, mdd), "Probability", 200);
- aConf.SpecialBlockChance = GregTech_API.sWorldgenFile
- .get(getConfigKeyName(mc, mdd), "SpecialBlockChance", 5);
-
- aConf.OreChance = GregTech_API.sWorldgenFile
- .get(getConfigKeyName(mc, mdd, "orespawn"), "BaseOreChance", 5);
- aConf.OrePrimaryOffset = GregTech_API.sWorldgenFile
- .get(getConfigKeyName(mc, mdd, "orespawn"), "PrimaryToRareOreOffset", 5);
- aConf.SmallOreChance = GregTech_API.sWorldgenFile
- .get(getConfigKeyName(mc, mdd, "orespawn"), "SmallOreChance", 10);
- aConf.ObeyHeightLimits = GregTech_API.sWorldgenFile
- .get(getConfigKeyName(mc, mdd, "orespawn"), "ObeyHeightLimits", false);
- aConf.HiddenOres = GregTech_API.sWorldgenFile
- .get(getConfigKeyName(mc, mdd, "orespawn"), "OresOnlyInsideAsteroids", false);
-
- if (GalacticGreg.GalacticConfig.LootChestsEnabled) {
- aConf.LootChestChance = GregTech_API.sWorldgenFile
- .get(getConfigKeyName(mc, mdd, "loot"), "LootChestChance", 1);
- aConf.LootChestTable = GregTech_API.sWorldgenFile
- .get(getConfigKeyName(mc, mdd, "loot"), "LootChestTable", 3);
- aConf.NumLootItems = GregTech_API.sWorldgenFile
- .get(getConfigKeyName(mc, mdd, "loot"), "LootChestItemCount", 10);
- aConf.RandomizeNumLootItems = GregTech_API.sWorldgenFile
- .get(getConfigKeyName(mc, mdd, "loot"), "RandomizeLootItemCount", true);
- } else {
- aConf.LootChestChance = 0;
- aConf.LootChestTable = 1;
- aConf.NumLootItems = 0;
- aConf.RandomizeNumLootItems = false;
- }
-
- if (dt == DimensionType.AsteroidAndPlanet) {
- int tDefaultMaxY = mdd.getPreConfiguratedGroundOreMaxY();
- int tDefaultMinY = mdd.getPreConfiguratedFloatingAsteroidMinY();
- aConf.OreGenMaxY = GregTech_API.sWorldgenFile
- .get(getConfigKeyName(mc, mdd, "floating"), "OreGenMaxY", tDefaultMaxY);
- aConf.FloatingAsteroidMinY = GregTech_API.sWorldgenFile
- .get(getConfigKeyName(mc, mdd, "floating"), "FloatingAsteroidMinY", tDefaultMinY);
- }
-
- if (aConf.MaxSize > 50) GalacticGreg.Logger.warn(
- "Asteroid-MaxSize for dimID [%s] is larger than 50. This might cause memory-problems, as the maximum asteroid size will be larger than 50*50*50 blocks",
- tDimIdentifier);
- _mDynamicAsteroidMap.put(tDimIdentifier, aConf);
+ continue;
+ }
+
+ Asteroids AsteroidProperties = null;
+ for (Asteroids asteroidsConfig : Asteroids.values()) {
+ if (!asteroidsConfig.modContainers.modContainer.getModName()
+ .equals(mc.getModName())) {
+ continue;
}
+ if (!asteroidsConfig.dimensionDef.modDimensionDef.getDimensionName()
+ .equals(mdd.getDimensionName())) {
+ continue;
+ }
+ AsteroidProperties = asteroidsConfig;
+ break;
+ }
+ if (AsteroidProperties == null) {
+ GalacticGreg.Logger.error(
+ "Something went wrong! no properties are existing for Asteroid dim: "
+ + mdd.getDimensionName()
+ + " from mod container "
+ + mc.getModName());
+ continue;
+ }
+
+ AsteroidConfig aConf = new AsteroidConfig();
+
+ aConf.MinSize = AsteroidProperties.asteroidPropertyBuilder.sizeMin;
+ aConf.MaxSize = AsteroidProperties.asteroidPropertyBuilder.sizeMax;
+ aConf.Probability = AsteroidProperties.asteroidPropertyBuilder.probability;
+ aConf.SpecialBlockChance = AsteroidProperties.asteroidPropertyBuilder.specialBlockChance;
+
+ aConf.OreChance = AsteroidProperties.asteroidPropertyBuilder.oreSpawn.baseOreChance;
+ aConf.OrePrimaryOffset = AsteroidProperties.asteroidPropertyBuilder.oreSpawn.primaryToRareOreOffset;
+ aConf.SmallOreChance = AsteroidProperties.asteroidPropertyBuilder.oreSpawn.smallOreChance;
+ aConf.ObeyHeightLimits = AsteroidProperties.asteroidPropertyBuilder.oreSpawn.obeyHeighLimits;
+ aConf.HiddenOres = AsteroidProperties.asteroidPropertyBuilder.oreSpawn.oresOnlyInsideAsteroids;
+
+ if (GalacticGreg.GalacticConfig.LootChestsEnabled) {
+ aConf.LootChestChance = AsteroidProperties.asteroidPropertyBuilder.loot.lootChestChance;
+ aConf.LootChestTable = AsteroidProperties.asteroidPropertyBuilder.loot.lootChestTable;
+ aConf.NumLootItems = AsteroidProperties.asteroidPropertyBuilder.loot.lootChestItemCount;
+ aConf.RandomizeNumLootItems = AsteroidProperties.asteroidPropertyBuilder.loot.randomizeLootItemCount;
+ } else {
+ aConf.LootChestChance = 0;
+ aConf.LootChestTable = 1;
+ aConf.NumLootItems = 0;
+ aConf.RandomizeNumLootItems = false;
}
+
+ if (aConf.MaxSize > 50) GalacticGreg.Logger.warn(
+ "Asteroid-MaxSize for dimID [%s] is larger than 50. This might cause memory-problems, as the maximum asteroid size will be larger than 50*50*50 blocks",
+ tDimIdentifier);
+ _mDynamicAsteroidMap.put(tDimIdentifier, aConf);
+
}
}
return true;
@@ -126,7 +118,7 @@ public class DynamicDimensionConfig {
/**
* Convert numbers to actual loot-table entries
- *
+ *
* @param pACfg
* @return
*/
diff --git a/src/main/java/bloodasp/galacticgreg/dynconfig/DynamicOreMixWorldConfig.java b/src/main/java/bloodasp/galacticgreg/dynconfig/DynamicOreMixWorldConfig.java
deleted file mode 100644
index 862bfd4e4e..0000000000
--- a/src/main/java/bloodasp/galacticgreg/dynconfig/DynamicOreMixWorldConfig.java
+++ /dev/null
@@ -1,93 +0,0 @@
-package bloodasp.galacticgreg.dynconfig;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import bloodasp.galacticgreg.GalacticGreg;
-import bloodasp.galacticgreg.api.ModContainer;
-import bloodasp.galacticgreg.api.ModDimensionDef;
-import bloodasp.galacticgreg.registry.GalacticGregRegistry;
-import gregtech.api.GregTech_API;
-
-/**
- * This is the dynamic config class for every ore-vein that will generate config values according to the dimension and
- * mod name
- */
-public class DynamicOreMixWorldConfig {
-
- private String _mWorldGenName;
-
- public Map<String, Boolean> get_mDynWorldConfigMap() {
- return new HashMap<>(_mDynWorldConfigMap != null ? _mDynWorldConfigMap : new HashMap<>());
- }
-
- private Map<String, Boolean> _mDynWorldConfigMap;
- private final String _mConfigName;
-
- private String getConfigKeyName(ModContainer pMC, ModDimensionDef pMDD) {
- return getConfigKeyName(pMC, pMDD, "");
- }
-
- private String getConfigKeyName(ModContainer pMC, ModDimensionDef pMDD, String pAdditionalName) {
- String tRet = String.format("%s_%s", pMC.getModName(), pMDD.getDimensionName());
- if (pAdditionalName.length() > 1) tRet = String.format("%s_%s", tRet, pAdditionalName);
-
- return tRet;
- }
-
- /**
- * Init a new dynamic config for a given world-generator
- *
- * @param pWorldGenName
- */
- public DynamicOreMixWorldConfig(String pWorldGenName) {
- _mWorldGenName = pWorldGenName;
- _mDynWorldConfigMap = new HashMap<>();
- _mConfigName = String.format("worldgen.%s", _mWorldGenName);
- }
-
- public DynamicOreMixWorldConfig(String pWorldGenName, boolean bw) {
- _mWorldGenName = pWorldGenName;
- _mDynWorldConfigMap = new HashMap<>();
- _mConfigName = String.format("worldgen.gagregbartworks.%s", _mWorldGenName);
- }
-
- /**
- * Check if this OreGen is enabled for a given Dimension, represented by pMDD
- *
- * @param pMDD The dimension in question
- * @return true or false if *this* oregen is enabled in the worldgen config
- */
- public boolean isEnabledInDim(ModDimensionDef pMDD) {
- String tDimIdentifier = pMDD.getDimIdentifier();
- return _mDynWorldConfigMap.getOrDefault(tDimIdentifier, false);
- }
-
- /**
- * Initializes the dynamic oregen config. This must be called *AFTER* InitModContainers() has done its work
- *
- * @return true or false if the config init was successfull
- */
- public boolean InitDynamicConfig() {
- try {
- for (ModContainer mc : GalacticGregRegistry.getModContainers()) {
- if (!mc.getEnabled()) continue;
-
- for (ModDimensionDef mdd : mc.getDimensionList()) {
- String tDimIdentifier = mdd.getDimIdentifier();
- if (_mDynWorldConfigMap.containsKey(tDimIdentifier)) GalacticGreg.Logger.error(
- "Found 2 Dimensions with the same Identifier: %s Dimension will not generate Ores",
- tDimIdentifier);
- else {
- boolean tFlag = GregTech_API.sWorldgenFile.get(_mConfigName, getConfigKeyName(mc, mdd), false);
- _mDynWorldConfigMap.put(tDimIdentifier, tFlag);
- }
- }
- }
- return true;
- } catch (Exception e) {
- e.printStackTrace();
- return false;
- }
- }
-}