diff options
| author | bartimaeusnek <33183715+bartimaeusnek@users.noreply.github.com> | 2019-11-02 16:54:43 +0100 |
|---|---|---|
| committer | bartimaeusnek <33183715+bartimaeusnek@users.noreply.github.com> | 2019-11-02 16:54:43 +0100 |
| commit | 5a1a0af156c7a996984a445b23da7539b540c16e (patch) | |
| tree | e6bea0f16ad4df25af17135fd41126fb7ff9f360 /src/main/java/bloodasp/galacticgreg/bartworks | |
| parent | 978129e4e0d5c9202baa3849824e236210d20ca2 (diff) | |
| download | GT5-Unofficial-5a1a0af156c7a996984a445b23da7539b540c16e.tar.gz GT5-Unofficial-5a1a0af156c7a996984a445b23da7539b540c16e.tar.bz2 GT5-Unofficial-5a1a0af156c7a996984a445b23da7539b540c16e.zip | |
added bartworks integration
Signed-off-by: bartimaeusnek <33183715+bartimaeusnek@users.noreply.github.com>
Diffstat (limited to 'src/main/java/bloodasp/galacticgreg/bartworks')
| -rw-r--r-- | src/main/java/bloodasp/galacticgreg/bartworks/BW_Worldgen_Ore_Layer_Space.java | 107 | ||||
| -rw-r--r-- | src/main/java/bloodasp/galacticgreg/bartworks/BW_Worldgen_Ore_SmallOre_Space.java | 101 |
2 files changed, 208 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..9eeba10987 --- /dev/null +++ b/src/main/java/bloodasp/galacticgreg/bartworks/BW_Worldgen_Ore_Layer_Space.java @@ -0,0 +1,107 @@ +package bloodasp.galacticgreg.bartworks; + +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 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 gregtech.api.GregTech_API; +import gregtech.api.enums.Materials; +import gregtech.common.blocks.GT_TileEntity_Ores; +import net.minecraft.block.Block; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraft.world.chunk.IChunkProvider; + +import java.util.Random; + +import static bloodasp.galacticgreg.GalacticGreg.oreVeinWorldgenList; + +public class BW_Worldgen_Ore_Layer_Space extends BW_OreLayer { + + private ModDimensionDef pDimensionDef; + + private DynamicOreMixWorldConfig _mDynWorldConfig; + + 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)); + if (mEnabled) { + sWeight += this.mWeight; + oreVeinWorldgenList.add(this); + } + _mDynWorldConfig = new DynamicOreMixWorldConfig(mWorldGenName,true); + _mDynWorldConfig.InitDynamicConfig(); + + } + + 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 pDimensionDef.getDimensionName(); + } + + + +} 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..449f60f57a --- /dev/null +++ b/src/main/java/bloodasp/galacticgreg/bartworks/BW_Worldgen_Ore_SmallOre_Space.java @@ -0,0 +1,101 @@ +package bloodasp.galacticgreg.bartworks; + +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 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 gregtech.api.GregTech_API; +import gregtech.api.enums.Materials; +import gregtech.api.interfaces.ISubTagContainer; +import gregtech.common.blocks.GT_TileEntity_Ores; +import net.minecraft.block.Block; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraft.world.chunk.IChunkProvider; + +import java.util.Random; + +import static bloodasp.galacticgreg.GalacticGreg.smallOreWorldgenList; + +public class BW_Worldgen_Ore_SmallOre_Space extends BW_OreLayer { + + private ModDimensionDef pDimensionDef; + private DynamicOreMixWorldConfig _mDynWorldConfig; + 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(); + if (mEnabled) { + smallOreWorldgenList.add(this); + } + } + + 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 new int[0]; + } + + @Override + public String getDimName() { + return null; + } +} |
