diff options
| author | Raven Szewczyk <git@eigenraven.me> | 2024-05-24 19:50:35 +0100 |
|---|---|---|
| committer | Raven Szewczyk <git@eigenraven.me> | 2024-05-24 19:50:35 +0100 |
| commit | 6d1b2216464d4dad449ac6fcfec476832224a55e (patch) | |
| tree | 526a0c15f7056313c80e6c0386e025e9b3f61781 /src/main/java/bloodasp/galacticgreg/bartworks | |
| parent | b5d35f40afa606ed1b07061dad82e0521a59c186 (diff) | |
| download | GT5-Unofficial-6d1b2216464d4dad449ac6fcfec476832224a55e.tar.gz GT5-Unofficial-6d1b2216464d4dad449ac6fcfec476832224a55e.tar.bz2 GT5-Unofficial-6d1b2216464d4dad449ac6fcfec476832224a55e.zip | |
Merge addon sources
Diffstat (limited to 'src/main/java/bloodasp/galacticgreg/bartworks')
| -rw-r--r-- | src/main/java/bloodasp/galacticgreg/bartworks/BW_Worldgen_Ore_Layer_Space.java | 271 | ||||
| -rw-r--r-- | src/main/java/bloodasp/galacticgreg/bartworks/BW_Worldgen_Ore_SmallOre_Space.java | 165 |
2 files changed, 436 insertions, 0 deletions
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 new file mode 100644 index 0000000000..ae5e6af7c5 --- /dev/null +++ b/src/main/java/bloodasp/galacticgreg/bartworks/BW_Worldgen_Ore_Layer_Space.java @@ -0,0 +1,271 @@ +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))); + // short pPrimary = primaryBW instanceof Materials ? (short)((Materials)primaryBW).mMetaItemSubID : (primaryBW + // instanceof Werkstoff ? ((Werkstoff)primaryBW).getmID() : 0); + // short pSecondary = secondaryBW instanceof Materials ? (short)((Materials)secondaryBW).mMetaItemSubID : + // (secondaryBW instanceof Werkstoff ? ((Werkstoff)secondaryBW).getmID() : 0); + // short pBetween = betweenBW instanceof Materials ? (short)((Materials)betweenBW).mMetaItemSubID : (betweenBW + // instanceof Werkstoff ? ((Werkstoff)betweenBW).getmID() : 0); + // short pSporadic = sporadicBW instanceof Materials ? (short)((Materials)sporadicBW).mMetaItemSubID : + // (sporadicBW instanceof Werkstoff ? ((Werkstoff)sporadicBW).getmID() : 0); + // 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)); + 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 new file mode 100644 index 0000000000..78f169e054 --- /dev/null +++ b/src/main/java/bloodasp/galacticgreg/bartworks/BW_Worldgen_Ore_SmallOre_Space.java @@ -0,0 +1,165 @@ +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; + } +} |
