From df602b8f36b16fc7695c21ea66deb1a2a34aa8b3 Mon Sep 17 00:00:00 2001 From: Alkalus <3060479+draknyte1@users.noreply.github.com> Date: Sat, 7 Jul 2018 02:32:14 +1000 Subject: + Added 5 new biomes to Australia. % Changes to certain things about Australia. --- .../gtPlusPlus/australia/GTplusplus_Australia.java | 32 +- .../australia/biome/Biome_AustralianDesert.java | 350 -------------------- .../australia/biome/Biome_AustralianDesert2.java | 349 ------------------- .../biome/GenLayerBiomesAustraliaDimension.java | 17 +- .../biome/type/Biome_AustralianDesert.java | 351 ++++++++++++++++++++ .../biome/type/Biome_AustralianDesert2.java | 351 ++++++++++++++++++++ .../biome/type/Biome_AustralianDesert_Ex.java | 54 +++ .../biome/type/Biome_AustralianForest.java | 225 +++++++++++++ .../biome/type/Biome_AustralianOcean.java | 41 +++ .../biome/type/Biome_AustralianOutback.java | 368 +++++++++++++++++++++ .../biome/type/Biome_AustralianPlains.java | 112 +++++++ .../australia/block/AustraliaContentLoader.java | 4 +- .../australia/block/BlockAustraliaSand.java | 6 +- .../australia/block/BlockAustraliaTopSoil.java | 5 +- src/Java/gtPlusPlus/core/lib/CORE.java | 5 + 15 files changed, 1558 insertions(+), 712 deletions(-) delete mode 100644 src/Java/gtPlusPlus/australia/biome/Biome_AustralianDesert.java delete mode 100644 src/Java/gtPlusPlus/australia/biome/Biome_AustralianDesert2.java create mode 100644 src/Java/gtPlusPlus/australia/biome/type/Biome_AustralianDesert.java create mode 100644 src/Java/gtPlusPlus/australia/biome/type/Biome_AustralianDesert2.java create mode 100644 src/Java/gtPlusPlus/australia/biome/type/Biome_AustralianDesert_Ex.java create mode 100644 src/Java/gtPlusPlus/australia/biome/type/Biome_AustralianForest.java create mode 100644 src/Java/gtPlusPlus/australia/biome/type/Biome_AustralianOcean.java create mode 100644 src/Java/gtPlusPlus/australia/biome/type/Biome_AustralianOutback.java create mode 100644 src/Java/gtPlusPlus/australia/biome/type/Biome_AustralianPlains.java (limited to 'src/Java') diff --git a/src/Java/gtPlusPlus/australia/GTplusplus_Australia.java b/src/Java/gtPlusPlus/australia/GTplusplus_Australia.java index 4cccf2c2e6..70e6268e9d 100644 --- a/src/Java/gtPlusPlus/australia/GTplusplus_Australia.java +++ b/src/Java/gtPlusPlus/australia/GTplusplus_Australia.java @@ -11,8 +11,13 @@ import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.relauncher.IFMLLoadingPlugin.MCVersion; import gtPlusPlus.api.objects.Logger; -import gtPlusPlus.australia.biome.Biome_AustralianDesert; -import gtPlusPlus.australia.biome.Biome_AustralianDesert2; +import gtPlusPlus.australia.biome.type.Biome_AustralianDesert; +import gtPlusPlus.australia.biome.type.Biome_AustralianDesert2; +import gtPlusPlus.australia.biome.type.Biome_AustralianDesert_Ex; +import gtPlusPlus.australia.biome.type.Biome_AustralianForest; +import gtPlusPlus.australia.biome.type.Biome_AustralianOcean; +import gtPlusPlus.australia.biome.type.Biome_AustralianOutback; +import gtPlusPlus.australia.biome.type.Biome_AustralianPlains; import gtPlusPlus.australia.block.AustraliaContentLoader; import gtPlusPlus.australia.dimension.Dimension_Australia; import gtPlusPlus.australia.gen.gt.WorldGen_Australia_Ores; @@ -34,7 +39,14 @@ public class GTplusplus_Australia implements ActionListener { // Dark World Handler protected static volatile Biome_AustralianDesert Australian_Desert_Biome_1; - protected static volatile Biome_AustralianDesert2 Australian_Desert_Biome_2; + protected static volatile Biome_AustralianDesert2 Australian_Desert_Biome_2; + + protected static volatile Biome_AustralianDesert_Ex Australian_Desert_Biome_3; + protected static volatile Biome_AustralianForest Australian_Forest_Biome; + protected static volatile Biome_AustralianOcean Australian_Ocean_Biome; + protected static volatile Biome_AustralianOutback Australian_Outback_Biome; + protected static volatile Biome_AustralianPlains Australian_Plains_Biome; + protected static volatile Dimension_Australia Australia_Dimension; public static int globalAustraliaPortalSpawnTimer = 0; @@ -51,14 +63,19 @@ public class GTplusplus_Australia implements ActionListener { Australian_Desert_Biome_1 = (new Biome_AustralianDesert()); Australian_Desert_Biome_2 = (new Biome_AustralianDesert2()); - Australian_Desert_Biome_1.instance = instance; Australian_Desert_Biome_2.instance = instance; - Australian_Desert_Biome_1.preInit(event); Australian_Desert_Biome_2.preInit(event); + Australian_Desert_Biome_3 = (Biome_AustralianDesert_Ex.biome); + Australian_Forest_Biome = (Biome_AustralianForest.biome); + Australian_Ocean_Biome = (Biome_AustralianOcean.biome); + Australian_Outback_Biome = (Biome_AustralianOutback.biome); + Australian_Plains_Biome = Biome_AustralianPlains.biome; + + //Load/Set Custom Ore Gen sCustomWorldgenFile = new GTPP_Config(new Configuration(new File(new File(event.getModConfigurationDirectory(), "GTplusplus"), "Australia.cfg"))); @@ -73,6 +90,11 @@ public class GTplusplus_Australia implements ActionListener { Australian_Desert_Biome_1.load(); Australian_Desert_Biome_2.load(); + Australian_Desert_Biome_3.load(); + Australian_Forest_Biome.load(); + Australian_Ocean_Biome.load(); + Australian_Outback_Biome.load(); + Australian_Plains_Biome.load(); Australia_Dimension.load(); diff --git a/src/Java/gtPlusPlus/australia/biome/Biome_AustralianDesert.java b/src/Java/gtPlusPlus/australia/biome/Biome_AustralianDesert.java deleted file mode 100644 index 646c3c804a..0000000000 --- a/src/Java/gtPlusPlus/australia/biome/Biome_AustralianDesert.java +++ /dev/null @@ -1,350 +0,0 @@ -package gtPlusPlus.australia.biome; - -import java.lang.reflect.Field; -import java.util.Random; - -import cpw.mods.fml.common.event.FMLPreInitializationEvent; -import cpw.mods.fml.common.event.FMLServerStartingEvent; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import gtPlusPlus.api.objects.Logger; -import gtPlusPlus.core.lib.CORE; -import gtPlusPlus.core.util.reflect.ReflectionUtils; -import net.minecraft.block.Block; -import net.minecraft.entity.monster.EntityCreeper; -import net.minecraft.entity.monster.EntitySilverfish; -import net.minecraft.entity.monster.EntitySkeleton; -import net.minecraft.entity.monster.EntitySlime; -import net.minecraft.entity.monster.EntitySpider; -import net.minecraft.entity.monster.EntityWitch; -import net.minecraft.entity.monster.EntityZombie; -import net.minecraft.entity.passive.EntityChicken; -import net.minecraft.entity.passive.EntityCow; -import net.minecraft.entity.passive.EntityHorse; -import net.minecraft.entity.passive.EntitySheep; -import net.minecraft.entity.passive.EntitySquid; -import net.minecraft.entity.passive.EntityWolf; -import net.minecraft.init.Blocks; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenAbstractTree; -import net.minecraft.world.gen.feature.WorldGenerator; -import net.minecraftforge.common.BiomeDictionary; -import net.minecraftforge.common.BiomeManager; - -public class Biome_AustralianDesert { - - public static BiomeGenAustralianDesert biome = new BiomeGenAustralianDesert(); - - public Object instance; - - public static Block blockTopLayer; - public static Block blockSecondLayer; - public static Block blockMainFiller = Blocks.stone; - public static Block blockSecondaryFiller; - public static Block blockFluidLakes; - - public Biome_AustralianDesert() { - } - - public void load() { - BiomeDictionary.registerBiomeType(biome, BiomeDictionary.Type.DESERT); - BiomeDictionary.registerBiomeType(biome, BiomeDictionary.Type.DRY); - BiomeDictionary.registerBiomeType(biome, BiomeDictionary.Type.HOT); - BiomeManager.addSpawnBiome(biome); - } - - public void generateNether(World world, Random random, int chunkX, int chunkZ) { - } - - public void generateSurface(World world, Random random, int chunkX, int chunkZ) { - } - - public void registerRenderers() { - } - - public int addFuel(ItemStack fuel) { - return 0; - } - - public void serverLoad(FMLServerStartingEvent event) { - } - - public void preInit(FMLPreInitializationEvent event) { - } - - static class BiomeGenAustralianDesert extends BiomeGenBase { - @SuppressWarnings("unchecked") - public BiomeGenAustralianDesert() { - super(CORE.AUSTRALIA_BIOME_DESERT_1_ID); - this.setBiomeName("Australian Desert"); - this.setBiomeID(); - this.enableRain = true; - this.enableSnow = false; - this.topBlock = blockTopLayer; - this.fillerBlock = blockSecondLayer; - //this.theBiomeDecorator = new BiomeGenerator_Custom(); - this.theBiomeDecorator.generateLakes = true; - this.theBiomeDecorator.treesPerChunk = 20; - this.theBiomeDecorator.flowersPerChunk = 0; - this.theBiomeDecorator.grassPerChunk = 5; - this.theBiomeDecorator.deadBushPerChunk = 63; - this.theBiomeDecorator.mushroomsPerChunk = 0; - this.theBiomeDecorator.reedsPerChunk = 42; - this.theBiomeDecorator.cactiPerChunk = 56; - this.theBiomeDecorator.sandPerChunk = 84; - this.rainfall = 0.1F; - this.waterColorMultiplier = 13434879; - setHeight(new BiomeGenBase.Height(0.15F, 0.45F)); - this.rootHeight = -0.25f; //Ground level - - this.spawnableMonsterList.clear(); - this.spawnableCreatureList.clear(); - this.spawnableWaterCreatureList.clear(); - this.spawnableCaveCreatureList.clear(); - - this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntityChicken.class, 5, 1, 5)); - this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntityCow.class, 5, 1, 5)); - this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntityCreeper.class, 5, 1, 5)); - this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntityHorse.class, 5, 1, 5)); - this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntitySheep.class, 5, 1, 5)); - this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntitySilverfish.class, 5, 1, 5)); - this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntitySkeleton.class, 5, 1, 5)); - this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntitySlime.class, 5, 1, 5)); - this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntitySpider.class, 5, 1, 5)); - this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntityWitch.class, 5, 1, 5)); - this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntityWolf.class, 5, 1, 5)); - this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntityZombie.class, 5, 1, 5)); - - this.spawnableWaterCreatureList.add(new BiomeGenBase.SpawnListEntry(EntitySquid.class, 5, 1, 5)); - - } - - private synchronized boolean setBiomeID() { - BiomeGenBase[] mTempList; - try { - Field mInternalBiomeList = ReflectionUtils.getField(BiomeGenBase.class, "biomeList"); - Field mClone = mInternalBiomeList; - mTempList = (BiomeGenBase[]) mInternalBiomeList.get(null); - if (mTempList != null){ - mTempList[CORE.AUSTRALIA_BIOME_DESERT_1_ID] = this; - mInternalBiomeList.set(null, mTempList); - if (mTempList != mInternalBiomeList.get(null)){ - ReflectionUtils.setFinalStatic(mInternalBiomeList, mTempList); - Logger.REFLECTION("Set Biome ID for "+this.biomeName+" Biome internally in 'biomeList' field from "+BiomeGenBase.class.getCanonicalName()+"."); - return true; - } - else { - Logger.REFLECTION("Failed to set Biome ID for "+this.biomeName+" Biome internally in 'biomeList' field from "+BiomeGenBase.class.getCanonicalName()+"."); - } - } - return false; - } - catch (Exception e) { - Logger.REFLECTION("Could not access 'biomeList' field in "+BiomeGenBase.class.getCanonicalName()+"."); - return false; - } - } - - @SideOnly(Side.CLIENT) - public int getBiomeGrassColor() { - return 6697728; - } - - @SideOnly(Side.CLIENT) - public int getBiomeFoliageColor() { - return 6697728; - } - - @SideOnly(Side.CLIENT) - public int getSkyColorByTemp(float par1) { - return 13421772; - } - - @SuppressWarnings({ "unchecked", "unused" }) - private boolean addToMonsterSpawnLists(Class EntityClass, int a, int b, int c){ - //this.spawnableMonsterList.add(new SpawnListEntry(EntityClass, a, b, c)); - this.spawnableCaveCreatureList.add(new SpawnListEntry(EntityClass, a, b, c)); - return true; - } - - @Override - public WorldGenAbstractTree func_150567_a(Random par1Random){ - return (WorldGenAbstractTree)(getRandomWorldGenForTrees(par1Random)); - } - - - //TODO - DOES THIS WORK? - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return new Tree(); - } - - class Tree - extends WorldGenerator - { - private final int minTreeHeight; - private final boolean vinesGrow; - private final int metaWood; - private final int metaLeaves; - - public Tree() - { - super(); - this.minTreeHeight = 5; - this.metaWood = 0; - this.metaLeaves = 0; - this.vinesGrow = false; - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var6 = par2Random.nextInt(3) + this.minTreeHeight; - boolean var7 = true; - if ((par4 >= 1) && (par4 + var6 + 1 <= 256)) - { - for (int var8 = par4; var8 <= par4 + 1 + var6; var8++) - { - byte var9 = 1; - if (var8 == par4) { - var9 = 0; - } - if (var8 >= par4 + 1 + var6 - 2) { - var9 = 2; - } - for (int var10 = par3 - var9; (var10 <= par3 + var9) && (var7); var10++) { - for (int var11 = par5 - var9; (var11 <= par5 + var9) && (var7); var11++) { - if ((var8 >= 0) && (var8 < 256)) - { - Block var12s = par1World.getBlock(var10, var8, var11); - int var12 = Block.getIdFromBlock(var12s); - if ((var12 != 0) && (var12s != Blocks.air) && (var12s != Blocks.grass) && (var12s != Blocks.dirt) && (var12s != Blocks.cactus)) { - var7 = false; - } - } - else - { - var7 = false; - } - } - } - } - if (!var7) { - return false; - } - Block var8s = par1World.getBlock(par3, par4 - 1, par5); - int var8 = Block.getIdFromBlock(var8s); - if (((var8s == Blocks.grass) || (var8s == Blocks.dirt)) && (par4 < 256 - var6 - 1)) - { - par1World.setBlock(par3, par4 - 1, par5, Blocks.dirt, 0, 2); - byte var9 = 3; - byte var18 = 0; - for (int var11 = par4 - var9 + var6; var11 <= par4 + var6; var11++) - { - int var12 = var11 - (par4 + var6); - int var13 = var18 + 1 - var12 / 2; - for (int var14 = par3 - var13; var14 <= par3 + var13; var14++) - { - int var15 = var14 - par3; - for (int var16 = par5 - var13; var16 <= par5 + var13; var16++) - { - int var17 = var16 - par5; - if ((Math.abs(var15) != var13) || (Math.abs(var17) != var13) || ((par2Random.nextInt(2) != 0) && (var12 != 0))) { - par1World.setBlock(var14, var11, var16, Blocks.air, this.metaLeaves, 2); - } - } - } - } - for (int var11 = 0; var11 < var6; var11++) - { - Block var12s = par1World.getBlock(par3, par4 + var11, par5); - int var12 = Block.getIdFromBlock(var12s); - if ((var12 == 0) || (var12s == Blocks.air)) - { - par1World.setBlock(par3, par4 + var11, par5, Blocks.cactus, this.metaWood, 2); - if ((this.vinesGrow) && (var11 > 0)) - { - if ((par2Random.nextInt(3) > 0) && (par1World.isAirBlock(par3 - 1, par4 + var11, par5))) { - par1World.setBlock(par3 - 1, par4 + var11, par5, Blocks.air, 8, 2); - } - if ((par2Random.nextInt(3) > 0) && (par1World.isAirBlock(par3 + 1, par4 + var11, par5))) { - par1World.setBlock(par3 + 1, par4 + var11, par5, Blocks.air, 2, 2); - } - if ((par2Random.nextInt(3) > 0) && (par1World.isAirBlock(par3, par4 + var11, par5 - 1))) { - par1World.setBlock(par3, par4 + var11, par5 - 1, Blocks.air, 1, 2); - } - if ((par2Random.nextInt(3) > 0) && (par1World.isAirBlock(par3, par4 + var11, par5 + 1))) { - par1World.setBlock(par3, par4 + var11, par5 + 1, Blocks.air, 4, 2); - } - } - } - } - if (this.vinesGrow) - { - for (int var11 = par4 - 3 + var6; var11 <= par4 + var6; var11++) - { - int var12 = var11 - (par4 + var6); - int var13 = 2 - var12 / 2; - for (int var14 = par3 - var13; var14 <= par3 + var13; var14++) { - for (int var15 = par5 - var13; var15 <= par5 + var13; var15++) { - if (par1World.getBlock(var14, var11, var15) == Blocks.air) - { - if ((par2Random.nextInt(4) == 0) && - (Block.getIdFromBlock(par1World.getBlock(var14 - 1, var11, var15)) == 0)) { - growVines(par1World, var14 - 1, var11, var15, 8); - } - if ((par2Random.nextInt(4) == 0) && - (Block.getIdFromBlock(par1World.getBlock(var14 + 1, var11, var15)) == 0)) { - growVines(par1World, var14 + 1, var11, var15, 2); - } - if ((par2Random.nextInt(4) == 0) && - (Block.getIdFromBlock(par1World.getBlock(var14, var11, var15 - 1)) == 0)) { - growVines(par1World, var14, var11, var15 - 1, 1); - } - if ((par2Random.nextInt(4) == 0) && - (Block.getIdFromBlock(par1World.getBlock(var14, var11, var15 + 1)) == 0)) { - growVines(par1World, var14, var11, var15 + 1, 4); - } - } - } - } - } - if ((par2Random.nextInt(5) == 0) && (var6 > 5)) { - for (int var11 = 0; var11 < 2; var11++) { - for (int var12 = 0; var12 < 4; var12++) { - if (par2Random.nextInt(4 - var11) == 0) - { - int var13 = par2Random.nextInt(3); - par1World.setBlock(par3 + net.minecraft.util.Direction.offsetX[net.minecraft.util.Direction.rotateOpposite[var12]], par4 + var6 - 5 + var11, par5 + net.minecraft.util.Direction.offsetZ[net.minecraft.util.Direction.rotateOpposite[var12]], Blocks.air, var13 << 2 | var12, 2); - } - } - } - } - } - return true; - } - return false; - } - return false; - } - - private void growVines(World par1World, int par2, int par3, int par4, int par5) - { - par1World.setBlock(par2, par3, par4, Blocks.vine, par5, 2); - int var6 = 4; - for (;;) - { - par3--; - if ((Block.getIdFromBlock(par1World.getBlock(par2, par3, par4)) != 0) || (var6 <= 0)) { - return; - } - par1World.setBlock(par2, par3, par4, Blocks.air, par5, 2); - var6--; - } - } - } - - } - -} diff --git a/src/Java/gtPlusPlus/australia/biome/Biome_AustralianDesert2.java b/src/Java/gtPlusPlus/australia/biome/Biome_AustralianDesert2.java deleted file mode 100644 index 233ca54a72..0000000000 --- a/src/Java/gtPlusPlus/australia/biome/Biome_AustralianDesert2.java +++ /dev/null @@ -1,349 +0,0 @@ -package gtPlusPlus.australia.biome; - -import java.lang.reflect.Field; -import java.util.Random; - -import cpw.mods.fml.common.event.FMLPreInitializationEvent; -import cpw.mods.fml.common.event.FMLServerStartingEvent; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import gtPlusPlus.api.objects.Logger; -import gtPlusPlus.core.lib.CORE; -import gtPlusPlus.core.util.reflect.ReflectionUtils; -import net.minecraft.block.Block; -import net.minecraft.entity.monster.EntityCreeper; -import net.minecraft.entity.monster.EntitySilverfish; -import net.minecraft.entity.monster.EntitySkeleton; -import net.minecraft.entity.monster.EntitySlime; -import net.minecraft.entity.monster.EntitySpider; -import net.minecraft.entity.monster.EntityWitch; -import net.minecraft.entity.monster.EntityZombie; -import net.minecraft.entity.passive.EntityChicken; -import net.minecraft.entity.passive.EntityCow; -import net.minecraft.entity.passive.EntityHorse; -import net.minecraft.entity.passive.EntitySheep; -import net.minecraft.entity.passive.EntitySquid; -import net.minecraft.entity.passive.EntityWolf; -import net.minecraft.init.Blocks; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenAbstractTree; -import net.minecraft.world.gen.feature.WorldGenerator; -import net.minecraftforge.common.BiomeDictionary; -import net.minecraftforge.common.BiomeManager; - -public class Biome_AustralianDesert2 { - - public static BiomeGenAustralianDesert2 biome = new BiomeGenAustralianDesert2(); - - public Object instance; - - public static Block blockTopLayer; - public static Block blockSecondLayer; - public static Block blockMainFiller = Blocks.stone; - public static Block blockSecondaryFiller; - public static Block blockFluidLakes; - - public Biome_AustralianDesert2() { - } - - public void load() { - BiomeDictionary.registerBiomeType(biome, BiomeDictionary.Type.DESERT); - BiomeDictionary.registerBiomeType(biome, BiomeDictionary.Type.DRY); - BiomeDictionary.registerBiomeType(biome, BiomeDictionary.Type.HOT); - BiomeManager.addSpawnBiome(biome); - } - - public void generateNether(World world, Random random, int chunkX, int chunkZ) { - } - - public void generateSurface(World world, Random random, int chunkX, int chunkZ) { - } - - public void registerRenderers() { - } - - public int addFuel(ItemStack fuel) { - return 0; - } - - public void serverLoad(FMLServerStartingEvent event) { - } - - public void preInit(FMLPreInitializationEvent event) { - } - - static class BiomeGenAustralianDesert2 extends BiomeGenBase { - @SuppressWarnings("unchecked") - public BiomeGenAustralianDesert2() { - super(CORE.AUSTRALIA_BIOME_DESERT_2_ID); - this.setBiomeName("Australian Desert II"); - this.setBiomeID(); - this.enableRain = true; - this.enableSnow = false; - this.topBlock = blockTopLayer; - this.fillerBlock = blockSecondLayer; - //this.theBiomeDecorator = new BiomeGenerator_Custom(); - this.theBiomeDecorator.generateLakes = true; - this.theBiomeDecorator.treesPerChunk = 40; - this.theBiomeDecorator.flowersPerChunk = 0; - this.theBiomeDecorator.grassPerChunk = 0; - this.theBiomeDecorator.deadBushPerChunk = 63; - this.theBiomeDecorator.mushroomsPerChunk = 0; - this.theBiomeDecorator.reedsPerChunk = 42; - this.theBiomeDecorator.cactiPerChunk = 84; - this.theBiomeDecorator.sandPerChunk = 84; - this.rainfall = 0.1F; - this.waterColorMultiplier = 13434879; - setHeight(new BiomeGenBase.Height(0.10F, 0.35F)); - this.rootHeight = -0.15f; //Ground level - - this.spawnableMonsterList.clear(); - this.spawnableCreatureList.clear(); - this.spawnableWaterCreatureList.clear(); - this.spawnableCaveCreatureList.clear(); - - this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntityChicken.class, 5, 1, 5)); - this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntityCow.class, 5, 1, 5)); - this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntityCreeper.class, 5, 1, 5)); - this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntityHorse.class, 5, 1, 5)); - this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntitySheep.class, 5, 1, 5)); - this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntitySilverfish.class, 5, 1, 5)); - this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntitySkeleton.class, 5, 1, 5)); - this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntitySlime.class, 5, 1, 5)); - this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntitySpider.class, 5, 1, 5)); - this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntityWitch.class, 5, 1, 5)); - this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntityWolf.class, 5, 1, 5)); - this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntityZombie.class, 5, 1, 5)); - - this.spawnableWaterCreatureList.add(new BiomeGenBase.SpawnListEntry(EntitySquid.class, 5, 1, 5)); - - } - - private synchronized boolean setBiomeID() { - BiomeGenBase[] mTempList; - try { - Field mInternalBiomeList = ReflectionUtils.getField(BiomeGenBase.class, "biomeList"); - Field mClone = mInternalBiomeList; - mTempList = (BiomeGenBase[]) mInternalBiomeList.get(null); - if (mTempList != null){ - mTempList[CORE.AUSTRALIA_BIOME_DESERT_2_ID] = this; - mInternalBiomeList.set(null, mTempList); - if (mTempList != mInternalBiomeList.get(null)){ - ReflectionUtils.setFinalStatic(mInternalBiomeList, mTempList); - Logger.REFLECTION("Set Biome ID for "+this.biomeName+" Biome internally in 'biomeList' field from "+BiomeGenBase.class.getCanonicalName()+"."); - return true; - } - else { - Logger.REFLECTION("Failed to set Biome ID for "+this.biomeName+" Biome internally in 'biomeList' field from "+BiomeGenBase.class.getCanonicalName()+"."); - } - } - return false; - } - catch (Exception e) { - Logger.REFLECTION("Could not access 'biomeList' field in "+BiomeGenBase.class.getCanonicalName()+"."); - return false; - } - } - - @SideOnly(Side.CLIENT) - public int getBiomeGrassColor() { - return 6697728; - } - - @SideOnly(Side.CLIENT) - public int getBiomeFoliageColor() { - return 6697728; - } - - @SideOnly(Side.CLIENT) - public int getSkyColorByTemp(float par1) { - return 13421772; - } - - @SuppressWarnings({ "unchecked", "unused" }) - private boolean addToMonsterSpawnLists(Class EntityClass, int a, int b, int c){ - //this.spawnableMonsterList.add(new SpawnListEntry(EntityClass, a, b, c)); - this.spawnableCaveCreatureList.add(new SpawnListEntry(EntityClass, a, b, c)); - return true; - } - - @Override - public WorldGenAbstractTree func_150567_a(Random par1Random){ - return (WorldGenAbstractTree)(getRandomWorldGenForTrees(par1Random)); - } - - //TODO - DOES THIS WORK? - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return new Tree(); - } - - class Tree - extends WorldGenerator - { - private final int minTreeHeight; - private final boolean vinesGrow; - private final int metaWood; - private final int metaLeaves; - - public Tree() - { - super(); - this.minTreeHeight = 5; - this.metaWood = 0; - this.metaLeaves = 0; - this.vinesGrow = false; - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var6 = par2Random.nextInt(3) + this.minTreeHeight; - boolean var7 = true; - if ((par4 >= 1) && (par4 + var6 + 1 <= 256)) - { - for (int var8 = par4; var8 <= par4 + 1 + var6; var8++) - { - byte var9 = 1; - if (var8 == par4) { - var9 = 0; - } - if (var8 >= par4 + 1 + var6 - 2) { - var9 = 2; - } - for (int var10 = par3 - var9; (var10 <= par3 + var9) && (var7); var10++) { - for (int var11 = par5 - var9; (var11 <= par5 + var9) && (var7); var11++) { - if ((var8 >= 0) && (var8 < 256)) - { - Block var12s = par1World.getBlock(var10, var8, var11); - int var12 = Block.getIdFromBlock(var12s); - if ((var12 != 0) && (var12s != Blocks.air) && (var12s != Blocks.grass) && (var12s != Blocks.dirt) && (var12s != Blocks.cactus)) { - var7 = false; - } - } - else - { - var7 = false; - } - } - } - } - if (!var7) { - return false; - } - Block var8s = par1World.getBlock(par3, par4 - 1, par5); - int var8 = Block.getIdFromBlock(var8s); - if (((var8s == Blocks.grass) || (var8s == Blocks.dirt)) && (par4 < 256 - var6 - 1)) - { - par1World.setBlock(par3, par4 - 1, par5, Blocks.dirt, 0, 2); - byte var9 = 3; - byte var18 = 0; - for (int var11 = par4 - var9 + var6; var11 <= par4 + var6; var11++) - { - int var12 = var11 - (par4 + var6); - int var13 = var18 + 1 - var12 / 2; - for (int var14 = par3 - var13; var14 <= par3 + var13; var14++) - { - int var15 = var14 - par3; - for (int var16 = par5 - var13; var16 <= par5 + var13; var16++) - { - int var17 = var16 - par5; - if ((Math.abs(var15) != var13) || (Math.abs(var17) != var13) || ((par2Random.nextInt(2) != 0) && (var12 != 0))) { - par1World.setBlock(var14, var11, var16, Blocks.air, this.metaLeaves, 2); - } - } - } - } - for (int var11 = 0; var11 < var6; var11++) - { - Block var12s = par1World.getBlock(par3, par4 + var11, par5); - int var12 = Block.getIdFromBlock(var12s); - if ((var12 == 0) || (var12s == Blocks.air)) - { - par1World.setBlock(par3, par4 + var11, par5, Blocks.cactus, this.metaWood, 2); - if ((this.vinesGrow) && (var11 > 0)) - { - if ((par2Random.nextInt(3) > 0) && (par1World.isAirBlock(par3 - 1, par4 + var11, par5))) { - par1World.setBlock(par3 - 1, par4 + var11, par5, Blocks.air, 8, 2); - } - if ((par2Random.nextInt(3) > 0) && (par1World.isAirBlock(par3 + 1, par4 + var11, par5))) { - par1World.setBlock(par3 + 1, par4 + var11, par5, Blocks.air, 2, 2); - } - if ((par2Random.nextInt(3) > 0) && (par1World.isAirBlock(par3, par4 + var11, par5 - 1))) { - par1World.setBlock(par3, par4 + var11, par5 - 1, Blocks.air, 1, 2); - } - if ((par2Random.nextInt(3) > 0) && (par1World.isAirBlock(par3, par4 + var11, par5 + 1))) { - par1World.setBlock(par3, par4 + var11, par5 + 1, Blocks.air, 4, 2); - } - } - } - } - if (this.vinesGrow) - { - for (int var11 = par4 - 3 + var6; var11 <= par4 + var6; var11++) - { - int var12 = var11 - (par4 + var6); - int var13 = 2 - var12 / 2; - for (int var14 = par3 - var13; var14 <= par3 + var13; var14++) { - for (int var15 = par5 - var13; var15 <= par5 + var13; var15++) { - if (par1World.getBlock(var14, var11, var15) == Blocks.air) - { - if ((par2Random.nextInt(4) == 0) && - (Block.getIdFromBlock(par1World.getBlock(var14 - 1, var11, var15)) == 0)) { - growVines(par1World, var14 - 1, var11, var15, 8); - } - if ((par2Random.nextInt(4) == 0) && - (Block.getIdFromBlock(par1World.getBlock(var14 + 1, var11, var15)) == 0)) { - growVines(par1World, var14 + 1, var11, var15, 2); - } - if ((par2Random.nextInt(4) == 0) && - (Block.getIdFromBlock(par1World.getBlock(var14, var11, var15 - 1)) == 0)) { - growVines(par1World, var14, var11, var15 - 1, 1); - } - if ((par2Random.nextInt(4) == 0) && - (Block.getIdFromBlock(par1World.getBlock(var14, var11, var15 + 1)) == 0)) { - growVines(par1World, var14, var11, var15 + 1, 4); - } - } - } - } - } - if ((par2Random.nextInt(5) == 0) && (var6 > 5)) { - for (int var11 = 0; var11 < 2; var11++) { - for (int var12 = 0; var12 < 4; var12++) { - if (par2Random.nextInt(4 - var11) == 0) - { - int var13 = par2Random.nextInt(3); - par1World.setBlock(par3 + net.minecraft.util.Direction.offsetX[net.minecraft.util.Direction.rotateOpposite[var12]], par4 + var6 - 5 + var11, par5 + net.minecraft.util.Direction.offsetZ[net.minecraft.util.Direction.rotateOpposite[var12]], Blocks.air, var13 << 2 | var12, 2); - } - } - } - } - } - return true; - } - return false; - } - return false; - } - - private void growVines(World par1World, int par2, int par3, int par4, int par5) - { - par1World.setBlock(par2, par3, par4, Blocks.vine, par5, 2); - int var6 = 4; - for (;;) - { - par3--; - if ((Block.getIdFromBlock(par1World.getBlock(par2, par3, par4)) != 0) || (var6 <= 0)) { - return; - } - par1World.setBlock(par2, par3, par4, Blocks.air, par5, 2); - var6--; - } - } - } - - } - -} diff --git a/src/Java/gtPlusPlus/australia/biome/GenLayerBiomesAustraliaDimension.java b/src/Java/gtPlusPlus/australia/biome/GenLayerBiomesAustraliaDimension.java index c8ceaa3ed3..56d5291823 100644 --- a/src/Java/gtPlusPlus/australia/biome/GenLayerBiomesAustraliaDimension.java +++ b/src/Java/gtPlusPlus/australia/biome/GenLayerBiomesAustraliaDimension.java @@ -1,12 +1,27 @@ package gtPlusPlus.australia.biome; +import gtPlusPlus.australia.biome.type.Biome_AustralianDesert; +import gtPlusPlus.australia.biome.type.Biome_AustralianDesert2; +import gtPlusPlus.australia.biome.type.Biome_AustralianDesert_Ex; +import gtPlusPlus.australia.biome.type.Biome_AustralianForest; +import gtPlusPlus.australia.biome.type.Biome_AustralianOcean; +import gtPlusPlus.australia.biome.type.Biome_AustralianOutback; +import gtPlusPlus.australia.biome.type.Biome_AustralianPlains; import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.gen.layer.GenLayer; import net.minecraft.world.gen.layer.IntCache; public class GenLayerBiomesAustraliaDimension extends GenLayer { - protected BiomeGenBase[] allowedBiomes = { Biome_AustralianDesert.biome, Biome_AustralianDesert2.biome}; + protected BiomeGenBase[] allowedBiomes = { + /*Biome_AustralianDesert.biome, + Biome_AustralianDesert2.biome,*/ + Biome_AustralianDesert_Ex.biome, + Biome_AustralianOcean.biome, + Biome_AustralianForest.biome, + Biome_AustralianPlains.biome, + Biome_AustralianOutback.biome + }; public GenLayerBiomesAustraliaDimension(long seed) { super(seed); diff --git a/src/Java/gtPlusPlus/australia/biome/type/Biome_AustralianDesert.java b/src/Java/gtPlusPlus/australia/biome/type/Biome_AustralianDesert.java new file mode 100644 index 0000000000..6986c9931d --- /dev/null +++ b/src/Java/gtPlusPlus/australia/biome/type/Biome_AustralianDesert.java @@ -0,0 +1,351 @@ +package gtPlusPlus.australia.biome.type; + +import java.lang.reflect.Field; +import java.util.Random; + +import cpw.mods.fml.common.event.FMLPreInitializationEvent; +import cpw.mods.fml.common.event.FMLServerStartingEvent; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import gtPlusPlus.api.objects.Logger; +import gtPlusPlus.core.lib.CORE; +import gtPlusPlus.core.util.reflect.ReflectionUtils; +import net.minecraft.block.Block; +import net.minecraft.entity.monster.EntityCreeper; +import net.minecraft.entity.monster.EntitySilverfish; +import net.minecraft.entity.monster.EntitySkeleton; +import net.minecraft.entity.monster.EntitySlime; +import net.minecraft.entity.monster.EntitySpider; +import net.minecraft.entity.monster.EntityWitch; +import net.minecraft.entity.monster.EntityZombie; +import net.minecraft.entity.passive.EntityChicken; +import net.minecraft.entity.passive.EntityCow; +import net.minecraft.entity.passive.EntityHorse; +import net.minecraft.entity.passive.EntitySheep; +import net.minecraft.entity.passive.EntitySquid; +import net.minecraft.entity.passive.EntityWolf; +import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import net.minecraft.world.biome.BiomeGenBase; +import net.minecraft.world.gen.feature.WorldGenAbstractTree; +import net.minecraft.world.gen.feature.WorldGenerator; +import net.minecraftforge.common.BiomeDictionary; +import net.minecraftforge.common.BiomeManager; + +public class Biome_AustralianDesert { + + + public Object instance; + + public static Block blockTopLayer; + public static Block blockSecondLayer; + public static Block blockMainFiller = Blocks.stone; + public static Block blockSecondaryFiller; + public static Block blockFluidLakes; + + public Biome_AustralianDesert() { + + } + + public static BiomeGenAustralianDesert biome = new BiomeGenAustralianDesert(); + public void load() { + BiomeDictionary.registerBiomeType(biome, BiomeDictionary.Type.DESERT); + BiomeDictionary.registerBiomeType(biome, BiomeDictionary.Type.DRY); + BiomeDictionary.registerBiomeType(biome, BiomeDictionary.Type.HOT); + BiomeManager.addSpawnBiome(biome); + } + + public void generateNether(World world, Random random, int chunkX, int chunkZ) { + } + + public void generateSurface(World world, Random random, int chunkX, int chunkZ) { + } + + public void registerRenderers() { + } + + public int addFuel(ItemStack fuel) { + return 0; + } + + public void serverLoad(FMLServerStartingEvent event) { + } + + public void preInit(FMLPreInitializationEvent event) { + } + + static class BiomeGenAustralianDesert extends BiomeGenBase { + @SuppressWarnings("unchecked") + public BiomeGenAustralianDesert() { + super(CORE.AUSTRALIA_BIOME_DESERT_1_ID); + this.setBiomeName("Australian Desert"); + this.setBiomeID(); + this.enableRain = true; + this.enableSnow = false; + this.topBlock = blockTopLayer; + this.fillerBlock = blockSecondLayer; + //this.theBiomeDecorator = new BiomeGenerator_Custom(); + this.theBiomeDecorator.generateLakes = true; + this.theBiomeDecorator.treesPerChunk = 20; + this.theBiomeDecorator.flowersPerChunk = 0; + this.theBiomeDecorator.grassPerChunk = 5; + this.theBiomeDecorator.deadBushPerChunk = 63; + this.theBiomeDecorator.mushroomsPerChunk = 0; + this.theBiomeDecorator.reedsPerChunk = 42; + this.theBiomeDecorator.cactiPerChunk = 56; + this.theBiomeDecorator.sandPerChunk = 84; + this.rainfall = 0.1F; + this.waterColorMultiplier = 13434879; + setHeight(new BiomeGenBase.Height(0.15F, 0.45F)); + this.rootHeight = -0.25f; //Ground level + + this.spawnableMonsterList.clear(); + this.spawnableCreatureList.clear(); + this.spawnableWaterCreatureList.clear(); + this.spawnableCaveCreatureList.clear(); + + this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntityChicken.class, 5, 1, 5)); + this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntityCow.class, 5, 1, 5)); + this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntityCreeper.class, 5, 1, 5)); + this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntityHorse.class, 5, 1, 5)); + this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntitySheep.class, 5, 1, 5)); + this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntitySilverfish.class, 5, 1, 5)); + this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntitySkeleton.class, 5, 1, 5)); + this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntitySlime.class, 5, 1, 5)); + this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntitySpider.class, 5, 1, 5)); + this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntityWitch.class, 5, 1, 5)); + this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntityWolf.class, 5, 1, 5)); + this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntityZombie.class, 5, 1, 5)); + + this.spawnableWaterCreatureList.add(new BiomeGenBase.SpawnListEntry(EntitySquid.class, 5, 1, 5)); + + } + + private synchronized boolean setBiomeID() { + BiomeGenBase[] mTempList; + try { + Field mInternalBiomeList = ReflectionUtils.getField(BiomeGenBase.class, "biomeList"); + Field mClone = mInternalBiomeList; + mTempList = (BiomeGenBase[]) mInternalBiomeList.get(null); + if (mTempList != null){ + mTempList[CORE.AUSTRALIA_BIOME_DESERT_1_ID] = this; + mInternalBiomeList.set(null, mTempList); + if (mTempList != mInternalBiomeList.get(null)){ + ReflectionUtils.setFinalStatic(mInternalBiomeList, mTempList); + Logger.REFLECTION("Set Biome ID for "+this.biomeName+" Biome internally in 'biomeList' field from "+BiomeGenBase.class.getCanonicalName()+"."); + return true; + } + else { + Logger.REFLECTION("Failed to set Biome ID for "+this.biomeName+" Biome internally in 'biomeList' field from "+BiomeGenBase.class.getCanonicalName()+"."); + } + } + return false; + } + catch (Exception e) { + Logger.REFLECTION("Could not access 'biomeList' field in "+BiomeGenBase.class.getCanonicalName()+"."); + return false; + } + } + + @SideOnly(Side.CLIENT) + public int getBiomeGrassColor() { + return 6697728; + } + + @SideOnly(Side.CLIENT) + public int getBiomeFoliageColor() { + return 6697728; + } + + @SideOnly(Side.CLIENT) + public int getSkyColorByTemp(float par1) { + return 13421772; + } + + @SuppressWarnings({ "unchecked", "unused" }) + private boolean addToMonsterSpawnLists(Class EntityClass, int a, int b, int c){ + //this.spawnableMonsterList.add(new SpawnListEntry(EntityClass, a, b, c)); + this.spawnableCaveCreatureList.add(new SpawnListEntry(EntityClass, a, b, c)); + return true; + } + + @Override + public WorldGenAbstractTree func_150567_a(Random par1Random){ + return (WorldGenAbstractTree)(getRandomWorldGenForTrees(par1Random)); + } + + + //TODO - DOES THIS WORK? + public WorldGenerator getRandomWorldGenForTrees(Random par1Random) + { + return new Tree(); + } + + class Tree + extends WorldGenAbstractTree + { + private final int minTreeHeight; + private final boolean vinesGrow; + private final int metaWood; + private final int metaLeaves; + + public Tree() + { + super(false); + this.minTreeHeight = 5; + this.metaWood = 0; + this.metaLeaves = 0; + this.vinesGrow = false; + } + + public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) + { + int var6 = par2Random.nextInt(3) + this.minTreeHeight; + boolean var7 = true; + if ((par4 >= 1) && (par4 + var6 + 1 <= 256)) + { + for (int var8 = par4; var8 <= par4 + 1 + var6; var8++) + { + byte var9 = 1; + if (var8 == par4) { + var9 = 0; + } + if (var8 >= par4 + 1 + var6 - 2) { + var9 = 2; + } + for (int var10 = par3 - var9; (var10 <= par3 + var9) && (var7); var10++) { + for (int var11 = par5 - var9; (var11 <= par5 + var9) && (var7); var11++) { + if ((var8 >= 0) && (var8 < 256)) + { + Block var12s = par1World.getBlock(var10, var8, var11); + int var12 = Block.getIdFromBlock(var12s); + if ((var12 != 0) && (var12s != Blocks.air) && (var12s != Blocks.grass) && (var12s != Blocks.dirt) && (var12s != Blocks.cactus)) { + var7 = false; + } + } + else + { + var7 = false; + } + } + } + } + if (!var7) { + return false; + } + Block var8s = par1World.getBlock(par3, par4 - 1, par5); + int var8 = Block.getIdFromBlock(var8s); + if (((var8s == Blocks.grass) || (var8s == Blocks.dirt)) && (par4 < 256 - var6 - 1)) + { + par1World.setBlock(par3, par4 - 1, par5, Blocks.dirt, 0, 2); + byte var9 = 3; + byte var18 = 0; + for (int var11 = par4 - var9 + var6; var11 <= par4 + var6; var11++) + { + int var12 = var11 - (par4 + var6); + int var13 = var18 + 1 - var12 / 2; + for (int var14 = par3 - var13; var14 <= par3 + var13; var14++) + { + int var15 = var14 - par3; + for (int var16 = par5 - var13; var16 <= par5 + var13; var16++) + { + int var17 = var16 - par5; + if ((Math.abs(var15) != var13) || (Math.abs(var17) != var13) || ((par2Random.nextInt(2) != 0) && (var12 != 0))) { + par1World.setBlock(var14, var11, var16, Blocks.air, this.metaLeaves, 2); + } + } + } + } + for (int var11 = 0; var11 < var6; var11++) + { + Block var12s = par1World.getBlock(par3, par4 + var11, par5); + int var12 = Block.getIdFromBlock(var12s); + if ((var12 == 0) || (var12s == Blocks.air)) + { + par1World.setBlock(par3, par4 + var11, par5, Blocks.cactus, this.metaWood, 2); + if ((this.vinesGrow) && (var11 > 0)) + { + if ((par2Random.nextInt(3) > 0) && (par1World.isAirBlock(par3 - 1, par4 + var11, par5))) { + par1World.setBlock(par3 - 1, par4 + var11, par5, Blocks.air, 8, 2); + } + if ((par2Random.nextInt(3) > 0) && (par1World.isAirBlock(par3 + 1, par4 + var11, par5))) { + par1World.setBlock(par3 + 1, par4 + var11, par5, Blocks.air, 2, 2); + } + if ((par2Random.nextInt(3) > 0) && (par1World.isAirBlock(par3, par4 + var11, par5 - 1))) { + par1World.setBlock(par3, par4 + var11, par5 - 1, Blocks.air, 1, 2); + } + if ((par2Random.nextInt(3) > 0) && (par1World.isAirBlock(par3, par4 + var11, par5 + 1))) { + par1World.setBlock(par3, par4 + var11, par5 + 1, Blocks.air, 4, 2); + } + } + } + } + if (this.vinesGrow) + { + for (int var11 = par4 - 3 + var6; var11 <= par4 + var6; var11++) + { + int var12 = var11 - (par4 + var6); + int var13 = 2 - var12 / 2; + for (int var14 = par3 - var13; var14 <= par3 + var13; var14++) { + for (int var15 = par5 - var13; var15 <= par5 + var13; var15++) { + if (par1World.getBlock(var14, var11, var15) == Blocks.air) + { + if ((par2Random.nextInt(4) == 0) && + (Block.getIdFromBlock(par1World.getBlock(var14 - 1, var11, var15)) == 0)) { + growVines(par1World, var14 - 1, var11, var15, 8); + } + if ((par2Random.nextInt(4) == 0) && + (Block.getIdFromBlock(par1World.getBlock(var14 + 1, var11, var15)) == 0)) { + growVines(par1World, var14 + 1, var11, var15, 2); + } + if ((par2Random.nextInt(4) == 0) && + (Block.getIdFromBlock(par1World.getBlock(var14, var11, var15 - 1)) == 0)) { + growVines(par1World, var14, var11, var15 - 1, 1); + } + if ((par2Random.nextInt(4) == 0) && + (Block.getIdFromBlock(par1World.getBlock(var14, var11, var15 + 1)) == 0)) { + growVines(par1World, var14, var11, var15 + 1, 4); + } + } + } + } + } + if ((par2Random.nextInt(5) == 0) && (var6 > 5)) { + for (int var11 = 0; var11 < 2; var11++) { + for (int var12 = 0; var12 < 4; var12++) { + if (par2Random.nextInt(4 - var11) == 0) + { + int var13 = par2Random.nextInt(3); + par1World.setBlock(par3 + net.minecraft.util.Direction.offsetX[net.minecraft.util.Direction.rotateOpposite[var12]], par4 + var6 - 5 + var11, par5 + net.minecraft.util.Direction.offsetZ[net.minecraft.util.Direction.rotateOpposite[var12]], Blocks.air, var13 << 2 | var12, 2); + } + } + } + } + } + return true; + } + return false; + } + return false; + } + + private void growVines(World par1World, int par2, int par3, int par4, int par5) + { + par1World.setBlock(par2, par3, par4, Blocks.vine, par5, 2); + int var6 = 4; + for (;;) + { + par3--; + if ((Block.getIdFromBlock(par1World.getBlock(par2, par3, par4)) != 0) || (var6 <= 0)) { + return; + } + par1World.setBlock(par2, par3, par4, Blocks.air, par5, 2); + var6--; + } + } + } + + } + +} diff --git a/src/Java/gtPlusPlus/australia/biome/type/Biome_AustralianDesert2.java b/src/Java/gtPlusPlus/australia/biome/type/Biome_AustralianDesert2.java new file mode 100644 index 0000000000..003c6cbd93 --- /dev/null +++ b/src/Java/gtPlusPlus/australia/biome/type/Biome_AustralianDesert2.java @@ -0,0 +1,351 @@ +package gtPlusPlus.australia.biome.type; + +import java.lang.reflect.Field; +import java.util.Random; + +import cpw.mods.fml.common.event.FMLPreInitializationEvent; +import cpw.mods.fml.common.event.FMLServerStartingEvent; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import gtPlusPlus.api.objects.Logger; +import gtPlusPlus.core.lib.CORE; +import gtPlusPlus.core.util.math.MathUtils; +import gtPlusPlus.core.util.reflect.ReflectionUtils; +import net.minecraft.block.Block; +import net.minecraft.entity.monster.EntityCreeper; +import net.minecraft.entity.monster.EntitySilverfish; +import net.minecraft.entity.monster.EntitySkeleton; +import net.minecraft.entity.monster.EntitySlime; +import net.minecraft.entity.monster.EntitySpider; +import net.minecraft.entity.monster.EntityWitch; +import net.minecraft.entity.monster.EntityZombie; +import net.minecraft.entity.passive.EntityChicken; +import net.minecraft.entity.passive.EntityCow; +import net.minecraft.entity.passive.EntityHorse; +import net.minecraft.entity.passive.EntitySheep; +import net.minecraft.entity.passive.EntitySquid; +import net.minecraft.entity.passive.EntityWolf; +import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import net.minecraft.world.biome.BiomeGenBase; +import net.minecraft.world.gen.feature.WorldGenAbstractTree; +import net.minecraft.world.gen.feature.WorldGenerator; +import net.minecraftforge.common.BiomeDictionary; +import net.minecraftforge.common.BiomeManager; + +public class Biome_AustralianDesert2 { + + public static BiomeGenAustralianDesert2 biome = new BiomeGenAustralianDesert2(); + + public Object instance; + + public static Block blockTopLayer; + public static Block blockSecondLayer; + public static Block blockMainFiller = Blocks.stone; + public static Block blockSecondaryFiller; + public static Block blockFluidLakes; + + public Biome_AustralianDesert2() { + } + + public void load() { + BiomeDictionary.registerBiomeType(biome, BiomeDictionary.Type.DESERT); + BiomeDictionary.registerBiomeType(biome, BiomeDictionary.Type.DRY); + BiomeDictionary.registerBiomeType(biome, BiomeDictionary.Type.HOT); + BiomeManager.addSpawnBiome(biome); + } + + public void generateNether(World world, Random random, int chunkX, int chunkZ) { + } + + public void generateSurface(World world, Random random, int chunkX, int chunkZ) { + } + + public void registerRenderers() { + } + + public int addFuel(ItemStack fuel) { + return 0; + } + + public void serverLoad(FMLServerStartingEvent event) { + } + + public void preInit(FMLPreInitializationEvent event) { + } + + static class BiomeGenAustralianDesert2 extends BiomeGenBase { + @SuppressWarnings("unchecked") + public BiomeGenAustralianDesert2() { + super(CORE.AUSTRALIA_BIOME_DESERT_2_ID); + this.setBiomeName("Australian Desert II"); + this.setBiomeID(); + this.enableRain = true; + this.enableSnow = false; + this.topBlock = blockTopLayer; + this.fillerBlock = blockSecondLayer; + //this.theBiomeDecorator = new BiomeGenerator_Custom(); + this.theBiomeDecorator.generateLakes = true; + this.theBiomeDecorator.treesPerChunk = 40; + this.theBiomeDecorator.flowersPerChunk = 0; + this.theBiomeDecorator.grassPerChunk = 0; + this.theBiomeDecorator.deadBushPerChunk = 63; + this.theBiomeDecorator.mushroomsPerChunk = 0; + this.theBiomeDecorator.reedsPerChunk = 42; + this.theBiomeDecorator.cactiPerChunk = 84; + this.theBiomeDecorator.sandPerChunk = 84; + this.rainfall = 0.1F; + this.waterColorMultiplier = 13434879; + setHeight(new BiomeGenBase.Height(0.10F, 0.35F)); + this.rootHeight = -0.15f; //Ground level + + this.spawnableMonsterList.clear(); + this.spawnableCreatureList.clear(); + this.spawnableWaterCreatureList.clear(); + this.spawnableCaveCreatureList.clear(); + + this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntityChicken.class, 5, 1, 5)); + this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntityCow.class, 5, 1, 5)); + this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntityCreeper.class, 5, 1, 5)); + this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntityHorse.class, 5, 1, 5)); + this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntitySheep.class, 5, 1, 5)); + this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntitySilverfish.class, 5, 1, 5)); + this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntitySkeleton.class, 5, 1, 5)); + this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntitySlime.class, 5, 1, 5)); + this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntitySpider.class, 5, 1, 5)); + this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntityWitch.class, 5, 1, 5)); + this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntityWolf.class, 5, 1, 5)); + this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntityZombie.class, 5, 1, 5)); + + this.spawnableWaterCreatureList.add(new BiomeGenBase.SpawnListEntry(EntitySquid.class, 5, 1, 5)); + + } + + private synchronized boolean setBiomeID() { + BiomeGenBase[] mTempList; + try { + Field mInternalBiomeList = ReflectionUtils.getField(BiomeGenBase.class, "biomeList"); + Field mClone = mInternalBiomeList; + mTempList = (BiomeGenBase[]) mInternalBiomeList.get(null); + if (mTempList != null){ + mTempList[CORE.AUSTRALIA_BIOME_DESERT_2_ID] = this; + mInternalBiomeList.set(null, mTempList); + if (mTempList != mInternalBiomeList.get(null)){ + ReflectionUtils.setFinalStatic(mInternalBiomeList, mTempList); + Logger.REFLECTION("Set Biome ID for "+this.biomeName+" Biome internally in 'biomeList' field from "+BiomeGenBase.class.getCanonicalName()+"."); + return true; + } + else { + Logger.REFLECTION("Failed to set Biome ID for "+this.biomeName+" Biome internally in 'biomeList' field from "+BiomeGenBase.class.getCanonicalName()+"."); + } + } + return false; + } + catch (Exception e) { + Logger.REFLECTION("Could not access 'biomeList' field in "+BiomeGenBase.class.getCanonicalName()+"."); + return false; + } + } + + @SideOnly(Side.CLIENT) + public int getBiomeGrassColor() { + return 6697728; + } + + @SideOnly(Side.CLIENT) + public int getBiomeFoliageColor() { + return 6697728; + } + + @SideOnly(Side.CLIENT) + public int getSkyColorByTemp(float par1) { + return 13421772; + } + + @SuppressWarnings({ "unchecked", "unused" }) + private boolean addToMonsterSpawnLists(Class EntityClass, int a, int b, int c){ + //this.spawnableMonsterList.add(new SpawnListEntry(EntityClass, a, b, c)); + this.spawnableCaveCreatureList.add(new SpawnListEntry(EntityClass, a, b, c)); + return true; + } + + @Override + public WorldGenAbstractTree func_150567_a(Random par1Random){ + boolean a = (MathUtils.randInt(0, 100) < MathUtils.randInt(30, 65)); + return a ? getRandomWorldGenForTrees(par1Random) : super.func_150567_a(par1Random); + } + + //TODO - DOES THIS WORK? + public WorldGenAbstractTree getRandomWorldGenForTrees(Random par1Random) + { + return new Tree(); + } + + class Tree + extends WorldGenAbstractTree + { + private final int minTreeHeight; + private final boolean vinesGrow; + private final int metaWood; + private final int metaLeaves; + + public Tree() + { + super(false); + this.minTreeHeight = 3; + this.metaWood = 0; + this.metaLeaves = 0; + this.vinesGrow = false; + } + + public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) + { + int var6 = par2Random.nextInt(3) + this.minTreeHeight; + boolean var7 = true; + if ((par4 >= 1) && (par4 + var6 + 1 <= 256)) + { + for (int var8 = par4; var8 <= par4 + 1 + var6; var8++) + { + byte var9 = 1; + if (var8 == par4) { + var9 = 0; + } + if (var8 >= par4 + 1 + var6 - 2) { + var9 = 2; + } + for (int var10 = par3 - var9; (var10 <= par3 + var9) && (var7); var10++) { + for (int var11 = par5 - var9; (var11 <= par5 + var9) && (var7); var11++) { + if ((var8 >= 0) && (var8 < 256)) + { + Block var12s = par1World.getBlock(var10, var8, var11); + int var12 = Block.getIdFromBlock(var12s); + if ((var12 != 0) && (var12s != Blocks.air) && (var12s != Blocks.grass) && (var12s != Blocks.dirt) && (var12s != Blocks.cactus)) { + var7 = false; + } + } + else + { + var7 = false; + } + } + } + } + if (!var7) { + return false; + } + Block var8s = par1World.getBlock(par3, par4 - 1, par5); + int var8 = Block.getIdFromBlock(var8s); + if (((var8s == Blocks.grass) || (var8s == Blocks.dirt)) && (par4 < 256 - var6 - 1)) + { + par1World.setBlock(par3, par4 - 1, par5, Blocks.dirt, 0, 2); + byte var9 = 3; + byte var18 = 0; + for (int var11 = par4 - var9 + var6; var11 <= par4 + var6; var11++) + { + int var12 = var11 - (par4 + var6); + int var13 = var18 + 1 - var12 / 2; + for (int var14 = par3 - var13; var14 <= par3 + var13; var14++) + { + int var15 = var14 - par3; + for (int var16 = par5 - var13; var16 <= par5 + var13; var16++) + { + int var17 = var16 - par5; + if ((Math.abs(var15) != var13) || (Math.abs(var17) != var13) || ((par2Random.nextInt(2) != 0) && (var12 != 0))) { + par1World.setBlock(var14, var11, var16, Blocks.air, this.metaLeaves, 2); + } + } + } + } + for (int var11 = 0; var11 < var6; var11++) + { + Block var12s = par1World.getBlock(par3, par4 + var11, par5); + int var12 = Block.getIdFromBlock(var12s); + if ((var12 == 0) || (var12s == Blocks.air)) + { + par1World.setBlock(par3, par4 + var11, par5, Blocks.cactus, this.metaWood, 2); + if ((this.vinesGrow) && (var11 > 0)) + { + if ((par2Random.nextInt(3) > 0) && (par1World.isAirBlock(par3 - 1, par4 + var11, par5))) { + par1World.setBlock(par3 - 1, par4 + var11, par5, Blocks.air, 8, 2); + } + if ((par2Random.nextInt(3) > 0) && (par1World.isAirBlock(par3 + 1, par4 + var11, par5))) { + par1World.setBlock(par3 + 1, par4 + var11, par5, Blocks.air, 2, 2); + } + if ((par2Random.nextInt(3) > 0) && (par1World.isAirBlock(par3, par4 + var11, par5 - 1))) { + par1World.setBlock(par3, par4 + var11, par5 - 1, Blocks.air, 1, 2); + } + if ((par2Random.nextInt(3) > 0) && (par1World.isAirBlock(par3, par4 + var11, par5 + 1))) { + par1World.setBlock(par3, par4 + var11, par5 + 1, Blocks.air, 4, 2); + } + } + } + } + if (this.vinesGrow) + { + for (int var11 = par4 - 3 + var6; var11 <= par4 + var6; var11++) + { + int var12 = var11 - (par4 + var6); + int var13 = 2 - var12 / 2; + for (int var14 = par3 - var13; var14 <= par3 + var13; var14++) { + for (int var15 = par5 - var13; var15 <= par5 + var13; var15++) { + if (par1World.getBlock(var14, var11, var15) == Blocks.air) + { + if ((par2Random.nextInt(4) == 0) && + (Block.getIdFromBlock(par1World.getBlock(var14 - 1, var11, var15)) == 0)) { + growVines(par1World, var14 - 1, var11, var15, 8); + } + if ((par2Random.nextInt(4) == 0) && + (Block.getIdFromBlock(par1World.getBlock(var14 + 1, var11, var15)) == 0)) { + growVines(par1World, var14 + 1, var11, var15, 2); + } + if ((par2Random.nextInt(4) == 0) && + (Block.getIdFromBlock(par1World.getBlock(var14, var11, var15 - 1)) == 0)) { + growVines(par1World, var14, var11, var15 - 1, 1); + } + if ((par2Random.nextInt(4) == 0) && + (Block.getIdFromBlock(par1World.getBlock(var14, var11, var15 + 1)) == 0)) { + growVines(par1World, var14, var11, var15 + 1, 4); + } + } + } + } + } + if ((par2Random.nextInt(5) == 0) && (var6 > 5)) { + for (int var11 = 0; var11 < 2; var11++) { + for (int var12 = 0; var12 < 4; var12++) { + if (par2Random.nextInt(4 - var11) == 0) + { + int var13 = par2Random.nextInt(3); + par1World.setBlock(par3 + net.minecraft.util.Direction.offsetX[net.minecraft.util.Direction.rotateOpposite[var12]], par4 + var6 - 5 + var11, par5 + net.minecraft.util.Direction.offsetZ[net.minecraft.util.Direction.rotateOpposite[var12]], Blocks.air, var13 << 2 | var12, 2); + } + } + } + } + } + return true; + } + return false; + } + return false; + } + + private void growVines(World par1World, int par2, int par3, int par4, int par5) + { + par1World.setBlock(par2, par3, par4, Blocks.vine, par5, 2); + int var6 = 4; + for (;;) + { + par3--; + if ((Block.getIdFromBlock(par1World.getBlock(par2, par3, par4)) != 0) || (var6 <= 0)) { + return; + } + par1World.setBlock(par2, par3, par4, Blocks.air, par5, 2); + var6--; + } + } + } + + } + +} diff --git a/src/Java/gtPlusPlus/australia/biome/type/Biome_AustralianDesert_Ex.java b/src/Java/gtPlusPlus/australia/biome/type/Biome_AustralianDesert_Ex.java new file mode 100644 index 0000000000..3fd15e130a --- /dev/null +++ b/src/Java/gtPlusPlus/australia/biome/type/Biome_AustralianDesert_Ex.java @@ -0,0 +1,54 @@ +package gtPlusPlus.australia.biome.type; + +import java.util.Random; + +import gtPlusPlus.core.lib.CORE; +import net.minecraft.init.Blocks; +import net.minecraft.world.World; +import net.minecraft.world.biome.BiomeGenDesert; +import net.minecraft.world.gen.feature.WorldGenDesertWells; +import net.minecraftforge.common.BiomeDictionary; +import net.minecraftforge.common.BiomeManager; + +public class Biome_AustralianDesert_Ex extends BiomeGenDesert { + + public Biome_AustralianDesert_Ex(int aID) + { + super(aID); + this.spawnableCreatureList.clear(); + this.topBlock = Blocks.sand; + this.fillerBlock = Blocks.sand; + this.theBiomeDecorator.treesPerChunk = -999; + this.theBiomeDecorator.deadBushPerChunk = 2; + this.theBiomeDecorator.reedsPerChunk = 50; + this.theBiomeDecorator.cactiPerChunk = 10; + this.setColor(16421912); + this.setBiomeName("Australian Desert III"); + this.setDisableRain(); + this.setTemperatureRainfall(2.0F, 0.0F); + this.setHeight(height_LowPlains); + this.spawnableCreatureList.clear(); + } + + public static Biome_AustralianDesert_Ex biome = new Biome_AustralianDesert_Ex(CORE.AUSTRALIA_BIOME_DESERT_3_ID); + public void load() { + BiomeDictionary.registerBiomeType(biome, BiomeDictionary.Type.DRY); + BiomeDictionary.registerBiomeType(biome, BiomeDictionary.Type.SPARSE); + BiomeDictionary.registerBiomeType(biome, BiomeDictionary.Type.HOT); + BiomeDictionary.registerBiomeType(biome, BiomeDictionary.Type.DESERT); + BiomeManager.addSpawnBiome(biome); + } + + public void decorate(World p_76728_1_, Random p_76728_2_, int p_76728_3_, int p_76728_4_) + { + super.decorate(p_76728_1_, p_76728_2_, p_76728_3_, p_76728_4_); + + if (p_76728_2_.nextInt(1000) == 0) + { + int k = p_76728_3_ + p_76728_2_.nextInt(16) + 8; + int l = p_76728_4_ + p_76728_2_.nextInt(16) + 8; + WorldGenDesertWells worldgendesertwells = new WorldGenDesertWells(); + worldgendesertwells.generate(p_76728_1_, p_76728_2_, k, p_76728_1_.getHeightValue(k, l) + 1, l); + } + } +} \ No newline at end of file diff --git a/src/Java/gtPlusPlus/australia/biome/type/Biome_AustralianForest.java b/src/Java/gtPlusPlus/australia/biome/type/Biome_AustralianForest.java new file mode 100644 index 0000000000..29fd27bed6 --- /dev/null +++ b/src/Java/gtPlusPlus/australia/biome/type/Biome_AustralianForest.java @@ -0,0 +1,225 @@ +package gtPlusPlus.australia.biome.type; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import gtPlusPlus.core.lib.CORE; + +import java.util.Random; +import net.minecraft.block.BlockFlower; +import net.minecraft.entity.passive.EntityWolf; +import net.minecraft.init.Blocks; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; +import net.minecraft.world.biome.BiomeGenBase; +import net.minecraft.world.biome.BiomeGenForest; +import net.minecraft.world.biome.BiomeGenMutated; +import net.minecraft.world.gen.feature.WorldGenAbstractTree; +import net.minecraft.world.gen.feature.WorldGenBigMushroom; +import net.minecraft.world.gen.feature.WorldGenCanopyTree; +import net.minecraft.world.gen.feature.WorldGenForest; +import net.minecraftforge.common.BiomeDictionary; +import net.minecraftforge.common.BiomeManager; + +public class Biome_AustralianForest extends BiomeGenForest { + + private int field_150632_aF; + protected static final WorldGenForest field_150629_aC = new WorldGenForest(false, true); + protected static final WorldGenForest field_150630_aD = new