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/bloodasp | |
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/bloodasp')
18 files changed, 836 insertions, 1142 deletions
diff --git a/src/main/java/bloodasp/galacticgreg/GT_Worldgen_GT_Ore_Layer_Space.java b/src/main/java/bloodasp/galacticgreg/GT_Worldgen_GT_Ore_Layer_Space.java index fa994b939d..9dc8d2c070 100644 --- a/src/main/java/bloodasp/galacticgreg/GT_Worldgen_GT_Ore_Layer_Space.java +++ b/src/main/java/bloodasp/galacticgreg/GT_Worldgen_GT_Ore_Layer_Space.java @@ -13,15 +13,13 @@ import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraft.world.chunk.IChunkProvider; +import bloodasp.galacticgreg.api.ModContainer; import bloodasp.galacticgreg.api.ModDimensionDef; import bloodasp.galacticgreg.auxiliary.GTOreGroup; -import bloodasp.galacticgreg.bartworks.BW_Worldgen_Ore_Layer_Space; -import bloodasp.galacticgreg.dynconfig.DynamicOreMixWorldConfig; import bloodasp.galacticgreg.registry.GalacticGregRegistry; -import gregtech.api.GregTech_API; -import gregtech.api.enums.Materials; import gregtech.api.util.GT_Log; import gregtech.api.world.GT_Worldgen; +import gregtech.common.OreMixBuilder; public class GT_Worldgen_GT_Ore_Layer_Space extends GT_Worldgen { @@ -38,61 +36,40 @@ public class GT_Worldgen_GT_Ore_Layer_Space extends GT_Worldgen { private long mProfilingStart; private long mProfilingEnd; + private Map<String, Boolean> allowedDims; + + public GT_Worldgen_GT_Ore_Layer_Space(OreMixBuilder mix) { + super(mix.oreMixName, GalacticGreg.oreVeinWorldgenList, mix.enabledByDefault); + + mMinY = (short) mix.minY; + mMaxY = (short) Math.max(this.mMinY + 5, mix.maxY); + mWeight = (short) mix.weight; + mDensity = (short) mix.density; + mSize = (short) Math.max(1, mix.size); + mPrimaryMeta = (short) mix.primary.mMetaItemSubID; + mSecondaryMeta = (short) mix.secondary.mMetaItemSubID; + mBetweenMeta = (short) mix.between.mMetaItemSubID; + mSporadicMeta = (short) mix.sporadic.mMetaItemSubID; + + allowedDims = new HashMap<>(); + + for (ModContainer mc : GalacticGregRegistry.getModContainers()) { + if (!mc.getEnabled()) continue; + + for (ModDimensionDef mdd : mc.getDimensionList()) { + String tDimIdentifier = mdd.getDimIdentifier(); + if (allowedDims.containsKey(tDimIdentifier)) GalacticGreg.Logger.error( + "Found 2 Dimensions with the same Identifier: %s Dimension will not generate Ores", + tDimIdentifier); + else { + boolean tFlag = mix.dimsEnabled.getOrDefault(mdd.getDimensionName(), false); + allowedDims.put(tDimIdentifier, tFlag); + } + } + } - private DynamicOreMixWorldConfig _mDynWorldConfig; - - public GT_Worldgen_GT_Ore_Layer_Space(String pName, boolean pDefault, int pMinY, int pMaxY, int pWeight, - int pDensity, int pSize, Materials pPrimary, Materials pSecondary, Materials pBetween, Materials pSporadic) { - super(pName, GalacticGreg.oreVeinWorldgenList, pDefault); - mMinY = ((short) GregTech_API.sWorldgenFile.get("worldgen." + this.mWorldGenName, "MinHeight", pMinY)); - mMaxY = ((short) Math - .max(this.mMinY + 5, GregTech_API.sWorldgenFile.get("worldgen." + this.mWorldGenName, "MaxHeight", pMaxY))); - mWeight = ((short) GregTech_API.sWorldgenFile.get("worldgen." + this.mWorldGenName, "RandomWeight", pWeight)); - mDensity = ((short) GregTech_API.sWorldgenFile.get("worldgen." + this.mWorldGenName, "Density", pDensity)); - mSize = ((short) Math.max(1, GregTech_API.sWorldgenFile.get("worldgen." + this.mWorldGenName, "Size", pSize))); - mPrimaryMeta = ((short) GregTech_API.sWorldgenFile - .get("worldgen." + this.mWorldGenName, "OrePrimaryLayer", pPrimary.mMetaItemSubID)); - mSecondaryMeta = ((short) GregTech_API.sWorldgenFile - .get("worldgen." + this.mWorldGenName, "OreSecondaryLayer", pSecondary.mMetaItemSubID)); - mBetweenMeta = ((short) GregTech_API.sWorldgenFile - .get("worldgen." + this.mWorldGenName, "OreSporadiclyInbetween", pBetween.mMetaItemSubID)); - mSporadicMeta = ((short) GregTech_API.sWorldgenFile - .get("worldgen." + this.mWorldGenName, "OreSporaticlyAround", pSporadic.mMetaItemSubID)); - - _mDynWorldConfig = new DynamicOreMixWorldConfig(mWorldGenName); - _mDynWorldConfig.InitDynamicConfig(); - - GalacticGreg.Logger.trace("Initialized new OreLayer: %s", pName); - - if (mEnabled) GT_Worldgen_GT_Ore_Layer_Space.sWeight += this.mWeight; - - } - - public GT_Worldgen_GT_Ore_Layer_Space(String pName, boolean pDefault, int pMinY, int pMaxY, int pWeight, - int pDensity, int pSize, short pPrimary, short pSecondary, short pBetween, short pSporadic) { - super(pName, GalacticGreg.oreVeinWorldgenList, pDefault); - mMinY = ((short) GregTech_API.sWorldgenFile.get("worldgen." + this.mWorldGenName, "MinHeight", pMinY)); - mMaxY = ((short) Math - .max(this.mMinY + 5, GregTech_API.sWorldgenFile.get("worldgen." + this.mWorldGenName, "MaxHeight", pMaxY))); - mWeight = ((short) GregTech_API.sWorldgenFile.get("worldgen." + this.mWorldGenName, "RandomWeight", pWeight)); - mDensity = ((short) GregTech_API.sWorldgenFile.get("worldgen." + this.mWorldGenName, "Density", pDensity)); - mSize = ((short) Math.max(1, GregTech_API.sWorldgenFile.get("worldgen." + this.mWorldGenName, "Size", pSize))); - mPrimaryMeta = ((short) GregTech_API.sWorldgenFile - .get("worldgen." + this.mWorldGenName, "OrePrimaryLayer", pPrimary)); - mSecondaryMeta = ((short) GregTech_API.sWorldgenFile - .get("worldgen." + this.mWorldGenName, "OreSecondaryLayer", pSecondary)); - mBetweenMeta = ((short) GregTech_API.sWorldgenFile - .get("worldgen." + this.mWorldGenName, "OreSporadiclyInbetween", pBetween)); - mSporadicMeta = ((short) GregTech_API.sWorldgenFile - .get("worldgen." + this.mWorldGenName, "OreSporaticlyAround", pSporadic)); - - _mDynWorldConfig = new DynamicOreMixWorldConfig(mWorldGenName); - _mDynWorldConfig.InitDynamicConfig(); - - GalacticGreg.Logger.trace("Initialized new OreLayer: %s", pName); - + GalacticGreg.Logger.trace("Initialized new OreLayer: %s", mix.oreMixName); if (mEnabled) sWeight += this.mWeight; - } /** @@ -102,31 +79,7 @@ public class GT_Worldgen_GT_Ore_Layer_Space extends GT_Worldgen { * @return */ public boolean isEnabledForDim(ModDimensionDef pDimensionDef) { - return _mDynWorldConfig.isEnabledInDim(pDimensionDef); - } - - private static Map<String, Integer> _mBufferedVeinCountList = new HashMap<>(); - - /** - * Get the number of enabled OreMixes for given Dimension. This query is buffered and will only consume calculation - * time on the first run for each dimension - * - * @param pDimensionDef - * @return - */ - private static int getNumOremixedForDim(ModDimensionDef pDimensionDef) { - int tVal = 0; - if (_mBufferedVeinCountList.containsKey(pDimensionDef.getDimIdentifier())) - tVal = _mBufferedVeinCountList.get(pDimensionDef.getDimIdentifier()); - else { - for (GT_Worldgen tWorldGen : GalacticGreg.oreVeinWorldgenList) - if (tWorldGen instanceof GT_Worldgen_GT_Ore_Layer_Space - && ((GT_Worldgen_GT_Ore_Layer_Space) tWorldGen).isEnabledForDim(pDimensionDef)) tVal++; - - _mBufferedVeinCountList.put(pDimensionDef.getDimIdentifier(), tVal); - } - - return tVal; + return allowedDims.getOrDefault(pDimensionDef.getDimIdentifier(), false); } private static Map<String, List<String>> _mBufferedVeinList = new HashMap<>(); @@ -148,9 +101,6 @@ public class GT_Worldgen_GT_Ore_Layer_Space extends GT_Worldgen { if (tWorldGen instanceof GT_Worldgen_GT_Ore_Layer_Space && ((GT_Worldgen_GT_Ore_Layer_Space) tWorldGen).isEnabledForDim(pDimensionDef)) tReturn.add(tWorldGen.mWorldGenName); - else if (tWorldGen instanceof BW_Worldgen_Ore_Layer_Space - && ((BW_Worldgen_Ore_Layer_Space) tWorldGen).isEnabledForDim(pDimensionDef)) - tReturn.add(tWorldGen.mWorldGenName); _mBufferedVeinList.put(pDimensionDef.getDimIdentifier(), tReturn); } @@ -158,17 +108,6 @@ public class GT_Worldgen_GT_Ore_Layer_Space extends GT_Worldgen { return tReturn; } - private static short getMaxWeightForDim(ModDimensionDef pDimensionDef) { - short tVal = 0; - for (GT_Worldgen tWorldGen : GalacticGreg.oreVeinWorldgenList) - if (tWorldGen instanceof GT_Worldgen_GT_Ore_Layer_Space - && ((GT_Worldgen_GT_Ore_Layer_Space) tWorldGen).isEnabledForDim(pDimensionDef) - && tVal < ((GT_Worldgen_GT_Ore_Layer_Space) tWorldGen).mWeight) - tVal = ((GT_Worldgen_GT_Ore_Layer_Space) tWorldGen).mWeight; - - return tVal; - } - /** * Select a random ore-vein from the list * @@ -182,8 +121,6 @@ public class GT_Worldgen_GT_Ore_Layer_Space extends GT_Worldgen { short betweenMeta = 0; short sporadicMeta = 0; - // int tRangeSplit = getMaxWeightForDim(pDimensionDef) / 2; - if (pIgnoreWeight) { List<String> tEnabledVeins = getOreMixIDsForDim(pDimensionDef); int tRnd = pRandom.nextInt(tEnabledVeins.size()); @@ -249,7 +186,7 @@ public class GT_Worldgen_GT_Ore_Layer_Space extends GT_Worldgen { return false; } - if (!_mDynWorldConfig.isEnabledInDim(tMDD)) { + if (!isEnabledForDim(tMDD)) { GalacticGreg.Logger .trace("OreGen for %s is disallowed in dimension %s, skipping", mWorldGenName, tMDD.getDimensionName()); return false; diff --git a/src/main/java/bloodasp/galacticgreg/GT_Worldgen_GT_Ore_SmallPieces_Space.java b/src/main/java/bloodasp/galacticgreg/GT_Worldgen_GT_Ore_SmallPieces_Space.java index 11e264b4fb..f5def8e0fd 100644 --- a/src/main/java/bloodasp/galacticgreg/GT_Worldgen_GT_Ore_SmallPieces_Space.java +++ b/src/main/java/bloodasp/galacticgreg/GT_Worldgen_GT_Ore_SmallPieces_Space.java @@ -1,16 +1,17 @@ package bloodasp.galacticgreg; +import java.util.HashMap; +import java.util.Map; import java.util.Random; import net.minecraft.world.World; import net.minecraft.world.chunk.IChunkProvider; +import bloodasp.galacticgreg.api.ModContainer; import bloodasp.galacticgreg.api.ModDimensionDef; -import bloodasp.galacticgreg.dynconfig.DynamicOreMixWorldConfig; import bloodasp.galacticgreg.registry.GalacticGregRegistry; -import gregtech.api.GregTech_API; -import gregtech.api.enums.Materials; import gregtech.api.world.GT_Worldgen; +import gregtech.common.SmallOreBuilder; public class GT_Worldgen_GT_Ore_SmallPieces_Space extends GT_Worldgen { @@ -21,51 +22,43 @@ public class GT_Worldgen_GT_Ore_SmallPieces_Space extends GT_Worldgen { private long mProfilingStart; private long mProfilingEnd; - private DynamicOreMixWorldConfig _mDynWorldConfig; - - public GT_Worldgen_GT_Ore_SmallPieces_Space(String pName, boolean pDefault, int pMinY, int pMaxY, int pAmount, - Materials pPrimary) { - super(pName, GalacticGreg.smallOreWorldgenList, pDefault); - - mMinY = ((short) GregTech_API.sWorldgenFile.get("worldgen." + this.mWorldGenName, "MinHeight", pMinY)); - mMaxY = ((short) Math - .max(this.mMinY + 1, GregTech_API.sWorldgenFile.get("worldgen." + this.mWorldGenName, "MaxHeight", pMaxY))); - mAmount = ((short) Math - .max(1, GregTech_API.sWorldgenFile.get("worldgen." + this.mWorldGenName, "Amount", pAmount))); - mMeta = ((short) GregTech_API.sWorldgenFile - .get("worldgen." + this.mWorldGenName, "Ore", pPrimary.mMetaItemSubID)); - - _mDynWorldConfig = new DynamicOreMixWorldConfig(mWorldGenName); - _mDynWorldConfig.InitDynamicConfig(); - - GalacticGreg.Logger.trace("Initialized new OreLayer: %s", pName); - } - - public GT_Worldgen_GT_Ore_SmallPieces_Space(String pName, boolean pDefault, int pMinY, int pMaxY, int pAmount, - short pPrimary) { - super(pName, GalacticGreg.smallOreWorldgenList, pDefault); - - mMinY = ((short) GregTech_API.sWorldgenFile.get("worldgen." + this.mWorldGenName, "MinHeight", pMinY)); - mMaxY = ((short) Math - .max(this.mMinY + 1, GregTech_API.sWorldgenFile.get("worldgen." + this.mWorldGenName, "MaxHeight", pMaxY))); - mAmount = ((short) Math - .max(1, GregTech_API.sWorldgenFile.get("worldgen." + this.mWorldGenName, "Amount", pAmount))); - mMeta = ((short) GregTech_API.sWorldgenFile.get("worldgen." + this.mWorldGenName, "Ore", pPrimary)); - - _mDynWorldConfig = new DynamicOreMixWorldConfig(mWorldGenName); - _mDynWorldConfig.InitDynamicConfig(); + private Map<String, Boolean> allowedDims; + + public GT_Worldgen_GT_Ore_SmallPieces_Space(SmallOreBuilder ore) { + super(ore.smallOreName, GalacticGreg.smallOreWorldgenList, ore.enabledByDefault); + + mMinY = (short) ore.minY; + mMaxY = (short) Math.max(this.mMinY + 1, ore.maxY); + mAmount = (short) Math.max(1, ore.amount); + mMeta = (short) ore.ore.mMetaItemSubID; + + allowedDims = new HashMap<>(); + for (ModContainer mc : GalacticGregRegistry.getModContainers()) { + if (!mc.getEnabled()) continue; + + for (ModDimensionDef mdd : mc.getDimensionList()) { + String tDimIdentifier = mdd.getDimIdentifier(); + if (allowedDims.containsKey(tDimIdentifier)) GalacticGreg.Logger.error( + "Found 2 Dimensions with the same Identifier: %s Dimension will not generate Ores", + tDimIdentifier); + else { + boolean tFlag = ore.dimsEnabled.getOrDefault(mdd.getDimensionName(), false); + allowedDims.put(tDimIdentifier, tFlag); + } + } + } - GalacticGreg.Logger.trace("Initialized new OreLayer: %s", pName); + GalacticGreg.Logger.trace("Initialized new OreLayer: %s", ore.smallOreName); } /** * Check if *this* orelayer is enabled for pDimensionDef - * + * * @param pDimensionDef the ChunkProvider in question * @return */ public boolean isEnabledForDim(ModDimensionDef pDimensionDef) { - return _mDynWorldConfig.isEnabledInDim(pDimensionDef); + return allowedDims.getOrDefault(pDimensionDef.getDimIdentifier(), false); } @Override @@ -79,7 +72,7 @@ public class GT_Worldgen_GT_Ore_SmallPieces_Space extends GT_Worldgen { return false; } - if (!_mDynWorldConfig.isEnabledInDim(tMDD)) { + if (!isEnabledForDim(tMDD)) { GalacticGreg.Logger .trace("OreGen for %s is disallowed in dimension %s, skipping", mWorldGenName, tMDD.getDimensionName()); return false; diff --git a/src/main/java/bloodasp/galacticgreg/GT_Worldgenerator_Space.java b/src/main/java/bloodasp/galacticgreg/GT_Worldgenerator_Space.java index d2060ca71e..e76bc9bbcc 100644 --- a/src/main/java/bloodasp/galacticgreg/GT_Worldgenerator_Space.java +++ b/src/main/java/bloodasp/galacticgreg/GT_Worldgenerator_Space.java @@ -23,8 +23,6 @@ import bloodasp.galacticgreg.api.ModDimensionDef; import bloodasp.galacticgreg.api.SpecialBlockComb; import bloodasp.galacticgreg.api.StructureInformation; import bloodasp.galacticgreg.auxiliary.GTOreGroup; -import bloodasp.galacticgreg.bartworks.BW_Worldgen_Ore_Layer_Space; -import bloodasp.galacticgreg.bartworks.BW_Worldgen_Ore_SmallOre_Space; import bloodasp.galacticgreg.dynconfig.DynamicDimensionConfig; import bloodasp.galacticgreg.dynconfig.DynamicDimensionConfig.AsteroidConfig; import bloodasp.galacticgreg.registry.GalacticGregRegistry; @@ -450,48 +448,38 @@ public class GT_Worldgenerator_Space implements IWorldGenerator { int tRandomWeight; boolean continueSearch = true; int tFoundOreMeta = -1; - BW_Worldgen_Ore_SmallOre_Space bwOreGen = null; // First find a small ore... for (int i = 0; (i < 256) && (continueSearch); i++) { tRandomWeight = pRandom.nextInt(GT_Worldgen_GT_Ore_Layer_Space.sWeight); for (GT_Worldgen tWorldGen : GalacticGreg.smallOreWorldgenList) { - if (tWorldGen instanceof BW_Worldgen_Ore_SmallOre_Space) { - tRandomWeight = ((BW_Worldgen_Ore_SmallOre_Space) tWorldGen).mDensity; - if (tRandomWeight <= 0) { - tFoundOreMeta = ((BW_Worldgen_Ore_SmallOre_Space) tWorldGen).mPrimaryMeta; - continueSearch = false; - bwOreGen = ((BW_Worldgen_Ore_SmallOre_Space) tWorldGen); - } - } else if (tWorldGen instanceof GT_Worldgen_GT_Ore_SmallPieces_Space) { - // That is enabled for *this* dim... - if (!((GT_Worldgen_GT_Ore_SmallPieces_Space) tWorldGen).isEnabledForDim(pDimDef)) continue; - - // And in the correct y-level, of ObeyLimits is true... - if (pAConf.ObeyHeightLimits - && !((GT_Worldgen_GT_Ore_SmallPieces_Space) tWorldGen).isAllowedForHeight(pY)) continue; - - // Care about weight - tRandomWeight -= ((GT_Worldgen_GT_Ore_SmallPieces_Space) tWorldGen).mAmount; - if (tRandomWeight <= 0) { - // And return found ore meta - tFoundOreMeta = ((GT_Worldgen_GT_Ore_SmallPieces_Space) tWorldGen).mMeta; - continueSearch = false; - } + + if (!(tWorldGen instanceof GT_Worldgen_GT_Ore_SmallPieces_Space)) { + continue; + } + // That is enabled for *this* dim... + if (!((GT_Worldgen_GT_Ore_SmallPieces_Space) tWorldGen).isEnabledForDim(pDimDef)) continue; + + // And in the correct y-level, of ObeyLimits is true... + if (pAConf.ObeyHeightLimits + && !((GT_Worldgen_GT_Ore_SmallPieces_Space) tWorldGen).isAllowedForHeight(pY)) continue; + + // Care about weight + tRandomWeight -= ((GT_Worldgen_GT_Ore_SmallPieces_Space) tWorldGen).mAmount; + if (tRandomWeight <= 0) { + // And return found ore meta + tFoundOreMeta = ((GT_Worldgen_GT_Ore_SmallPieces_Space) tWorldGen).mMeta; + continueSearch = false; } } } if (tFoundOreMeta > -1) { - if (bwOreGen == null) { - // Make the oreID a small ore with correct type - int tCustomOffset = (GTOreTypes.SmallOres.getOffset() + pTargetBlockOffset); + // Make the oreID a small ore with correct type + int tCustomOffset = (GTOreTypes.SmallOres.getOffset() + pTargetBlockOffset); - // Set the smallOre block - GT_TileEntity_Ores_Space - .setOuterSpaceOreBlock(pDimDef, pWorld, pX, pY, pZ, tFoundOreMeta, true, tCustomOffset); - tFlag = false; - } else { - bwOreGen.setOreBlock(pWorld, pX, pY, pZ, tFoundOreMeta, true); - } + // Set the smallOre block + GT_TileEntity_Ores_Space + .setOuterSpaceOreBlock(pDimDef, pWorld, pX, pY, pZ, tFoundOreMeta, true, tCustomOffset); + tFlag = false; } } } @@ -524,8 +512,7 @@ public class GT_Worldgenerator_Space implements IWorldGenerator { for (GT_Worldgen tWorldGen : GalacticGreg.oreVeinWorldgenList) { if (tWorldGen instanceof GT_Worldgen_GT_Ore_Layer_Space) tRandomWeight -= ((GT_Worldgen_GT_Ore_Layer_Space) tWorldGen).mWeight; - else if (tWorldGen instanceof BW_Worldgen_Ore_Layer_Space) - tRandomWeight -= ((BW_Worldgen_Ore_Layer_Space) tWorldGen).mWeight; + if (tRandomWeight <= 0) { try { if (tWorldGen.executeWorldgen( diff --git a/src/main/java/bloodasp/galacticgreg/GalacticGreg.java b/src/main/java/bloodasp/galacticgreg/GalacticGreg.java index 760564c741..2e566dca1d 100644 --- a/src/main/java/bloodasp/galacticgreg/GalacticGreg.java +++ b/src/main/java/bloodasp/galacticgreg/GalacticGreg.java @@ -9,8 +9,6 @@ import java.util.Random; import bloodasp.galacticgreg.auxiliary.GalacticGregConfig; import bloodasp.galacticgreg.auxiliary.LogHelper; import bloodasp.galacticgreg.auxiliary.ProfilingStorage; -import bloodasp.galacticgreg.bartworks.BW_Worldgen_Ore_Layer_Space; -import bloodasp.galacticgreg.bartworks.BW_Worldgen_Ore_SmallOre_Space; import bloodasp.galacticgreg.command.AEStorageCommand; import bloodasp.galacticgreg.command.ProfilingCommand; import bloodasp.galacticgreg.registry.GalacticGregRegistry; @@ -21,7 +19,6 @@ import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.event.FMLServerStartingEvent; import gregtech.GT_Version; -import gregtech.api.GregTech_API; import gregtech.api.world.GT_Worldgen; @Mod( @@ -84,25 +81,6 @@ public class GalacticGreg { if (!GalacticGregRegistry.InitRegistry()) throw new RuntimeException( "GalacticGreg registry has been finalized from a 3rd-party mod, this is forbidden!"); - // new WorldGenGaGT().run(); DO NOT UNCOMMENT, was moved to gregtech.loaders.postload.GT_Worldgenloader - - for (int f = 0, - j = GregTech_API.sWorldgenFile.get("worldgen.GaGregBartworks", "AmountOfCustomLargeVeinSlots", 0); f - < j; f++) { - new BW_Worldgen_Ore_Layer_Space( - "mix.custom." + (f < 10 ? "0" : "") + f, - GregTech_API.sWorldgenFile - .get("worldgen.GaGregBartworks." + "mix.custom." + (f < 10 ? "0" : "") + f, "Enabled", false)); - } - - for (int f = 0, j = GregTech_API.sWorldgenFile.get("worldgen.GaGregBartworks", "AmountOfCustomSmallSlots", 0); f - < j; f++) { - new BW_Worldgen_Ore_SmallOre_Space( - "small.custom." + (f < 10 ? "0" : "") + f, - GregTech_API.sWorldgenFile - .get("worldgen.GaGregBartworks." + "small.custom." + (f < 10 ? "0" : "") + f, "Enabled", false)); - } - for (Runnable r : ADDITIONALVEINREGISTER) { try { r.run(); diff --git a/src/main/java/bloodasp/galacticgreg/ModRegisterer.java b/src/main/java/bloodasp/galacticgreg/ModRegisterer.java deleted file mode 100644 index 889cee0ca6..0000000000 --- a/src/main/java/bloodasp/galacticgreg/ModRegisterer.java +++ /dev/null @@ -1,283 +0,0 @@ -package bloodasp.galacticgreg; - -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.init.Blocks; -import net.minecraft.world.gen.ChunkProviderEnd; - -import bloodasp.galacticgreg.api.AsteroidBlockComb; -import bloodasp.galacticgreg.api.Enums; -import bloodasp.galacticgreg.api.Enums.AllowedBlockPosition; -import bloodasp.galacticgreg.api.Enums.DimensionType; -import bloodasp.galacticgreg.api.GTOreTypes; -import bloodasp.galacticgreg.api.ModContainer; -import bloodasp.galacticgreg.api.ModDBMDef; -import bloodasp.galacticgreg.api.ModDimensionDef; -import bloodasp.galacticgreg.api.SpecialBlockComb; - -/** - * In this class, you'll find everything you need in order to tell GGreg what to do and where. Everything is done in - * here. If you're trying to use anything else, you're probably doing something wrong (Or I forgot to add it. In that - * case, find me on github and create an issue please) - */ -public class ModRegisterer { - - /** - * Just a helper to convert a single element to a list - * - * @param pDef - * @return - */ - private static List<ModDBMDef> singleToList(ModDBMDef pDef) { - List<ModDBMDef> tLst = new ArrayList<>(); - tLst.add(pDef); - return tLst; - } - - private static Method registerModContainer; - - /** - * Use loose binding of the register-method. Should be enough to provide support for GGreg without the requirement - * to have it in a modpack at all - * - * @param pModContainer - */ - public static void registerModContainer(ModContainer pModContainer) { - /* - * try { registerModContainer.invoke(null, pModContainer); } catch (Exception e) { e.printStackTrace(); } - */ - } - - /** - * Try to get the instance of GalacticGregs registry in order to register stuff - * - * @return - */ - public boolean Init() { - return false; - /* - * try { Class gGregRegistry = Class.forName("bloodasp.galacticgreg.registry.GalacticGregRegistry"); - * registerModContainer = gGregRegistry.getMethod("registerModContainer", ModContainer.class); return true; } - * catch (Exception e) { // GalacticGreg is not installed or something is wrong return false; } - */ - } - - public void Register() { - /* - * if (GalacticGreg.GalacticConfig.RegisterVanillaDim) registerModContainer(Setup_Vanilla()); if - * (GalacticGreg.GalacticConfig.RegisterGalacticCraftCore) registerModContainer(Setup_GalactiCraftCore()); if - * (GalacticGreg.GalacticConfig.RegisterGalacticCraftPlanets) registerModContainer(Setup_GalactiCraftPlanets()); - * if (GalacticGreg.GalacticConfig.RegisterGalaxySpace) registerModContainer(Setup_GalaxySpace()); - */ - } - - /** - * Vanilla MC (End Asteroids) - */ - private ModContainer Setup_Vanilla() { - // --- Mod Vanilla (Heh, "mod") - ModContainer modMCVanilla = new ModContainer("Vanilla"); - - // If you happen to have an asteroid dim, just skip the blocklist, and setDimensionType() to - // DimensionType.Asteroid - // also don't forget to add at least one asteroid type, or nothing will generate! - ModDimensionDef dimEndAsteroids = new ModDimensionDef( - "EndAsteroids", - ChunkProviderEnd.class, - DimensionType.Asteroid); - - dimEndAsteroids.addAsteroidMaterial(new AsteroidBlockComb(GTOreTypes.Netherrack)); - dimEndAsteroids.addAsteroidMaterial(new AsteroidBlockComb(GTOreTypes.RedGranite)); - dimEndAsteroids.addAsteroidMaterial(new AsteroidBlockComb(GTOreTypes.BlackGranite)); - dimEndAsteroids.addAsteroidMaterial(new AsteroidBlockComb(GTOreTypes.EndStone)); - - // These Blocks will randomly be generated - dimEndAsteroids.addSpecialAsteroidBlock(new SpecialBlockComb(Blocks.glowstone)); - dimEndAsteroids.addSpecialAsteroidBlock(new SpecialBlockComb(Blocks.lava, AllowedBlockPosition.AsteroidCore)); - - modMCVanilla.addDimensionDef(dimEndAsteroids); - - return modMCVanilla; - } - - /** - * Mod GalactiCraft Just another setup based on existing classes, due the fact that we're working with GalactiCraft - */ - public static ModContainer Setup_GalactiCraftCore() { - ModContainer modGCraftCore = new ModContainer("GalacticraftCore"); - ModDBMDef DBMMoon = new ModDBMDef("tile.moonBlock", 4); - - ModDimensionDef tMoonDim = new ModDimensionDef( - "Moon", - "micdoodle8.mods.galacticraft.core.world.gen.ChunkProviderMoon", - Enums.DimensionType.Planet, - singleToList(DBMMoon)); - modGCraftCore.addDimensionDef(tMoonDim); - - return modGCraftCore; - } - - /** - * As GalactiCraftPlanets is an optional mod, don't hardlink it here - * - * @return - */ - private ModContainer Setup_GalactiCraftPlanets() { - ModContainer modGCraftPlanets = new ModContainer("GalacticraftMars"); - ModDBMDef DBMMars = new ModDBMDef("tile.mars", 9); - ModDimensionDef dimMars = new ModDimensionDef( - "Mars", - "micdoodle8.mods.galacticraft.planets.mars.world.gen.ChunkProviderMars", - DimensionType.Planet, - singleToList(DBMMars)); - - // Overwrite ore blocks on mars with red granite ones. This will default to regular stone if not set - dimMars.setStoneType(GTOreTypes.RedGranite); - modGCraftPlanets.addDimensionDef(dimMars); - - ModDimensionDef dimAsteroids = new ModDimensionDef( - "Asteroids", - "micdoodle8.mods.galacticraft.planets.asteroids.world.gen.ChunkProviderAsteroids", - DimensionType.Asteroid); - dimAsteroids.addAsteroidMaterial(new AsteroidBlockComb(GTOreTypes.BlackGranite)); - dimAsteroids.addAsteroidMaterial(new AsteroidBlockComb(GTOreTypes.RedGranite)); - dimAsteroids.addAsteroidMaterial(new AsteroidBlockComb(GTOreTypes.Netherrack)); - modGCraftPlanets.addDimensionDef(dimAsteroids); - - return modGCraftPlanets; - } - - /** - * Mod GalaxySpace by BlesseNtumble - */ - private ModContainer Setup_GalaxySpace() { - // First, we create a mod-container that will be populated with dimensions later. - // The Name must match your modID, as it is checked if this mod is loaded, in order - // to enable/disable the parsing/registering of dimensions - ModContainer modCGalaxySpace = new ModContainer("GalaxySpace"); - - // Now lets first define a block here for our dimension. You can add the modID, but you don't have to. - // It will automatically add the mods name that is defined in the modcontainer. - ModDBMDef DBMPhobos = new ModDBMDef("phobosstone"); - ModDBMDef DBMDeimos = new ModDBMDef("deimossubgrunt"); - ModDBMDef DBMCeres = new ModDBMDef("ceressubgrunt"); - ModDBMDef DBMIO = new ModDBMDef("iorock", 4); // This meta-4 is a copy&paste bug in GSpace and might not work in - // further versions - ModDBMDef DBMGanymede = new ModDBMDef("ganymedesubgrunt"); - ModDBMDef DBMCallisto = new ModDBMDef("callistosubice"); - ModDBMDef DBMVenus = new ModDBMDef("venussubgrunt"); - ModDBMDef DBMMercury = new ModDBMDef("mercurycore"); - ModDBMDef DBMEnceladus = new ModDBMDef("enceladusrock"); - ModDBMDef DBMTitan = new ModDBMDef("titanstone"); - ModDBMDef DBMOberon = new ModDBMDef("oberonstone"); - ModDBMDef DBMProteus = new ModDBMDef("proteusstone"); - ModDBMDef DBMTriton = new ModDBMDef("tritonstone"); - ModDBMDef DBMPluto = new ModDBMDef("plutostone"); - - // Now define the available dimensions, and their chunkprovider. - // Same as above, to not have any dependency in your code, you can just give it a string. - // But it's better to use the actual ChunkProvider class. The Name is used for the GalacticGreg config file. - // The resulting config setting will be: <ModID>_<Name you give here as arg0>_false = false - // make sure to never change this name once you've generated your config files, as it will overwrite everything! - - // 25.10.2015 GSpace v2.5 - modCGalaxySpace.addDimensionDef( - new ModDimensionDef( - "Pluto", - "blessentumble.planets.SolarSystem.pluto.dimension.ChunkProviderPluto", - DimensionType.Planet, - singleToList(DBMPluto))); - modCGalaxySpace.addDimensionDef( - new ModDimensionDef( - "Triton", - "blessentumble.moons.triton.dimension.ChunkProviderTriton", - DimensionType.Planet, - singleToList(DBMTriton))); - modCGalaxySpace.addDimensionDef( - new ModDimensionDef( - "Proteus", - "blessentumble.moons.proteus.dimension.ChunkProviderProteus", - DimensionType.Planet, - singleToList(DBMProteus))); - modCGalaxySpace.addDimensionDef( - new ModDimensionDef( - "Oberon", - "blessentumble.moons.oberon.dimension.ChunkProviderOberon", - DimensionType.Planet, - singleToList(DBMOberon))); - modCGalaxySpace.addDimensionDef( - new ModDimensionDef( - "Titan", - "blessentumble.moons.titan.dimension.ChunkProviderTitan", - DimensionType.Planet, - singleToList(DBMTitan))); - modCGalaxySpace.addDimensionDef( - new ModDimensionDef( - "Callisto", - "blessentumble.moons.SolarSystem.callisto.dimension.ChunkProviderCallisto", - DimensionType.Planet, - singleToList(DBMCallisto))); - modCGalaxySpace.addDimensionDef( - new ModDimensionDef( - "Ganymede", - "blessentumble.moons.ganymede.dimension.ChunkProviderGanymede", - DimensionType.Planet, - singleToList(DBMGanymede))); - modCGalaxySpace.addDimensionDef( - new ModDimensionDef( - "Ceres", - "blessentumble.planets.SolarSystem.ceres.dimension.ChunkProviderCeres", - DimensionType.Planet, - singleToList(DBMCeres))); - modCGalaxySpace.addDimensionDef( - new ModDimensionDef( - "Deimos", - "blessentumble.moons.SolarSystem.deimos.dimension.ChunkProviderDeimos", - DimensionType.Planet, - singleToList(DBMDeimos))); - modCGalaxySpace.addDimensionDef( - new ModDimensionDef( - "Enceladus", - "blessentumble.moons.SolarSystem.enceladus.dimension.ChunkProviderEnceladus", - DimensionType.Planet, - singleToList(DBMEnceladus))); - modCGalaxySpace.addDimensionDef( - new ModDimensionDef( - "Io", - "blessentumble.moons.io.dimension.ChunkProviderIo", - DimensionType.Planet, - singleToList(DBMIO))); - modCGalaxySpace.addDimensionDef( - new ModDimensionDef( - "Phobos", - "blessentumble.moons.phobos.dimension.ChunkProviderPhobos", - DimensionType.Planet, - singleToList(DBMPhobos))); - modCGalaxySpace.addDimensionDef( - new ModDimensionDef( - "Venus", - "blessentumble.planets.SolarSystem.venus.dimension.ChunkProviderVenus", - DimensionType.Planet, - singleToList(DBMVenus))); - modCGalaxySpace.addDimensionDef( - new ModDimensionDef( - "Mercury", - "blessentumble.planets.SolarSystem.mercury.dimension.ChunkProviderMercury", - DimensionType.Planet, - singleToList(DBMMercury))); - - // GSpace 2.2-Beta: Kupierbelt - ModDimensionDef dimKupierBelt = new ModDimensionDef( - "Kuiperbelt", - "blessentumble.planets.SolarSystem.kuiperbelt.dimension.ChunkProviderKuiper", - DimensionType.Asteroid); - dimKupierBelt.setDimensionType(DimensionType.Asteroid); - dimKupierBelt.addAsteroidMaterial(new AsteroidBlockComb(GTOreTypes.RedGranite)); - dimKupierBelt.addAsteroidMaterial(new AsteroidBlockComb(GTOreTypes.BlackGranite)); - modCGalaxySpace.addDimensionDef(dimKupierBelt); - - return modCGalaxySpace; - } -} diff --git a/src/main/java/bloodasp/galacticgreg/SpaceDimRegisterer.java b/src/main/java/bloodasp/galacticgreg/SpaceDimRegisterer.java new file mode 100644 index 0000000000..360d7f1bda --- /dev/null +++ b/src/main/java/bloodasp/galacticgreg/SpaceDimRegisterer.java @@ -0,0 +1,179 @@ +package bloodasp.galacticgreg; + +import static bloodasp.galacticgreg.api.enums.DimensionDef.Anubis; +import static bloodasp.galacticgreg.api.enums.DimensionDef.Asteroids; +import static bloodasp.galacticgreg.api.enums.DimensionDef.BarnardC; +import static bloodasp.galacticgreg.api.enums.DimensionDef.BarnardE; +import static bloodasp.galacticgreg.api.enums.DimensionDef.BarnardF; +import static bloodasp.galacticgreg.api.enums.DimensionDef.Callisto; +import static bloodasp.galacticgreg.api.enums.DimensionDef.CentauriAlpha; +import static bloodasp.galacticgreg.api.enums.DimensionDef.Ceres; +import static bloodasp.galacticgreg.api.enums.DimensionDef.Deimos; +import static bloodasp.galacticgreg.api.enums.DimensionDef.Enceladus; +import static bloodasp.galacticgreg.api.enums.DimensionDef.EndAsteroids; +import static bloodasp.galacticgreg.api.enums.DimensionDef.Europa; +import static bloodasp.galacticgreg.api.enums.DimensionDef.Ganymede; +import static bloodasp.galacticgreg.api.enums.DimensionDef.Haumea; +import static bloodasp.galacticgreg.api.enums.DimensionDef.Horus; +import static bloodasp.galacticgreg.api.enums.DimensionDef.Io; +import static bloodasp.galacticgreg.api.enums.DimensionDef.KuiperBelt; +import static bloodasp.galacticgreg.api.enums.DimensionDef.Maahes; +import static bloodasp.galacticgreg.api.enums.DimensionDef.MakeMake; +import static bloodasp.galacticgreg.api.enums.DimensionDef.Mars; +import static bloodasp.galacticgreg.api.enums.DimensionDef.MehenBelt; +import static bloodasp.galacticgreg.api.enums.DimensionDef.Mercury; +import static bloodasp.galacticgreg.api.enums.DimensionDef.Miranda; +import static bloodasp.galacticgreg.api.enums.DimensionDef.Moon; +import static bloodasp.galacticgreg.api.enums.DimensionDef.Neper; +import static bloodasp.galacticgreg.api.enums.DimensionDef.Oberon; +import static bloodasp.galacticgreg.api.enums.DimensionDef.Phobos; +import static bloodasp.galacticgreg.api.enums.DimensionDef.Pluto; +import static bloodasp.galacticgreg.api.enums.DimensionDef.Proteus; +import static bloodasp.galacticgreg.api.enums.DimensionDef.Seth; +import static bloodasp.galacticgreg.api.enums.DimensionDef.TcetiE; +import static bloodasp.galacticgreg.api.enums.DimensionDef.Titan; +import static bloodasp.galacticgreg.api.enums.DimensionDef.Triton; +import static bloodasp.galacticgreg.api.enums.DimensionDef.VegaB; +import static bloodasp.galacticgreg.api.enums.DimensionDef.Venus; +import static bloodasp.galacticgreg.api.enums.ModContainers.AmunRa; +import static bloodasp.galacticgreg.api.enums.ModContainers.GalactiCraftCore; +import static bloodasp.galacticgreg.api.enums.ModContainers.GalacticraftMars; +import static bloodasp.galacticgreg.api.enums.ModContainers.GalaxySpace; +import static bloodasp.galacticgreg.api.enums.ModContainers.Vanilla; + +import net.minecraft.init.Blocks; + +import bloodasp.galacticgreg.api.AsteroidBlockComb; +import bloodasp.galacticgreg.api.Enums; +import bloodasp.galacticgreg.api.GTOreTypes; +import bloodasp.galacticgreg.api.ModContainer; +import bloodasp.galacticgreg.api.SpecialBlockComb; +import bloodasp.galacticgreg.registry.GalacticGregRegistry; + +/** + * In this class, you'll find everything you need in order to tell GGreg what to do and where. Everything is done in + * here. If you're trying to use anything else, you're probably doing something wrong (Or I forgot to add it. In that + * case, find me on github and create an issue please) + */ +public class SpaceDimRegisterer { + + public static void register() { + GalacticGregRegistry.registerModContainer(setupVanilla()); + GalacticGregRegistry.registerModContainer(setupGalactiCraftCore()); + GalacticGregRegistry.registerModContainer(setupGalactiCraftPlanets()); + GalacticGregRegistry.registerModContainer(setupGalaxySpace()); + GalacticGregRegistry.registerModContainer(setupAmunRa()); + } + + /** + * Vanilla MC (End Asteroids) + */ + private static ModContainer setupVanilla() { + + // If you happen to have an asteroid dim, just skip the blocklist, and setDimensionType() to + // DimensionType.Asteroid + // also don't forget to add at least one asteroid type, or nothing will generate! + EndAsteroids.modDimensionDef.addAsteroidMaterial(new AsteroidBlockComb(GTOreTypes.Netherrack)); + EndAsteroids.modDimensionDef.addAsteroidMaterial(new AsteroidBlockComb(GTOreTypes.RedGranite)); + EndAsteroids.modDimensionDef.addAsteroidMaterial(new AsteroidBlockComb(GTOreTypes.BlackGranite)); + EndAsteroids.modDimensionDef.addAsteroidMaterial(new AsteroidBlockComb(GTOreTypes.EndStone)); + + // These Blocks will randomly be generated + EndAsteroids.modDimensionDef.addSpecialAsteroidBlock(new SpecialBlockComb(Blocks.glowstone)); + EndAsteroids.modDimensionDef + .addSpecialAsteroidBlock(new SpecialBlockComb(Blocks.lava, Enums.AllowedBlockPosition.AsteroidCore)); + + Vanilla.modContainer.addDimensionDef(EndAsteroids.modDimensionDef); + + return Vanilla.modContainer; + } + + /** + * Mod GalactiCraft + */ + private static ModContainer setupGalactiCraftCore() { + GalactiCraftCore.modContainer.addDimensionDef(Moon.modDimensionDef); + return GalactiCraftCore.modContainer; + } + + /** + * As GalactiCraftPlanets is an optional mod, don't hardlink it here + */ + private static ModContainer setupGalactiCraftPlanets() { + // Overwrite ore blocks on mars with red granite ones. This will default to regular stone if not set + Mars.modDimensionDef.setStoneType(GTOreTypes.RedGranite); + GalacticraftMars.modContainer.addDimensionDef(Mars.modDimensionDef); + + Asteroids.modDimensionDef.addAsteroidMaterial(new AsteroidBlockComb(GTOreTypes.BlackGranite)); + Asteroids.modDimensionDef.addAsteroidMaterial(new AsteroidBlockComb(GTOreTypes.RedGranite)); + Asteroids.modDimensionDef.addAsteroidMaterial(new AsteroidBlockComb(GTOreTypes.Netherrack)); + GalacticraftMars.modContainer.addDimensionDef(Asteroids.modDimensionDef); + + return GalacticraftMars.modContainer; + } + + /** + * Mod GalaxySpace by BlesseNtumble + */ + private static ModContainer setupGalaxySpace() { + // First, we create a mod-container that will be populated with dimensions later. + // The Name must match your ID, as it is checked if this mod is loaded, in order + // to enable/disable the parsing/registering of dimensions + // See enum ModContainers + + // Now lets first define a block here for our dimension. You can add the ID, but you don't have to. + // It will automatically add the mods name that is defined in the modcontainer. + // See enum DimensionBlockMetaDefinitionList + + // Now define the available dimensions, and their chunkprovider. + // Same as above, to not have any dependency in your code, you can just give it a string. + // But it's better to use the actual ChunkProvider class. The Name is used for the GalacticGreg config file. + // The resulting config setting will be: <ModID>_<Name you give here as arg0>_false = false + // make sure to never change this name once you've generated your config files, as it will overwrite everything! + + // 30.11.2016 GSpace v1.1.3 Stable + GalaxySpace.modContainer.addDimensionDef(Pluto.modDimensionDef); + GalaxySpace.modContainer.addDimensionDef(Triton.modDimensionDef); + GalaxySpace.modContainer.addDimensionDef(Proteus.modDimensionDef); + GalaxySpace.modContainer.addDimensionDef(Oberon.modDimensionDef); + GalaxySpace.modContainer.addDimensionDef(Titan.modDimensionDef); + GalaxySpace.modContainer.addDimensionDef(Callisto.modDimensionDef); + GalaxySpace.modContainer.addDimensionDef(Ganymede.modDimensionDef); + GalaxySpace.modContainer.addDimensionDef(Ceres.modDimensionDef); + GalaxySpace.modContainer.addDimensionDef(Deimos.modDimensionDef); + GalaxySpace.modContainer.addDimensionDef(Enceladus.modDimensionDef); + GalaxySpace.modContainer.addDimensionDef(Io.modDimensionDef); + GalaxySpace.modContainer.addDimensionDef(Europa.modDimensionDef); + GalaxySpace.modContainer.addDimensionDef(Phobos.modDimensionDef); + GalaxySpace.modContainer.addDimensionDef(Venus.modDimensionDef); + GalaxySpace.modContainer.addDimensionDef(Mercury.modDimensionDef); + GalaxySpace.modContainer.addDimensionDef(MakeMake.modDimensionDef); + GalaxySpace.modContainer.addDimensionDef(Haumea.modDimensionDef); + GalaxySpace.modContainer.addDimensionDef(CentauriAlpha.modDimensionDef); + GalaxySpace.modContainer.addDimensionDef(VegaB.modDimensionDef); + GalaxySpace.modContainer.addDimensionDef(BarnardC.modDimensionDef); + GalaxySpace.modContainer.addDimensionDef(BarnardE.modDimensionDef); + GalaxySpace.modContainer.addDimensionDef(BarnardF.modDimensionDef); + GalaxySpace.modContainer.addDimensionDef(TcetiE.modDimensionDef); + GalaxySpace.modContainer.addDimensionDef(Miranda.modDimensionDef); + KuiperBelt.modDimensionDef.setDimensionType(Enums.DimensionType.Asteroid); + KuiperBelt.modDimensionDef.addAsteroidMaterial(new AsteroidBlockComb(GTOreTypes.RedGranite)); + KuiperBelt.modDimensionDef.addAsteroidMaterial(new AsteroidBlockComb(GTOreTypes.BlackGranite)); + GalaxySpace.modContainer.addDimensionDef(KuiperBelt.modDimensionDef); + return GalaxySpace.modContainer; + } + + /** + * Mod Amun-Ra + */ + private static ModContainer setupAmunRa() { + AmunRa.modContainer.addDimensionDef(Neper.modDimensionDef); + AmunRa.modContainer.addDimensionDef(Maahes.modDimensionDef); + AmunRa.modContainer.addDimensionDef(Anubis.modDimensionDef); + AmunRa.modContainer.addDimensionDef(Horus.modDimensionDef); + AmunRa.modContainer.addDimensionDef(Seth.modDimensionDef); + MehenBelt.modDimensionDef.addAsteroidMaterial(GTOreTypes.BlackGranite); + AmunRa.modContainer.addDimensionDef(MehenBelt.modDimensionDef); + return AmunRa.modContainer; + } +} diff --git a/src/main/java/bloodasp/galacticgreg/WorldGenGaGT.java b/src/main/java/bloodasp/galacticgreg/WorldGenGaGT.java index 90f51ec7e1..f5577c9295 100644 --- a/src/main/java/bloodasp/galacticgreg/WorldGenGaGT.java +++ b/src/main/java/bloodasp/galacticgreg/WorldGenGaGT.java @@ -1,7 +1,7 @@ package bloodasp.galacticgreg; -import gregtech.common.GT_Worldgen_GT_Ore_Layer; -import gregtech.common.GT_Worldgen_GT_Ore_SmallPieces; +import gregtech.api.enums.OreMixes; +import gregtech.api.enums.SmallOres; public class WorldGenGaGT implements Runnable { @@ -10,80 +10,19 @@ public class WorldGenGaGT implements Runnable { new GT_Worldgenerator_Space(); /* - * new GT_Worldgen_GT_Ore_SmallPieces_Space("ore.small.copper", true, 60, 120, 32, Materials.Copper); new - * GT_Worldgen_GT_Ore_SmallPieces_Space("ore.small.tin", true, 60, 120, 32, Materials.Tin); new - * GT_Worldgen_GT_Ore_SmallPieces_Space("ore.small.bismuth", true, 80, 120, 8, Materials.Bismuth); new - * GT_Worldgen_GT_Ore_SmallPieces_Space("ore.small.coal", true, 60, 100, 24, Materials.Coal); new - * GT_Worldgen_GT_Ore_SmallPieces_Space("ore.small.iron", true, 40, 80, 16, Materials.Iron); new - * GT_Worldgen_GT_Ore_SmallPieces_Space("ore.small.lead", true, 40, 80, 16, Materials.Lead); new - * GT_Worldgen_GT_Ore_SmallPieces_Space("ore.small.zinc", true, 30, 60, 12, Materials.Zinc); new - * GT_Worldgen_GT_Ore_SmallPieces_Space("ore.small.gold", true, 20, 40, 8, Materials.Gold); new - * GT_Worldgen_GT_Ore_SmallPieces_Space("ore.small.silver", true, 20, 40, 8, Materials.Silver); new - * GT_Worldgen_GT_Ore_SmallPieces_Space("ore.small.nickel", true, 20, 40, 8, Materials.Nickel); new - * GT_Worldgen_GT_Ore_SmallPieces_Space("ore.small.lapis", true, 20, 40, 4, Materials.Lapis); new - * GT_Worldgen_GT_Ore_SmallPieces_Space("ore.small.diamond", true, 5, 10, 2, Materials.Diamond); new - * GT_Worldgen_GT_Ore_SmallPieces_Space("ore.small.redstone", true, 5, 20, 8, Materials.Redstone); new - * GT_Worldgen_GT_Ore_SmallPieces_Space("ore.small.platinum", true, 20, 40, 8, Materials.Platinum); new - * GT_Worldgen_GT_Ore_SmallPieces_Space("ore.small.iridium", true, 20, 40, 8, Materials.Iridium); new - * GT_Worldgen_GT_Ore_SmallPieces_Space("ore.small.netherquartz", true, 30, 120, 64, Materials.NetherQuartz); - * new GT_Worldgen_GT_Ore_SmallPieces_Space("ore.small.saltpeter", true, 10, 60, 8, Materials.Saltpeter); new - * GT_Worldgen_GT_Ore_SmallPieces_Space("ore.small.sulfur_n", true, 10, 60, 32, Materials.Sulfur); new - * GT_Worldgen_GT_Ore_SmallPieces_Space("ore.small.sulfur_o", true, 5, 15, 8, Materials.Sulfur); new - * GT_Worldgen_GT_Ore_SmallPieces_Space("ore.small.emerald", true, 5, 250, 1, Materials.Emerald); new - * GT_Worldgen_GT_Ore_SmallPieces_Space("ore.small.ruby", true, 5, 250, 1, Materials.Ruby); new - * GT_Worldgen_GT_Ore_SmallPieces_Space("ore.small.sapphire", true, 5, 250, 1, Materials.Sapphire); new - * GT_Worldgen_GT_Ore_SmallPieces_Space("ore.small.greensapphire", true, 5, 250, 1, Materials.GreenSapphire); - * new GT_Worldgen_GT_Ore_SmallPieces_Space("ore.small.olivine", true, 5, 250, 1, Materials.Olivine); new - * GT_Worldgen_GT_Ore_SmallPieces_Space("ore.small.topaz", true, 5, 250, 1, Materials.Topaz); new - * GT_Worldgen_GT_Ore_SmallPieces_Space("ore.small.tanzanite", true, 5, 250, 1, Materials.Tanzanite); new - * GT_Worldgen_GT_Ore_SmallPieces_Space("ore.small.amethyst", true, 5, 250, 1, Materials.Amethyst); new - * GT_Worldgen_GT_Ore_SmallPieces_Space("ore.small.opal", true, 5, 250, 1, Materials.Opal); new - * GT_Worldgen_GT_Ore_SmallPieces_Space("ore.small.jasper", true, 5, 250, 1, Materials.Jasper); new - * GT_Worldgen_GT_Ore_SmallPieces_Space("ore.small.bluetopaz", true, 5, 250, 1, Materials.BlueTopaz); new - * GT_Worldgen_GT_Ore_SmallPieces_Space("ore.small.amber", true, 5, 250, 1, Materials.Amber); new - * GT_Worldgen_GT_Ore_SmallPieces_Space("ore.small.foolsruby", true, 5, 250, 1, Materials.FoolsRuby); new - * GT_Worldgen_GT_Ore_SmallPieces_Space("ore.small.garnetred", true, 5, 250, 1, Materials.GarnetRed); new - * GT_Worldgen_GT_Ore_SmallPieces_Space("ore.small.garnetyellow", true, 5, 250, 1, Materials.GarnetYellow); - */ - /* * This part here enables every GT Small Ore for Space Dims. */ - for (int k = 0; k < GT_Worldgen_GT_Ore_SmallPieces.sList.size(); ++k) { - new GT_Worldgen_GT_Ore_SmallPieces_Space( - GT_Worldgen_GT_Ore_SmallPieces.sList.get(k).mWorldGenName, - GT_Worldgen_GT_Ore_SmallPieces.sList.get(k).mEnabled, - GT_Worldgen_GT_Ore_SmallPieces.sList.get(k).mMinY, - GT_Worldgen_GT_Ore_SmallPieces.sList.get(k).mMaxY, - GT_Worldgen_GT_Ore_SmallPieces.sList.get(k).mAmount, - GT_Worldgen_GT_Ore_SmallPieces.sList.get(k).mMeta); + for (SmallOres ore : SmallOres.values()) { + ore.addGaGregSmallOre(); } /* * This part here enables every GT Ore for Space Dims. */ - for (int k = 0; k < GT_Worldgen_GT_Ore_Layer.sList.size(); ++k) { - new GT_Worldgen_GT_Ore_Layer_Space( - GT_Worldgen_GT_Ore_Layer.sList.get(k).mWorldGenName, - GT_Worldgen_GT_Ore_Layer.sList.get(k).mEnabled, - GT_Worldgen_GT_Ore_Layer.sList.get(k).mMinY, - GT_Worldgen_GT_Ore_Layer.sList.get(k).mMaxY, - GT_Worldgen_GT_Ore_Layer.sList.get(k).mWeight, - GT_Worldgen_GT_Ore_Layer.sList.get(k).mDensity, - GT_Worldgen_GT_Ore_Layer.sList.get(k).mSize, - GT_Worldgen_GT_Ore_Layer.sList.get(k).mPrimaryMeta, - GT_Worldgen_GT_Ore_Layer.sList.get(k).mSecondaryMeta, - GT_Worldgen_GT_Ore_Layer.sList.get(k).mBetweenMeta, - GT_Worldgen_GT_Ore_Layer.sList.get(k).mSporadicMeta); - } - /* - * int f = 0; for (int j = GregTech_API.sWorldgenFile.get("worldgen", "AmountOfCustomSmallOreSlots", 16); f < j; - * f++) { new GT_Worldgen_GT_Ore_SmallPieces_Space("ore.small.custom." + (f < 10 ? "0" : "") + f, false, 0, 0, - * 0, Materials._NULL); } int i = 0; for (int j = GregTech_API.sWorldgenFile.get("worldgen", - * "AmountOfCustomLargeVeinSlots", 16); i < j; i++) { new GT_Worldgen_GT_Ore_Layer_Space("ore.mix.custom." + (i - * < 10 ? "0" : "") + i, false, 0, 0, 0, 0, 0, Materials._NULL, Materials._NULL, Materials._NULL, - * Materials._NULL); } - */ + for (OreMixes mix : OreMixes.values()) { + mix.addGaGregOreLayer(); + } } } diff --git a/src/main/java/bloodasp/galacticgreg/api/Enums.java b/src/main/java/bloodasp/galacticgreg/api/Enums.java index 0c8afaf243..0d864e54c9 100644 --- a/src/main/java/bloodasp/galacticgreg/api/Enums.java +++ b/src/main/java/bloodasp/galacticgreg/api/Enums.java @@ -46,12 +46,6 @@ public class Enums { * The Dimension is a planet, and only ores shall be generated in the ground */ Planet, - - /** - * The Dimension is a special dim where Asteroids *and* ores shall spawn. Additional config values will be - * generated in worldconfig - */ - AsteroidAndPlanet } } diff --git a/src/main/java/bloodasp/galacticgreg/api/enums/DimensionBlockMetaDefinitionList.java b/src/main/java/bloodasp/galacticgreg/api/enums/DimensionBlockMetaDefinitionList.java new file mode 100644 index 0000000000..279360d2d9 --- /dev/null +++ b/src/main/java/bloodasp/galacticgreg/api/enums/DimensionBlockMetaDefinitionList.java @@ -0,0 +1,57 @@ +package bloodasp.galacticgreg.api.enums; + +import java.util.Arrays; +import java.util.List; + +import net.minecraft.init.Blocks; + +import bloodasp.galacticgreg.api.ModDBMDef; + +public enum DimensionBlockMetaDefinitionList { + + Moon(new ModDBMDef("tile.moonBlock", 4)), + Mars(new ModDBMDef("tile.mars", 9)), + Phobos(new ModDBMDef("phobosblocks", 2)), + Deimos(new ModDBMDef("deimosblocks", 1)), + Ceres(new ModDBMDef("ceresblocks", 1)), + Io(new ModDBMDef("ioblocks", 2)), + Ganymede(new ModDBMDef("ganymedeblocks", 1)), + Callisto(new ModDBMDef("callistoblocks", 1)), + Venus(new ModDBMDef("venusblocks", 1)), + Mercury(new ModDBMDef("mercuryblocks", 2)), + Enceladus(new ModDBMDef("enceladusblocks", 1)), + Titan(new ModDBMDef("titanblocks", 2)), + Oberon(new ModDBMDef("oberonblocks", 2)), + Proteus(new ModDBMDef("proteusblocks", 2)), + Triton(new ModDBMDef("tritonblocks", 2)), + Pluto(new ModDBMDef("plutoblocks", 5)), + MakeMake(new ModDBMDef("makemakegrunt", 1)), + Haumea(new ModDBMDef("haumeablocks")), + CentauriAlpha(new ModDBMDef("acentauribbsubgrunt")), + VegaB(new ModDBMDef("vegabsubgrunt")), + BarnardaC(new ModDBMDef("barnardaCdirt"), new ModDBMDef(Blocks.stone)), + BarnardaE(new ModDBMDef("barnardaEsubgrunt")), + BarnardaF(new ModDBMDef("barnardaFsubgrunt")), + TcetiE(new ModDBMDef("tcetieblocks", 2)), + Miranda(new ModDBMDef("mirandablocks", 2)), + Europa( + // Europa top layer turned off bc ores are too easy to spot + new ModDBMDef("europagrunt", 1), // Europa Ice Layer ~55-65 without top layer + new ModDBMDef(Blocks.water), new ModDBMDef(Blocks.flowing_water), new ModDBMDef(Blocks.ice), // Generates + // directly over + // bedrock + new ModDBMDef(Blocks.packed_ice), // Generates directly over bedrock + new ModDBMDef("europaunderwatergeyser") // Generates directly over bedrock + ), + Neper(new ModDBMDef(Blocks.stone), new ModDBMDef("tile.baseBlockRock", 10)), + Maahes(new ModDBMDef("tile.baseBlockRock", 1)), + Anubis(new ModDBMDef("tile.baseBlockRock", 1)), + Horus(new ModDBMDef(Blocks.obsidian)), + Seth(new ModDBMDef(Blocks.hardened_clay)); + + public final List<ModDBMDef> DBMDefList; + + private DimensionBlockMetaDefinitionList(ModDBMDef... DBMDefArray) { + DBMDefList = Arrays.asList(DBMDefArray); + } +} diff --git a/src/main/java/bloodasp/galacticgreg/api/enums/DimensionDef.java b/src/main/java/bloodasp/galacticgreg/api/enums/DimensionDef.java new file mode 100644 index 0000000000..d5e766b9f7 --- /dev/null +++ b/src/main/java/bloodasp/galacticgreg/api/enums/DimensionDef.java @@ -0,0 +1,228 @@ +package bloodasp.galacticgreg.api.enums; + +import net.minecraft.world.gen.ChunkProviderEnd; + +import bloodasp.galacticgreg.api.Enums; +import bloodasp.galacticgreg.api.ModDimensionDef; + +public enum DimensionDef { + + EndAsteroids(new ModDimensionDef(DimNames.ENDASTEROIDS, ChunkProviderEnd.class, Enums.DimensionType.Asteroid)), + Moon(new ModDimensionDef( + DimNames.MOON, + "micdoodle8.mods.galacticraft.core.world.gen.ChunkProviderMoon", + Enums.DimensionType.Planet, + DimensionBlockMetaDefinitionList.Moon.DBMDefList)), + Mars(new ModDimensionDef( + DimNames.MARS, + "micdoodle8.mods.galacticraft.planets.mars.world.gen.ChunkProviderMars", + Enums.DimensionType.Planet, + DimensionBlockMetaDefinitionList.Mars.DBMDefList)), + Asteroids(new ModDimensionDef( + DimNames.ASTEROIDS, + "micdoodle8.mods.galacticraft.planets.asteroids.world.gen.ChunkProviderAsteroids", + Enums.DimensionType.Asteroid)), + Pluto(new ModDimensionDef( + DimNames.PLUTO, + "galaxyspace.SolarSystem.planets.pluto.dimension.ChunkProviderPluto", + Enums.DimensionType.Planet, + DimensionBlockMetaDefinitionList.Pluto.DBMDefList)), + Triton(new ModDimensionDef( + DimNames.TRITON, + "galaxyspace.SolarSystem.moons.triton.dimension.ChunkProviderTriton", + Enums.DimensionType.Planet, + DimensionBlockMetaDefinitionList.Triton.DBMDefList)), + Proteus(new ModDimensionDef( + DimNames.PROTEUS, + "galaxyspace.SolarSystem.moons.proteus.dimension.ChunkProviderProteus", + Enums.DimensionType.Planet, + DimensionBlockMetaDefinitionList.Proteus.DBMDefList)), + Oberon(new ModDimensionDef( + DimNames.OBERON, + "galaxyspace.SolarSystem.moons.oberon.dimension.ChunkProviderOberon", + Enums.DimensionType.Planet, + DimensionBlockMetaDefinitionList.Oberon.DBMDefList)), + Titan(new ModDimensionDef( + DimNames.TITAN, + "galaxyspace.SolarSystem.moons.titan.dimension.ChunkProviderTitan", + Enums.DimensionType.Planet, + DimensionBlockMetaDefinitionList.Titan.DBMDefList)), + Callisto(new ModDimensionDef( + DimNames.CALLISTO, + "galaxyspace.SolarSystem.moons.callisto.dimension.ChunkProviderCallisto", + Enums.DimensionType.Planet, + DimensionBlockMetaDefinitionList.Callisto.DBMDefList)), + Ganymede(new ModDimensionDef( + DimNames.GANYMEDE, + "galaxyspace.SolarSystem.moons.ganymede.dimension.ChunkProviderGanymede", + Enums.DimensionType.Planet, + DimensionBlockMetaDefinitionList.Ganymede.DBMDefList)), + Ceres(new ModDimensionDef( + DimNames.CERES, + "galaxyspace.SolarSystem.planets.ceres.dimension.ChunkProviderCeres", + Enums.DimensionType.Planet, + DimensionBlockMetaDefinitionList.Ceres.DBMDefList)), + Deimos(new ModDimensionDef( + DimNames.DEIMOS, + "galaxyspace.SolarSystem.moons.deimos.dimension.ChunkProviderDeimos", + Enums.DimensionType.Planet, + DimensionBlockMetaDefinitionList.Deimos.DBMDefList)), + Enceladus(new ModDimensionDef( + DimNames.ENCELADUS, + "galaxyspace.SolarSystem.moons.enceladus.dimension.ChunkProviderEnceladus", + Enums.DimensionType.Planet, + DimensionBlockMetaDefinitionList.Enceladus.DBMDefList)), + Io(new ModDimensionDef( + DimNames.IO, + "galaxyspace.SolarSystem.moons.io.dimension.ChunkProviderIo", + Enums.DimensionType.Planet, + DimensionBlockMetaDefinitionList.Io.DBMDefList)), + Europa(new ModDimensionDef( + DimNames.EUROPA, + "galaxyspace.SolarSystem.moons.europa.dimension.ChunkProviderEuropa", + Enums.DimensionType.Planet, + DimensionBlockMetaDefinitionList.Europa.DBMDefList)), + Phobos(new ModDimensionDef( + DimNames.PHOBOS, + "galaxyspace.SolarSystem.moons.phobos.dimension.ChunkProviderPhobos", + Enums.DimensionType.Planet, + DimensionBlockMetaDefinitionList.Phobos.DBMDefList)), + Venus(new ModDimensionDef( + DimNames.VENUS, + "galaxyspace.SolarSystem.planets.venus.dimension.ChunkProviderVenus", + Enums.DimensionType.Planet, + DimensionBlockMetaDefinitionList.Venus.DBMDefList)), + Mercury(new ModDimensionDef( + DimNames.MERCURY, + "galaxyspace.SolarSystem.planets.mercury.dimension.ChunkProviderMercury", + Enums.DimensionType.Planet, + DimensionBlockMetaDefinitionList.Mercury.DBMDefList)), + MakeMake(new ModDimensionDef( + DimNames.MAKEMAKE, + "galaxyspace.SolarSystem.planets.makemake.dimension.ChunkProviderMakemake", + Enums.DimensionType.Planet, + DimensionBlockMetaDefinitionList.MakeMake.DBMDefList)), + Haumea(new ModDimensionDef( + DimNames.HAUMEA, + "galaxyspace.SolarSystem.planets.haumea.dimension.ChunkProviderHaumea", + Enums.DimensionType.Planet, + DimensionBlockMetaDefinitionList.Haumea.DBMDefList)), + CentauriAlpha(new ModDimensionDef( + DimNames.CENTAURIA, + "galaxyspace.ACentauriSystem.planets.aCentauriBb.dimension.ChunkProviderACentauri", + Enums.DimensionType.Planet, + DimensionBlockMetaDefinitionList.CentauriAlpha.DBMDefList)), + VegaB(new ModDimensionDef( + DimNames.VEGAB, + "galaxyspace.VegaSystem.planets.vegaB.dimension.ChunkProviderVegaB", + Enums.DimensionType.Planet, + DimensionBlockMetaDefinitionList.VegaB.DBMDefList)), + BarnardC(new ModDimensionDef( + DimNames.BARNARDC, + "galaxyspace.BarnardsSystem.planets.barnardaC.dimension.ChunkProviderBarnardaC", + Enums.DimensionType.Planet, + DimensionBlockMetaDefinitionList.BarnardaC.DBMDefList)), + BarnardE(new ModDimensionDef( + DimNames.BARNARDE, + "galaxyspace.BarnardsSystem.planets.barnardaE.dimension.ChunkProviderBarnardaE", + Enums.DimensionType.Planet, + DimensionBlockMetaDefinitionList.BarnardaE.DBMDefList)), + BarnardF(new ModDimensionDef( + DimNames.BARNARDF, + "galaxyspace.BarnardsSystem.planets.barnardaF.dimension.ChunkProviderBarnardaF", + Enums.DimensionType.Planet, + DimensionBlockMetaDefinitionList.BarnardaF.DBMDefList)), + TcetiE(new ModDimensionDef( + DimNames.TCETIE, + "galaxyspace.TCetiSystem.planets.tcetiE.dimension.ChunkProviderTCetiE", + Enums.DimensionType.Planet, + DimensionBlockMetaDefinitionList.TcetiE.DBMDefList)), + Miranda(new ModDimensionDef( + DimNames.MIRANDA, + "galaxyspace.SolarSystem.moons.miranda.dimension.ChunkProviderMiranda", + Enums.DimensionType.Planet, + DimensionBlockMetaDefinitionList.Miranda.DBMDefList)), + KuiperBelt(new ModDimensionDef( + DimNames.KUIPERBELT, + "galaxyspace.SolarSystem.planets.kuiperbelt.dimension.ChunkProviderKuiper", + Enums.DimensionType.Asteroid)), + + Neper(new ModDimensionDef( + DimNames.NEPER, + "de.katzenpapst.amunra.world.neper.NeperChunkProvider", + Enums.DimensionType.Planet, + DimensionBlockMetaDefinitionList.Neper.DBMDefList)), + Maahes(new ModDimensionDef( + DimNames.MAAHES, + "de.katzenpapst.amunra.world.maahes.MaahesChunkProvider", + Enums.DimensionType.Planet, + DimensionBlockMetaDefinitionList.Maahes.DBMDefList)), + Anubis(new ModDimensionDef( + DimNames.ANUBIS, + "de.katzenpapst.amunra.world.anubis.AnubisChunkProvider", + Enums.DimensionType.Planet, + DimensionBlockMetaDefinitionList.Anubis.DBMDefList)), + Horus(new ModDimensionDef( + DimNames.HORUS, + "de.katzenpapst.amunra.world.horus.HorusChunkProvider", + Enums.DimensionType.Planet, + DimensionBlockMetaDefinitionList.Horus.DBMDefList)), + Seth(new ModDimensionDef( + DimNames.SETH, + "de.katzenpapst.amunra.world.seth.SethChunkProvider", + Enums.DimensionType.Planet, + DimensionBlockMetaDefinitionList.Seth.DBMDefList)), + MehenBelt(new ModDimensionDef( + DimNames.MEHENBELT, + "de.katzenpapst.amunra.world.mehen.MehenChunkProvider", + Enums.DimensionType.Asteroid)); + + public static class DimNames { + + public static final String ENDASTEROIDS = "EndAsteroids"; + public static final String MOON = "Moon"; + public static final String MARS = "Mars"; + public static final String ASTEROIDS = "Asteroids"; + public static final String PLUTO = "Pluto"; + public static final String TRITON = "Triton"; + public static final String PROTEUS = "Proteus"; + public static final String OBERON = "Oberon"; + public static final String TITAN = "Titan"; + public static final String ROSS128B = "Ross128b"; + public static final String ROSS128BA = "Ross128ba"; + public static final String CALLISTO = "Callisto"; + public static final String GANYMEDE = "Ganymede"; + public static final String CERES = "Ceres"; + public static final String DEIMOS = "Deimos"; + public static final String ENCELADUS = "Enceladus"; + public static final String IO = "Io"; + public static final String EUROPA = "Europa"; + public static final String PHOBOS = "Phobos"; + public static final String VENUS = "Venus"; + public static final String MERCURY = "Mercury"; + public static final String MAKEMAKE = "MakeMake"; + public static final String HAUMEA = "Haumea"; + public static final String CENTAURIA = "CentauriA"; + public static final String VEGAB = "VegaB"; + public static final String BARNARDC = "BarnardC"; + public static final String BARNARDE = "BarnardE"; + public static final String BARNARDF = "BarnardF"; + public static final String TCETIE = "TcetiE"; + public static final String MIRANDA = "Miranda"; + public static final String KUIPERBELT = "Kuiperbelt"; + public static final String NEPER = "Neper"; + public static final String MAAHES = "Maahes"; + public static final String ANUBIS = "Anubis"; + public static final String HORUS = "Horus"; + public static final String SETH = "Seth"; + public static final String MEHENBELT = "MehenBelt"; + public static final String DEEPDARK = "Underdark"; + + } + + public final ModDimensionDef modDimensionDef; + + private DimensionDef(ModDimensionDef modDimDef) { + this.modDimensionDef = modDimDef; + } +} diff --git a/src/main/java/bloodasp/galacticgreg/api/enums/ModContainers.java b/src/main/java/bloodasp/galacticgreg/api/enums/ModContainers.java new file mode 100644 index 0000000000..ed81f56f04 --- /dev/null +++ b/src/main/java/bloodasp/galacticgreg/api/enums/ModContainers.java @@ -0,0 +1,19 @@ +package bloodasp.galacticgreg.api.enums; + +import bloodasp.galacticgreg.api.ModContainer; +import gregtech.api.enums.Mods; + +public enum ModContainers { + + GalactiCraftCore(new ModContainer(Mods.GalacticraftCore.ID)), + GalacticraftMars(new ModContainer(Mods.GalacticraftMars.ID)), + GalaxySpace(new ModContainer(Mods.GalaxySpace.ID)), + AmunRa(new ModContainer("GalacticraftAmunRa")), + Vanilla(new ModContainer("Vanilla")); + + public final ModContainer modContainer; + + private ModContainers(ModContainer modContainer) { + this.modContainer = modContainer; + } +} diff --git a/src/main/java/bloodasp/galacticgreg/api/enums/properties/AsteroidPropertyBuilder.java b/src/main/java/bloodasp/galacticgreg/api/enums/properties/AsteroidPropertyBuilder.java new file mode 100644 index 0000000000..82d8b99b41 --- /dev/null +++ b/src/main/java/bloodasp/galacticgreg/api/enums/properties/AsteroidPropertyBuilder.java @@ -0,0 +1,105 @@ +package bloodasp.galacticgreg.api.enums.properties; + +public class AsteroidPropertyBuilder { + + public int probability; + public int sizeMin, sizeMax; + public int specialBlockChance; + public OreSpawnPropertyBuilder oreSpawn; + public LootPropertyBuilder loot; + + public static class OreSpawnPropertyBuilder { + + public int baseOreChance; + public boolean obeyHeighLimits; + public boolean oresOnlyInsideAsteroids; + public int primaryToRareOreOffset; + public int smallOreChance; + + public OreSpawnPropertyBuilder baseOreChance(int baseOreChance) { + this.baseOreChance = baseOreChance; + return this; + } + + public OreSpawnPropertyBuilder doesObeyingHeightLimits(boolean obeyHeighLimits) { + this.obeyHeighLimits = obeyHeighLimits; + return this; + } + + public OreSpawnPropertyBuilder AreOresOnlyInsideAsteroids(boolean oresOnlyInsideAsteroids) { + this.oresOnlyInsideAsteroids = oresOnlyInsideAsteroids; + return this; + } + + public OreSpawnPropertyBuilder primaryToRareOreOffset(int primaryToRareOreOffset) { + this.primaryToRareOreOffset = primaryToRareOreOffset; + return this; + } + + public OreSpawnPropertyBuilder smallOreChance(int smallOreChance) { + this.smallOreChance = smallOreChance; + return this; + } + + } + + public static class LootPropertyBuilder { + + public int lootChestChance; + public int lootChestItemCount; + public int lootChestTable; + public boolean randomizeLootItemCount; + + public LootPropertyBuilder lootChestChance(int lootChestChance) { + this.lootChestChance = lootChestChance; + return this; + } + + public LootPropertyBuilder lootChestItemCount(int lootChestItemCount) { + this.lootChestItemCount = lootChestItemCount; + return this; + } + + public LootPropertyBuilder lootChestTable(int lootChestTable) { + this.lootChestTable = lootChestTable; + return this; + } + + public LootPropertyBuilder isLootItemCountRandomized(boolean randomizeLootItemCount) { + this.randomizeLootItemCount = randomizeLootItemCount; + return this; + } + + } + + public AsteroidPropertyBuilder() { + oreSpawn = new OreSpawnPropertyBuilder(); + loot = new LootPropertyBuilder(); + } + + public AsteroidPropertyBuilder probability(int probability) { + this.probability = probability; + return this; + } + + public AsteroidPropertyBuilder sizeRange(int sizeMin, int sizeMax) { + this.sizeMin = sizeMin; + this.sizeMax = sizeMax; + return this; + } + + public AsteroidPropertyBuilder specialBlockChance(int specialBlockChance) { + this.specialBlockChance = specialBlockChance; + return this; + } + + public AsteroidPropertyBuilder oreSpawn(OreSpawnPropertyBuilder oreSpawnPropertyBuilder) { + this.oreSpawn = oreSpawnPropertyBuilder; + return this; + } + + public AsteroidPropertyBuilder loot(LootPropertyBuilder lootPropertyBuilder) { + this.loot = lootPropertyBuilder; + return this; + } +} diff --git a/src/main/java/bloodasp/galacticgreg/api/enums/properties/Asteroids.java b/src/main/java/bloodasp/galacticgreg/api/enums/properties/Asteroids.java new file mode 100644 index 0000000000..6a305407cd --- /dev/null +++ b/src/main/java/bloodasp/galacticgreg/api/enums/properties/Asteroids.java @@ -0,0 +1,78 @@ +package bloodasp.galacticgreg.api.enums.properties; + +import bloodasp.galacticgreg.api.enums.DimensionDef; +import bloodasp.galacticgreg.api.enums.ModContainers; + +public enum Asteroids { + + // spotless : off + EndAsteroids(ModContainers.Vanilla, DimensionDef.EndAsteroids, new AsteroidPropertyBuilder().probability(200) + .sizeRange(5, 15) + .specialBlockChance(5) + .oreSpawn( + new AsteroidPropertyBuilder.OreSpawnPropertyBuilder().baseOreChance(5) + .doesObeyingHeightLimits(false) + .AreOresOnlyInsideAsteroids(false) + .primaryToRareOreOffset(5) + .smallOreChance(10)) + .loot( + new AsteroidPropertyBuilder.LootPropertyBuilder().lootChestChance(1) + .lootChestItemCount(10) + .lootChestTable(3) + .isLootItemCountRandomized(true))), + KuiperBelt(ModContainers.GalaxySpace, DimensionDef.KuiperBelt, new AsteroidPropertyBuilder().probability(200) + .sizeRange(5, 15) + .specialBlockChance(5) + .oreSpawn( + new AsteroidPropertyBuilder.OreSpawnPropertyBuilder().baseOreChance(5) + .doesObeyingHeightLimits(false) + .AreOresOnlyInsideAsteroids(false) + .primaryToRareOreOffset(5) + .smallOreChance(10)) + .loot( + new AsteroidPropertyBuilder.LootPropertyBuilder().lootChestChance(1) + .lootChestItemCount(10) + .lootChestTable(3) + .isLootItemCountRandomized(true))), + MehenBelt(ModContainers.AmunRa, DimensionDef.MehenBelt, new AsteroidPropertyBuilder().probability(200) + .sizeRange(5, 15) + .specialBlockChance(5) + .oreSpawn( + new AsteroidPropertyBuilder.OreSpawnPropertyBuilder().baseOreChance(5) + .doesObeyingHeightLimits(false) + .AreOresOnlyInsideAsteroids(false) + .primaryToRareOreOffset(5) + .smallOreChance(10)) + .loot( + new AsteroidPropertyBuilder.LootPropertyBuilder().lootChestChance(1) + .lootChestItemCount(10) + .lootChestTable(3) + .isLootItemCountRandomized(true))), + Asteroids(ModContainers.GalacticraftMars, DimensionDef.Asteroids, new AsteroidPropertyBuilder().probability(200) + .sizeRange(5, 15) + .specialBlockChance(5) + .oreSpawn( + new AsteroidPropertyBuilder.OreSpawnPropertyBuilder().baseOreChance(5) + .doesObeyingHeightLimits(false) + .AreOresOnlyInsideAsteroids(false) + .primaryToRareOreOffset(5) + .smallOreChance(10)) + .loot( + new AsteroidPropertyBuilder.LootPropertyBuilder().lootChestChance(1) + .lootChestItemCount(10) + .lootChestTable(3) + .isLootItemCountRandomized(true))),; + + // spotless : on + + public ModContainers modContainers; + public DimensionDef dimensionDef; + public AsteroidPropertyBuilder asteroidPropertyBuilder; + + private Asteroids(ModContainers modContainers, DimensionDef dimensionDef, + AsteroidPropertyBuilder asteroidPropertyBuilder) { + this.modContainers = modContainers; + this.dimensionDef = dimensionDef; + this.asteroidPropertyBuilder = asteroidPropertyBuilder; + } +} diff --git a/src/main/java/bloodasp/galacticgreg/bartworks/BW_Worldgen_Ore_Layer_Space.java b/src/main/java/bloodasp/galacticgreg/bartworks/BW_Worldgen_Ore_Layer_Space.java deleted file mode 100644 index 822c9dfa59..0000000000 --- a/src/main/java/bloodasp/galacticgreg/bartworks/BW_Worldgen_Ore_Layer_Space.java +++ /dev/null @@ -1,253 +0,0 @@ -package bloodasp.galacticgreg.bartworks; - -import static bloodasp.galacticgreg.GalacticGreg.oreVeinWorldgenList; - -import java.util.Map; -import java.util.Random; -import java.util.stream.Collectors; - -import net.minecraft.block.Block; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import net.minecraft.world.chunk.IChunkProvider; - -import com.github.bartimaeusnek.bartworks.system.material.BW_MetaGeneratedOreTE; -import com.github.bartimaeusnek.bartworks.system.material.BW_MetaGenerated_Ores; -import com.github.bartimaeusnek.bartworks.system.material.BW_MetaGenerated_SmallOres; -import com.github.bartimaeusnek.bartworks.system.material.Werkstoff; -import com.github.bartimaeusnek.bartworks.system.oregen.BW_OreLayer; - -import bloodasp.galacticgreg.GT_TileEntity_Ores_Space; -import bloodasp.galacticgreg.api.Enums; -import bloodasp.galacticgreg.api.ModDBMDef; -import bloodasp.galacticgreg.api.ModDimensionDef; -import bloodasp.galacticgreg.dynconfig.DynamicOreMixWorldConfig; -import bloodasp.galacticgreg.registry.GalacticGregRegistry; -import gregtech.api.GregTech_API; -import gregtech.api.enums.Materials; -import gregtech.api.interfaces.ISubTagContainer; -import gregtech.common.blocks.GT_TileEntity_Ores; - -public class BW_Worldgen_Ore_Layer_Space extends BW_OreLayer { - - private ModDimensionDef pDimensionDef; - private String name; - private DynamicOreMixWorldConfig _mDynWorldConfig; - - /** - * Code-only Constructor Will work with NEI - * - * @param aName veinname, should start with mix. - * @param pDefault enabled? - * @param pMinY - * @param pMaxY - * @param pWeight - * @param pDensity - * @param pSize 5-32 at max - * @param primaryBW either a werkstoff or a materials - * @param secondaryBW either a werkstoff or a materials - * @param betweenBW either a werkstoff or a materials - * @param sporadicBW either a werkstoff or a materials - */ - public BW_Worldgen_Ore_Layer_Space(String aName, boolean pDefault, int pMinY, int pMaxY, int pWeight, int pDensity, - int pSize, ISubTagContainer primaryBW, ISubTagContainer secondaryBW, ISubTagContainer betweenBW, - ISubTagContainer sporadicBW) { - super(aName, pDefault, 0, 0, 0, 0, 0, primaryBW, secondaryBW, betweenBW, sporadicBW); - mMinY = ((short) GregTech_API.sWorldgenFile - .get("worldgen.GaGregBartworks." + this.mWorldGenName, "MinHeight", pMinY)); - mMaxY = ((short) Math.max( - this.mMinY + 5, - GregTech_API.sWorldgenFile.get("worldgen.GaGregBartworks." + this.mWorldGenName, "MaxHeight", pMaxY))); - mWeight = ((short) GregTech_API.sWorldgenFile - .get("worldgen.GaGregBartworks." + this.mWorldGenName, "RandomWeight", pWeight)); - mDensity = ((short) GregTech_API.sWorldgenFile - .get("worldgen.GaGregBartworks." + this.mWorldGenName, "Density", pDensity)); - mSize = ((short) Math - .max(1, GregTech_API.sWorldgenFile.get("worldgen.GaGregBartworks." + this.mWorldGenName, "Size", pSize))); - if (mEnabled) { - sWeight += this.mWeight; - oreVeinWorldgenList.add(this); - } - _mDynWorldConfig = new DynamicOreMixWorldConfig(mWorldGenName, true); - _mDynWorldConfig.InitDynamicConfig(); - - StringBuilder ret = new StringBuilder(); - for (Map.Entry<String, Boolean> key : _mDynWorldConfig.get_mDynWorldConfigMap() - .entrySet() - .stream() - .filter(Map.Entry::getValue) - .collect(Collectors.toSet())) - ret.append( - key.getKey() - .split("_")[1]) - .append("; "); - name = ret.substring(0, ret.length() - 1); - } - - /** - * Script Friendly Constructor, WONT WORK WITH NEI - * - * @param aName - * @param pDefault - * @param pMinY - * @param pMaxY - * @param pWeight - * @param pDensity - * @param pSize - * @param pPrimary - * @param pSecondary - * @param pBetween - * @param pSporadic - * @param primaryBW - * @param secondaryBW - * @param betweenBW - * @param sporadicBW - */ - public BW_Worldgen_Ore_Layer_Space(String aName, boolean pDefault, int pMinY, int pMaxY, int pWeight, int pDensity, - int pSize, int pPrimary, int pSecondary, int pBetween, int pSporadic, boolean primaryBW, boolean secondaryBW, - boolean betweenBW, boolean sporadicBW) { - super( - aName, - pDefault, - 0, - 0, - 0, - 0, - 0, - primaryBW ? Werkstoff.default_null_Werkstoff : Materials._NULL, - secondaryBW ? Werkstoff.default_null_Werkstoff : Materials._NULL, - betweenBW ? Werkstoff.default_null_Werkstoff : Materials._NULL, - sporadicBW ? Werkstoff.default_null_Werkstoff : Materials._NULL); - mMinY = ((short) GregTech_API.sWorldgenFile - .get("worldgen.GaGregBartworks." + this.mWorldGenName, "MinHeight", pMinY)); - mMaxY = ((short) Math.max( - this.mMinY + 5, - GregTech_API.sWorldgenFile.get("worldgen.GaGregBartworks." + this.mWorldGenName, "MaxHeight", pMaxY))); - mWeight = ((short) GregTech_API.sWorldgenFile - .get("worldgen.GaGregBartworks." + this.mWorldGenName, "RandomWeight", pWeight)); - mDensity = ((short) GregTech_API.sWorldgenFile - .get("worldgen.GaGregBartworks." + this.mWorldGenName, "Density", pDensity)); - mSize = ((short) Math - .max(1, GregTech_API.sWorldgenFile.get("worldgen.GaGregBartworks." + this.mWorldGenName, "Size", pSize))); - mPrimaryMeta = ((short) GregTech_API.sWorldgenFile - .get("worldgen.GaGregBartworks." + this.mWorldGenName, "OrePrimaryLayer", pPrimary)); - mSecondaryMeta = ((short) GregTech_API.sWorldgenFile - .get("worldgen.GaGregBartworks." + this.mWorldGenName, "OreSecondaryLayer", pSecondary)); - mBetweenMeta = ((short) GregTech_API.sWorldgenFile - .get("worldgen.GaGregBartworks." + this.mWorldGenName, "OreSporadiclyInbetween", pBetween)); - mSporadicMeta = ((short) GregTech_API.sWorldgenFile - .get("worldgen.GaGregBartworks." + this.mWorldGenName, "OreSporaticlyAround", pSporadic)); - bwOres = ((byte) GregTech_API.sWorldgenFile - .get("worldgen.GaGregBartworks." + this.mWorldGenName, "BWGTlogic", bwOres)); - _mDynWorldConfig = new DynamicOreMixWorldConfig(mWorldGenName, true); - _mDynWorldConfig.InitDynamicConfig(); - StringBuilder ret = new StringBuilder(); - for (Map.Entry<String, Boolean> key : _mDynWorldConfig.get_mDynWorldConfigMap() - .entrySet() - .stream() - .filter(Map.Entry::getValue) - .collect(Collectors.toSet())) - ret.append( - key.getKey() - .split("_")[1]) - .append("; "); - name = ret.length() == 0 ? "" : ret.substring(0, ret.length() - 1); - if (mEnabled) { - sWeight += this.mWeight; - oreVeinWorldgenList.add(this); - } - } - - /** - * Script Friendly Constructor, WONT WORK WITH NEI - * - * @param aName - * @param enabled - */ - public BW_Worldgen_Ore_Layer_Space(String aName, boolean enabled) { - this(aName, enabled, 0, 0, 0, 0, 0, 0, 0, 0, 0, true, true, true, true); - } - - public boolean isEnabledForDim(ModDimensionDef pDimensionDef) { - return _mDynWorldConfig.isEnabledInDim(pDimensionDef); - } - - @Override - public boolean executeWorldgen(World aWorld, Random aRandom, String aBiome, int aDimensionType, int aChunkX, - int aChunkZ, IChunkProvider aChunkGenerator, IChunkProvider aChunkProvider) { - ModDimensionDef tMDD = GalacticGregRegistry.getDimensionTypeByChunkGenerator(aChunkGenerator); - if (tMDD == null) return false; - pDimensionDef = tMDD; - return super.executeWorldgen( - aWorld, - aRandom, - aBiome, - aDimensionType, - aChunkX, - aChunkZ, - aChunkGenerator, - aChunkProvider); - } - - public boolean setOreBlock(World aWorld, int aX, int aY, int aZ, int aMetaData, boolean isSmallOre) { - TileEntity te = aWorld.getTileEntity(aX, aY, aZ); - if (!(te instanceof BW_MetaGeneratedOreTE) && !(te instanceof GT_TileEntity_Ores)) { - if (aMetaData == this.mSporadicMeta && (this.bwOres & 1) != 0 - || aMetaData == this.mBetweenMeta && (this.bwOres & 2) != 0 - || aMetaData == this.mPrimaryMeta && (this.bwOres & 8) != 0 - || aMetaData == this.mSecondaryMeta && (this.bwOres & 4) != 0) { - boolean wasSet; - for (ModDBMDef e : pDimensionDef.getReplaceableBlocks()) { - wasSet = isSmallOre - ? BW_MetaGenerated_SmallOres.setOreBlock( - aWorld, - aX, - aY, - aZ, - aMetaData, - pDimensionDef.getAirSetting() == Enums.AirReplaceRule.AllowReplaceAir, - (Block) Block.blockRegistry.getObject(e.getBlockName()), - new int[] { e.getMeta() }) - : BW_MetaGenerated_Ores.setOreBlock( - aWorld, - aX, - aY, - aZ, - aMetaData, - pDimensionDef.getAirSetting() == Enums.AirReplaceRule.AllowReplaceAir, - (Block) Block.blockRegistry.getObject(e.getBlockName()), - new int[] { e.getMeta() }); - if (wasSet) return true; - } - return false; - } else { - return GT_TileEntity_Ores_Space.setOuterSpaceOreBlock( - pDimensionDef, - aWorld, - aX, - aY, - aZ, - aMetaData, - pDimensionDef.getAirSetting() == Enums.AirReplaceRule.AllowReplaceAir); - } - } else { - return true; - } - } - - @Override - public Block getDefaultBlockToReplace() { - return null; - } - - @Override - public int[] getDefaultDamageToReplace() { - return null; - } - - @Override - public String getDimName() { - return name; - } - -} diff --git a/src/main/java/bloodasp/galacticgreg/bartworks/BW_Worldgen_Ore_SmallOre_Space.java b/src/main/java/bloodasp/galacticgreg/bartworks/BW_Worldgen_Ore_SmallOre_Space.java deleted file mode 100644 index 78f169e054..0000000000 --- a/src/main/java/bloodasp/galacticgreg/bartworks/BW_Worldgen_Ore_SmallOre_Space.java +++ /dev/null @@ -1,165 +0,0 @@ -package bloodasp.galacticgreg.bartworks; - -import static bloodasp.galacticgreg.GalacticGreg.smallOreWorldgenList; - -import java.util.Map; -import java.util.Random; -import java.util.stream.Collectors; - -import net.minecraft.block.Block; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import net.minecraft.world.chunk.IChunkProvider; - -import com.github.bartimaeusnek.bartworks.system.material.BW_MetaGeneratedOreTE; -import com.github.bartimaeusnek.bartworks.system.material.BW_MetaGenerated_Ores; -import com.github.bartimaeusnek.bartworks.system.material.BW_MetaGenerated_SmallOres; -import com.github.bartimaeusnek.bartworks.system.material.Werkstoff; -import com.github.bartimaeusnek.bartworks.system.oregen.BW_OreLayer; - -import bloodasp.galacticgreg.GT_TileEntity_Ores_Space; -import bloodasp.galacticgreg.api.Enums; -import bloodasp.galacticgreg.api.ModDBMDef; -import bloodasp.galacticgreg.api.ModDimensionDef; -import bloodasp.galacticgreg.dynconfig.DynamicOreMixWorldConfig; -import bloodasp.galacticgreg.registry.GalacticGregRegistry; -import gregtech.api.GregTech_API; -import gregtech.api.enums.Materials; -import gregtech.api.interfaces.ISubTagContainer; -import gregtech.common.blocks.GT_TileEntity_Ores; - -public class BW_Worldgen_Ore_SmallOre_Space extends BW_OreLayer { - - private ModDimensionDef pDimensionDef; - private DynamicOreMixWorldConfig _mDynWorldConfig; - private String name; - - public BW_Worldgen_Ore_SmallOre_Space(String aName, boolean pDefault, int pMinY, int pMaxY, int pDensity, - int pPrimary, ISubTagContainer primaryBW) { - super(aName, pDefault, 0, 0, 0, 0, 0, primaryBW, Materials._NULL, Materials._NULL, Materials._NULL); - mMinY = ((short) GregTech_API.sWorldgenFile - .get("worldgen.GaGregBartworks." + this.mWorldGenName, "MinHeight", pMinY)); - mMaxY = ((short) Math.max( - this.mMinY + 1, - GregTech_API.sWorldgenFile.get("worldgen.GaGregBartworks." + this.mWorldGenName, "MaxHeight", pMaxY))); - mDensity = ((short) Math.max( - 1, - GregTech_API.sWorldgenFile.get("worldgen.GaGregBartworks." + this.mWorldGenName, "Amount", pDensity))); - mPrimaryMeta = ((short) GregTech_API.sWorldgenFile - .get("worldgen.GaGregBartworks." + this.mWorldGenName, "Meta", pPrimary)); - bwOres = ((byte) GregTech_API.sWorldgenFile - .get("worldgen.GaGregBartworks." + this.mWorldGenName, "BWGTlogic", bwOres)); - _mDynWorldConfig = new DynamicOreMixWorldConfig(mWorldGenName, true); - _mDynWorldConfig.InitDynamicConfig(); - StringBuilder ret = new StringBuilder(); - for (Map.Entry<String, Boolean> key : _mDynWorldConfig.get_mDynWorldConfigMap() - .entrySet() - .stream() - .filter(Map.Entry::getValue) - .collect(Collectors.toSet())) - ret.append( - key.getKey() - .split("_")[1]) - .append("; "); - name = ret.length() == 0 ? "" : ret.substring(0, ret.length() - 1); - if (mEnabled) { - smallOreWorldgenList.add(this); - } - - } - - /** - * Script Friendly Constructor, WONT WORK WITH NEI - * - * @param aName - * @param enabled - */ - public BW_Worldgen_Ore_SmallOre_Space(String aName, boolean enabled) { - this(aName, enabled, 0, 0, 0, 0, enabled ? Werkstoff.default_null_Werkstoff : Materials._NULL); - } - - public boolean isEnabledForDim(ModDimensionDef pDimensionDef) { - return _mDynWorldConfig.isEnabledInDim(pDimensionDef); - } - - @Override - public boolean executeWorldgen(World aWorld, Random aRandom, String aBiome, int aDimensionType, int aChunkX, - int aChunkZ, IChunkProvider aChunkGenerator, IChunkProvider aChunkProvider) { - ModDimensionDef tMDD = GalacticGregRegistry.getDimensionTypeByChunkGenerator(aChunkGenerator); - if (tMDD == null) return false; - pDimensionDef = tMDD; - if (this.mPrimaryMeta > 0) - for (int i = 0, j = Math.max(1, this.mDensity / 2 + aRandom.nextInt(this.mDensity) / 2); i < j; i++) { - this.setOreBlock( - aWorld, - aChunkX + aRandom.nextInt(16), - this.mMinY + aRandom.nextInt(Math.max(1, this.mMaxY - this.mMinY)), - aChunkZ + aRandom.nextInt(16), - this.mPrimaryMeta, - true); - } - return true; - } - - @Override - public boolean setOreBlock(World aWorld, int aX, int aY, int aZ, int aMetaData, boolean isSmallOre) { - TileEntity te = aWorld.getTileEntity(aX, aY, aZ); - if (!(te instanceof BW_MetaGeneratedOreTE) && !(te instanceof GT_TileEntity_Ores)) { - if (aMetaData == this.mSporadicMeta && (this.bwOres & 1) != 0 - || aMetaData == this.mBetweenMeta && (this.bwOres & 2) != 0 - || aMetaData == this.mPrimaryMeta && (this.bwOres & 8) != 0 - || aMetaData == this.mSecondaryMeta && (this.bwOres & 4) != 0) { - boolean wasSet; - for (ModDBMDef e : pDimensionDef.getReplaceableBlocks()) { - wasSet = isSmallOre - ? BW_MetaGenerated_SmallOres.setOreBlock( - aWorld, - aX, - aY, - aZ, - aMetaData, - pDimensionDef.getAirSetting() == Enums.AirReplaceRule.AllowReplaceAir, - (Block) Block.blockRegistry.getObject(e.getBlockName()), - new int[] { e.getMeta() }) - : BW_MetaGenerated_Ores.setOreBlock( - aWorld, - aX, - aY, - aZ, - aMetaData, - pDimensionDef.getAirSetting() == Enums.AirReplaceRule.AllowReplaceAir, - (Block) Block.blockRegistry.getObject(e.getBlockName()), - new int[] { e.getMeta() }); - if (wasSet) return true; - } - return false; - } else { - return GT_TileEntity_Ores_Space.setOuterSpaceOreBlock( - pDimensionDef, - aWorld, - aX, - aY, - aZ, - aMetaData, - pDimensionDef.getAirSetting() == Enums.AirReplaceRule.AllowReplaceAir); - } - } else { - return true; - } - } - - @Override - public Block getDefaultBlockToReplace() { - return null; - } - - @Override - public int[] getDefaultDamageToReplace() { - return null; - } - - @Override - public String getDimName() { - return name; - } -} 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; - } - } -} diff --git a/src/main/java/bloodasp/galacticgreg/registry/GalacticGregRegistry.java b/src/main/java/bloodasp/galacticgreg/registry/GalacticGregRegistry.java index b45353da6e..cc0a8146ab 100644 --- a/src/main/java/bloodasp/galacticgreg/registry/GalacticGregRegistry.java +++ b/src/main/java/bloodasp/galacticgreg/registry/GalacticGregRegistry.java @@ -1,5 +1,7 @@ package bloodasp.galacticgreg.registry; +import static bloodasp.galacticgreg.api.enums.ModContainers.Vanilla; + import java.util.Collection; import java.util.HashMap; import java.util.Map; @@ -27,7 +29,7 @@ public class GalacticGregRegistry { /** * Register new ModContainer in the registry. Call this after you've populated it with Dimensions and Blocks Must be * called from your own PreInit or Init event - * + * * @param pModContainer * @return */ @@ -55,7 +57,7 @@ public class GalacticGregRegistry { /** * Lookup the registered dimensions and try to find the DimensionDefinition that has the ChunkProvider that we have * here - * + * * @param pChunkProvider * @return */ @@ -86,7 +88,7 @@ public class GalacticGregRegistry { /** * Get all registered modcontainers. Can only be done after the initialization process is done - * + * * @return */ public static Collection<ModContainer> getModContainers() { @@ -113,8 +115,9 @@ public class GalacticGregRegistry { */ private static void InitModContainers() { for (ModContainer mc : _mModContainers.values()) { + // todo: rename Vanilla mod container name from "Vanilla" to "minecraft" if (!Loader.isModLoaded(mc.getModName()) && !mc.getModName() - .equalsIgnoreCase("vanilla")) { + .equals(Vanilla.modContainer.getModName())) { GalacticGreg.Logger.warn( "Ignoring ModRegistration for OreGen: [%s], because mod is not loaded. Did you misspell the name?", mc.getModName()); @@ -134,8 +137,7 @@ public class GalacticGregRegistry { .size()); // Register default generator if dimension is asteroid and no generator was added - if (md.getDimensionType() == DimensionType.AsteroidAndPlanet - || md.getDimensionType() == DimensionType.Asteroid) { + if (md.getDimensionType() == DimensionType.Asteroid) { if (md.getSpaceObjectGenerators() .size() == 0) { GalacticGreg.Logger.debug("No generators found, adding build-in ellipsoid generator"); @@ -156,7 +158,7 @@ public class GalacticGregRegistry { /** * Returns ModContainer for given DimensionDefinition - * + * * @param pDimensionDefinition * @return */ |