diff options
Diffstat (limited to 'src/main/java/bloodasp/galacticgreg/dynconfig')
| -rw-r--r-- | src/main/java/bloodasp/galacticgreg/dynconfig/DynamicDimensionConfig.java | 130 | ||||
| -rw-r--r-- | src/main/java/bloodasp/galacticgreg/dynconfig/DynamicOreMixWorldConfig.java | 93 |
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; - } - } -} |
