diff --git a/src/main/java/biomesoplenty/common/biomes/BiomeGenChaparral.java b/src/main/java/biomesoplenty/common/biomes/BiomeGenChaparral.java index 368af0090..077f77adf 100644 --- a/src/main/java/biomesoplenty/common/biomes/BiomeGenChaparral.java +++ b/src/main/java/biomesoplenty/common/biomes/BiomeGenChaparral.java @@ -1,84 +1,98 @@ package biomesoplenty.common.biomes; -import net.minecraft.world.biome.BiomeGenBase; +import java.util.HashMap; +import java.util.Random; + +import net.minecraft.block.Block; +import net.minecraft.entity.passive.EntityHorse; +import net.minecraft.init.Blocks; +import net.minecraft.world.World; +import net.minecraft.world.biome.BiomeGenBase.Height; +import net.minecraft.world.gen.feature.WorldGenAbstractTree; +import net.minecraft.world.gen.feature.WorldGenerator; +import biomesoplenty.api.BOPBlockHelper; +import biomesoplenty.common.world.features.WorldGenBOPTallGrass; +import biomesoplenty.common.world.features.trees.WorldGenBOPShrub; +import biomesoplenty.common.world.features.trees.WorldGenChaparral2; +import biomesoplenty.common.world.features.trees.WorldGenChaparral3; public class BiomeGenChaparral extends BOPBiome { + private static final Height biomeHeight = new Height(0.3F, 0.6F); - public BiomeGenChaparral(int par1) - { - super(par1); - /* - spawnableCreatureList.clear(); - theBiomeDecorator = new BiomeDecoratorBOP(this); - customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - customBiomeDecorator.treesPerChunk = 8; - customBiomeDecorator.grassPerChunk = 20; - customBiomeDecorator.bushesPerChunk = 10; - customBiomeDecorator.berryBushesPerChunk = 2; - customBiomeDecorator.generateStoneInGrass = true; - customBiomeDecorator.generatePumpkins = false; - customBiomeDecorator.carrotsPerChunk = 1; - customBiomeDecorator.wheatGrassPerChunk = 10; - customBiomeDecorator.shrubsPerChunk = 10; - customBiomeDecorator.waterReedsPerChunk = 2; - spawnableCreatureList.add(new SpawnListEntry(EntityHorse.class, 5, 2, 6)); - */ - } - - /* - @Override - public void decorate(World par1World, Random par2Random, int par3, int par4) - { - super.decorate(par1World, par2Random, par3, par4); - int var5 = 12 + par2Random.nextInt(6); + public BiomeGenChaparral(int id) + { + super(id); + + //TODO: setHeight() + this.func_150570_a(biomeHeight); + //TODO: setColor() + this.setColor(12638301); + this.setTemperatureRainfall(0.8F, 0.4F); - for (int var6 = 0; var6 < var5; ++var6) - { - int var7 = par3 + par2Random.nextInt(16); - int var8 = par2Random.nextInt(28) + 4; - int var9 = par4 + par2Random.nextInt(16); - int var10 = par1World.getBlockId(var7, var8, var9); + this.spawnableCreatureList.clear(); + + this.spawnableCreatureList.add(new SpawnListEntry(EntityHorse.class, 5, 2, 6)); + + this.theBiomeDecorator.treesPerChunk = 8; + this.theBiomeDecorator.grassPerChunk = 20; + + this.bopWorldFeatures.bushesPerChunk = 10; + this.bopWorldFeatures.berryBushesPerChunk = 2; + this.bopWorldFeatures.generateStoneInGrass = true; + this.bopWorldFeatures.wildCarrotsPerChunk = 1; + this.bopWorldFeatures.shrubsPerChunk = 10; + this.bopWorldFeatures.waterReedsPerChunk = 2; + this.bopWorldFeatures.generatePumpkins = false; + } + + @Override + //TODO: getRandomWorldGenForTrees() + public WorldGenAbstractTree func_150567_a(Random random) + { + return random.nextInt(2) == 0 ? new WorldGenChaparral2() : (random.nextInt(5) == 0 ? new WorldGenBOPShrub(Blocks.log, Blocks.leaves, 0, 0, Blocks.grass, Blocks.sand) : new WorldGenChaparral3()); + } - Block block = Block.blocksList[var10]; - if (block != null && block.isGenMineableReplaceable(par1World, var7, var8, var9, Block.stone.blockID)) - { - par1World.setBlock(var7, var8, var9, Blocks.amethystOre.get().blockID, 4, 2); - } - } - } - */ + @Override + public HashMap getWeightedWorldGenForGrass() + { + HashMap grassMap = new HashMap(); - /** - * Gets a WorldGen appropriate for this biome. - */ - /* - @Override - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return par1Random.nextInt(2) == 0 ? new WorldGenChaparral2() : (par1Random.nextInt(5) == 0 ? new WorldGenChaparral1(0, 0) : new WorldGenChaparral3()); - } - */ + grassMap.put(new WorldGenBOPTallGrass(Blocks.tallgrass, 1), 1D); + grassMap.put(new WorldGenBOPTallGrass(BOPBlockHelper.get("foliage"), 2), 0.5D); + grassMap.put(new WorldGenBOPTallGrass(BOPBlockHelper.get("foliage"), 10), 0.5D); + grassMap.put(new WorldGenBOPTallGrass(BOPBlockHelper.get("foliage"), 11), 0.5D); - /** - * Gets a WorldGen appropriate for this biome. - */ - /* - @Override - public WorldGenerator getRandomWorldGenForGrass(Random par1Random) - { - return par1Random.nextInt(2) == 0 ? new WorldGenTallGrass(Blocks.foliage.get().blockID, 2) : new WorldGenTallGrass(Block.tallGrass.blockID, 1); - } - */ + return grassMap; + } - /** - * Provides the basic grass color based on the biome temperature and rainfall - */ - /* - @Override - public int getBiomeGrassColor() - { - return 12638301; - } - */ + @Override + public void decorate(World world, Random random, int chunkX, int chunkZ) + { + super.decorate(world, random, chunkX, chunkZ); + int var5 = 12 + random.nextInt(6); + + for (int var6 = 0; var6 < var5; ++var6) + { + int x = chunkX + random.nextInt(16); + int y = random.nextInt(28) + 4; + int z = chunkZ + random.nextInt(16); + + //TODO: getBlock() + Block block = world.func_147439_a(x, y, z); + + if (block != null && block.isReplaceableOreGen(world, x, y, z, Blocks.stone)) + { + //TODO: setBlock() + world.func_147465_d(x, y, z, BOPBlockHelper.get("gemOre"), 4, 2); + } + } + } + + @Override + //TODO: getBiomeGrassColor() + public int func_150558_b(int p_150558_1_, int p_150558_2_, int p_150558_3_) + { + return 12638301; + } } diff --git a/src/main/java/biomesoplenty/common/biomes/BiomeGenConiferousForest.java b/src/main/java/biomesoplenty/common/biomes/BiomeGenConiferousForest.java index 91fbd66c5..fc00de62e 100644 --- a/src/main/java/biomesoplenty/common/biomes/BiomeGenConiferousForest.java +++ b/src/main/java/biomesoplenty/common/biomes/BiomeGenConiferousForest.java @@ -1,75 +1,93 @@ package biomesoplenty.common.biomes; -import net.minecraft.world.biome.BiomeGenBase; +import java.util.HashMap; +import java.util.Random; + +import net.minecraft.block.Block; +import net.minecraft.entity.passive.EntityWolf; +import net.minecraft.init.Blocks; +import net.minecraft.world.World; +import net.minecraft.world.gen.feature.WorldGenAbstractTree; +import net.minecraft.world.gen.feature.WorldGenerator; +import biomesoplenty.api.BOPBlockHelper; +import biomesoplenty.common.world.features.WorldGenBOPTallGrass; +import biomesoplenty.common.world.features.trees.WorldGenBOPTaiga2; +import biomesoplenty.common.world.features.trees.WorldGenBOPTaiga3; public class BiomeGenConiferousForest extends BOPBiome { + private static final Height biomeHeight = new Height(0.4F, 0.9F); - @SuppressWarnings("unchecked") - public BiomeGenConiferousForest(int par1) + public BiomeGenConiferousForest(int id) { - super(par1); - /* - spawnableCreatureList.add(new SpawnListEntry(EntityWolf.class, 8, 4, 4)); + super(id); + + //TODO: setHeight() + this.func_150570_a(biomeHeight); + //TODO: setColor() + this.setColor(5410656); + this.setTemperatureRainfall(0.5F, 0.5F); - customBiomeDecorator.treesPerChunk = 8; - customBiomeDecorator.grassPerChunk = 10; - customBiomeDecorator.mushroomsPerChunk = 8; - customBiomeDecorator.toadstoolsPerChunk = 3; - customBiomeDecorator.blueMilksPerChunk = 1; - customBiomeDecorator.poisonIvyPerChunk = 1; - customBiomeDecorator.berryBushesPerChunk = 1; - customBiomeDecorator.wheatGrassPerChunk = 5; - customBiomeDecorator.shrubsPerChunk = 8; - customBiomeDecorator.waterReedsPerChunk = 2; - customBiomeDecorator.sandPerChunk = -999; - customBiomeDecorator.sandPerChunk2 = -999; - customBiomeDecorator.gravelPerChunk = 1; - customBiomeDecorator.gravelPerChunk2 = 1; - customBiomeDecorator.cloverPatchesPerChunk = 10; - */ - } + this.spawnableCreatureList.add(new SpawnListEntry(EntityWolf.class, 8, 4, 4)); - /** - * Gets a WorldGen appropriate for this biome. - */ - /* - @Override - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return par1Random.nextInt(3) == 0 ? new WorldGenTaiga3(false) : (par1Random.nextInt(5) == 0 ? new WorldGenTaiga4(false) : new WorldGenTaiga9(false)); - } - */ + this.theBiomeDecorator.treesPerChunk = 8; + this.theBiomeDecorator.grassPerChunk = 10; + this.theBiomeDecorator.mushroomsPerChunk = 8; + // gravelPerChunk + this.theBiomeDecorator.sandPerChunk = -999; + this.theBiomeDecorator.sandPerChunk2 = -999; - /** - * Gets a WorldGen appropriate for this biome. - */ - /* - @Override - public WorldGenerator getRandomWorldGenForGrass(Random par1Random) - { - return par1Random.nextInt(2) == 0 ? new WorldGenTallGrass(Block.tallGrass.blockID, 1) : new WorldGenTallGrass(Blocks.foliage.get().blockID, 2); + this.bopWorldFeatures.toadstoolsPerChunk = 3; + this.bopWorldFeatures.blueMilksPerChunk = 1; + this.bopWorldFeatures.poisonIvyPerChunk = 1; + this.bopWorldFeatures.berryBushesPerChunk = 1; + this.bopWorldFeatures.shrubsPerChunk = 8; + this.bopWorldFeatures.waterReedsPerChunk = 2; + this.bopWorldFeatures.cloverPatchesPerChunk = 10; } @Override - public void decorate(World par1World, Random par2Random, int par3, int par4) - { - super.decorate(par1World, par2Random, par3, par4); - int var5 = 3 + par2Random.nextInt(6); - - for (int var6 = 0; var6 < var5; ++var6) - { - int var7 = par3 + par2Random.nextInt(16); - int var8 = par2Random.nextInt(28) + 4; - int var9 = par4 + par2Random.nextInt(16); - int var10 = par1World.getBlockId(var7, var8, var9); - - Block block = Block.blocksList[var10]; - if (block != null && block.isGenMineableReplaceable(par1World, var7, var8, var9, Block.stone.blockID)) - { - par1World.setBlock(var7, var8, var9, Block.oreEmerald.blockID, 0, 2); - } - } + //TODO: getRandomWorldGenForTrees() + public WorldGenAbstractTree func_150567_a(Random random) + { + return random.nextInt(3) == 0 ? new WorldGenBOPTaiga3(BOPBlockHelper.get("logs1"), BOPBlockHelper.get("leaves2"), 3, 1, false, 35, 10, 0): + (random.nextInt(5) == 0 ? new WorldGenBOPTaiga2(BOPBlockHelper.get("logs1"), BOPBlockHelper.get("leaves2"), 3, 1, false, 20, 15, 4) : + new WorldGenBOPTaiga2(BOPBlockHelper.get("logs1"), BOPBlockHelper.get("leaves2"), 3, 1, false, 10, 10, 5)); } - */ + + @Override + public HashMap getWeightedWorldGenForGrass() + { + HashMap grassMap = new HashMap(); + + grassMap.put(new WorldGenBOPTallGrass(Blocks.tallgrass, 1), 0.5D); + grassMap.put(new WorldGenBOPTallGrass(BOPBlockHelper.get("foliage"), 2), 1D); + grassMap.put(new WorldGenBOPTallGrass(BOPBlockHelper.get("foliage"), 10), 0.5D); + grassMap.put(new WorldGenBOPTallGrass(BOPBlockHelper.get("foliage"), 11), 0.5D); + + return grassMap; + } + + @Override + public void decorate(World world, Random random, int chunkX, int chunkZ) + { + super.decorate(world, random, chunkX, chunkZ); + int var5 = 12 + random.nextInt(6); + + for (int var6 = 0; var6 < var5; ++var6) + { + int x = chunkX + random.nextInt(16); + int y = random.nextInt(28) + 4; + int z = chunkZ + random.nextInt(16); + + //TODO: getBlock() + Block block = world.func_147439_a(x, y, z); + + if (block != null && block.isReplaceableOreGen(world, x, y, z, Blocks.stone)) + { + //TODO: setBlock() + world.func_147465_d(x, y, z, BOPBlockHelper.get("gemOre"), 0, 2); + } + } + } } diff --git a/src/main/java/biomesoplenty/common/biomes/BiomeGenGrove.java b/src/main/java/biomesoplenty/common/biomes/BiomeGenGrove.java index 76c5ebf14..fc99d074c 100644 --- a/src/main/java/biomesoplenty/common/biomes/BiomeGenGrove.java +++ b/src/main/java/biomesoplenty/common/biomes/BiomeGenGrove.java @@ -1,93 +1,112 @@ package biomesoplenty.common.biomes; -import net.minecraft.world.biome.BiomeGenBase; +import java.util.HashMap; +import java.util.Random; + +import net.minecraft.block.Block; +import net.minecraft.init.Blocks; +import net.minecraft.world.World; +import net.minecraft.world.biome.BiomeGenBase.Height; +import net.minecraft.world.gen.feature.WorldGenAbstractTree; +import net.minecraft.world.gen.feature.WorldGenerator; +import biomesoplenty.api.BOPBlockHelper; +import biomesoplenty.common.world.features.WorldGenBOPFlora; +import biomesoplenty.common.world.features.WorldGenBOPTallGrass; +import biomesoplenty.common.world.features.trees.WorldGenChaparral2; +import biomesoplenty.common.world.features.trees.WorldGenPoplar; +import biomesoplenty.common.world.features.trees.WorldGenPoplar2; public class BiomeGenGrove extends BOPBiome { + private static final Height biomeHeight = new Height(0.3F, 0.4F); - public BiomeGenGrove(int par1) + public BiomeGenGrove(int id) { - super(par1); - /* - theBiomeDecorator = new BiomeDecoratorBOP(this); - customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - customBiomeDecorator.treesPerChunk = 3; - customBiomeDecorator.flowersPerChunk = 5; - customBiomeDecorator.tinyFlowersPerChunk = 80; - customBiomeDecorator.whiteFlowersPerChunk = 15; - customBiomeDecorator.grassPerChunk = 8; - customBiomeDecorator.wheatGrassPerChunk = 4; - customBiomeDecorator.sproutsPerChunk = 1; - customBiomeDecorator.lilyflowersPerChunk = 3; - customBiomeDecorator.berryBushesPerChunk = 2; - customBiomeDecorator.shrubsPerChunk = 3; - customBiomeDecorator.cloverPatchesPerChunk = 20; - customBiomeDecorator.generatePumpkins = false; - */ + super(id); + + //TODO: setHeight() + this.func_150570_a(biomeHeight); + //TODO: setColor() + this.setColor(5341009); + this.setTemperatureRainfall(0.4F, 0.8F); + + this.theBiomeDecorator.treesPerChunk = 3; + this.theBiomeDecorator.flowersPerChunk = 5; + this.theBiomeDecorator.grassPerChunk = 8; + + this.bopWorldFeatures.bopFlowersPerChunk = 50; + this.bopWorldFeatures.sproutsPerChunk = 1; + this.bopWorldFeatures.berryBushesPerChunk = 2; + this.bopWorldFeatures.shrubsPerChunk = 3; + this.bopWorldFeatures.cloverPatchesPerChunk = 20; + this.bopWorldFeatures.generatePumpkins = false; } - /** - * Gets a WorldGen appropriate for this biome. - */ - /* @Override - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return par1Random.nextInt(2) == 0 ? new WorldGenChaparral2() : par1Random.nextInt(3) == 0 ? new WorldGenPoplar2() : new WorldGenPoplar(); - } - */ - - /** - * Gets a WorldGen appropriate for this biome. - */ - /* - @Override - public WorldGenerator getRandomWorldGenForGrass(Random par1Random) - { - return par1Random.nextInt(2) == 0 ? new WorldGenTallGrass(Block.tallGrass.blockID, 1) : new WorldGenTallGrass(Blocks.foliage.get().blockID, 2); + //TODO: getRandomWorldGenForTrees() + public WorldGenAbstractTree func_150567_a(Random random) + { + return random.nextInt(2) == 0 ? new WorldGenChaparral2() : random.nextInt(3) == 0 ? new WorldGenPoplar2() : new WorldGenPoplar(); } + @Override + public HashMap getWeightedWorldGenForBOPFlowers() + { + HashMap flowerMap = new HashMap(); + + flowerMap.put(new WorldGenBOPFlora(BOPBlockHelper.get("flowers"), 0), 16D); + flowerMap.put(new WorldGenBOPFlora(BOPBlockHelper.get("flowers"), 9), 3D); + + return flowerMap; + } + @Override - public void decorate(World par1World, Random par2Random, int par3, int par4) + public HashMap getWeightedWorldGenForGrass() { - super.decorate(par1World, par2Random, par3, par4); - int var5 = 3 + par2Random.nextInt(6); + HashMap grassMap = new HashMap(); - for (int var6 = 0; var6 < var5; ++var6) - { - int var7 = par3 + par2Random.nextInt(16); - int var8 = par2Random.nextInt(28) + 4; - int var9 = par4 + par2Random.nextInt(16); - int var10 = par1World.getBlockId(var7, var8, var9); + grassMap.put(new WorldGenBOPTallGrass(Blocks.tallgrass, 1), 0.5D); + grassMap.put(new WorldGenBOPTallGrass(BOPBlockHelper.get("foliage"), 2), 1D); + grassMap.put(new WorldGenBOPTallGrass(BOPBlockHelper.get("foliage"), 10), 0.5D); + grassMap.put(new WorldGenBOPTallGrass(BOPBlockHelper.get("foliage"), 11), 0.5D); - Block block = Block.blocksList[var10]; - if (block != null && block.isGenMineableReplaceable(par1World, var7, var8, var9, Block.stone.blockID)) - { - par1World.setBlock(var7, var8, var9, Block.oreEmerald.blockID, 0, 2); - } - } + return grassMap; } - */ - /** - * Provides the basic grass color based on the biome temperature and rainfall - */ - /* + @Override + public void decorate(World world, Random random, int chunkX, int chunkZ) + { + super.decorate(world, random, chunkX, chunkZ); + int var5 = 12 + random.nextInt(6); + + for (int var6 = 0; var6 < var5; ++var6) + { + int x = chunkX + random.nextInt(16); + int y = random.nextInt(28) + 4; + int z = chunkZ + random.nextInt(16); + + //TODO: getBlock() + Block block = world.func_147439_a(x, y, z); + + if (block != null && block.isReplaceableOreGen(world, x, y, z, Blocks.stone)) + { + //TODO: setBlock() + world.func_147465_d(x, y, z, BOPBlockHelper.get("gemOre"), 0, 2); + } + } + } + @Override - public int getBiomeGrassColor() - { + //TODO: getBiomeGrassColor() + public int func_150558_b(int p_150558_1_, int p_150558_2_, int p_150558_3_) + { return 5341009; } - */ - /** - * Provides the basic foliage color based on the biome temperature and rainfall - */ - /* @Override - public int getBiomeFoliageColor() - { + //TODO: getBiomeFoliageColor() + public int func_150571_c(int x, int y, int z) + { return 6396257; } - */ } diff --git a/src/main/java/biomesoplenty/common/core/BOPBiomes.java b/src/main/java/biomesoplenty/common/core/BOPBiomes.java index c186c5f8d..a1717f8b7 100644 --- a/src/main/java/biomesoplenty/common/core/BOPBiomes.java +++ b/src/main/java/biomesoplenty/common/core/BOPBiomes.java @@ -10,7 +10,9 @@ import biomesoplenty.common.biomes.BiomeGenBambooForest; import biomesoplenty.common.biomes.BiomeGenBorealForest; import biomesoplenty.common.biomes.BiomeGenBrushland; import biomesoplenty.common.biomes.BiomeGenCanyon; +import biomesoplenty.common.biomes.BiomeGenChaparral; import biomesoplenty.common.biomes.BiomeGenCherryBlossomGrove; +import biomesoplenty.common.biomes.BiomeGenConiferousForest; import biomesoplenty.common.biomes.BiomeGenCrag; import biomesoplenty.common.biomes.BiomeGenDeadForest; import biomesoplenty.common.biomes.BiomeGenDeciduousForest; @@ -19,6 +21,7 @@ import biomesoplenty.common.biomes.BiomeGenFen; import biomesoplenty.common.biomes.BiomeGenFlowerField; import biomesoplenty.common.biomes.BiomeGenFrostForest; import biomesoplenty.common.biomes.BiomeGenGrassland; +import biomesoplenty.common.biomes.BiomeGenGrove; import biomesoplenty.common.biomes.BiomeGenHighland; import biomesoplenty.common.biomes.BiomeGenJadeCliffs; import biomesoplenty.common.biomes.BiomeGenLavenderFields; @@ -79,10 +82,10 @@ public class BOPBiomes registerBiome(new BOPBiomeListEntry(new BiomeGenBorealForest(BOPConfigurationIDs.borealForestID).setBiomeName("Boreal Forest"), BOPBiomeTemperatureType.WARM)); registerBiome(new BOPBiomeListEntry(new BiomeGenBrushland(BOPConfigurationIDs.brushlandID).setBiomeName("Brushland"), BOPBiomeTemperatureType.HOT)); registerBiome(new BOPBiomeListEntry(new BiomeGenCanyon(BOPConfigurationIDs.canyonID).setBiomeName("Canyon"), BOPBiomeTemperatureType.HOT)); - //registerBiome(new BOPBiomeListEntry(new BiomeGenChaparral(BOPConfigurationIDs.chaparralID).setBiomeName("Chaparral"), BOPBiomeTemperatureType.WARM));*/ + registerBiome(new BOPBiomeListEntry(new BiomeGenChaparral(BOPConfigurationIDs.chaparralID).setBiomeName("Chaparral"), BOPBiomeTemperatureType.WARM)); registerBiome(new BOPBiomeListEntry(new BiomeGenCherryBlossomGrove(BOPConfigurationIDs.cherryBlossomGroveID).setBiomeName("Cherry Blossom Grove"), BOPBiomeTemperatureType.COOL)); - /*registerBiome(new BOPBiomeListEntry(new BiomeGenConiferousForest(BOPConfigurationIDs.coniferousForestID).setBiomeName("Coniferous Forest"), BOPBiomeTemperatureType.WARM)); - registerBiome(new BOPBiomeListEntry(new BiomeGenConiferousForestSnow(BOPConfigurationIDs.coniferousForestSnowID).setBiomeName("Snowy Coniferous Forest"), BOPBiomeTemperatureType.ICY));*/ + registerOnlyBiome(new BOPBiomeListEntry(new BiomeGenConiferousForest(BOPConfigurationIDs.coniferousForestID).setBiomeName("Coniferous Forest"), BOPBiomeTemperatureType.WARM)); + //registerBiome(new BOPBiomeListEntry(new BiomeGenConiferousForestSnow(BOPConfigurationIDs.coniferousForestSnowID).setBiomeName("Snowy Coniferous Forest"), BOPBiomeTemperatureType.ICY));*/ registerBiome(new BOPBiomeListEntry(new BiomeGenCrag(BOPConfigurationIDs.cragID).setBiomeName("Crag"), BOPBiomeTemperatureType.HOT)); registerBiome(new BOPBiomeListEntry(new BiomeGenDeadForest(BOPConfigurationIDs.deadForestID).setBiomeName("Dead Forest"), BOPBiomeTemperatureType.COOL)); //registerBiome(new BOPBiomeListEntry(new BiomeGenDeadSwamp(BOPConfigurationIDs.deadSwampID).setBiomeName("Dead Swamp"), BOPBiomeTemperatureType.WARM));*/ @@ -92,7 +95,7 @@ public class BOPBiomes registerBiome(new BOPBiomeListEntry(new BiomeGenFlowerField(BOPConfigurationIDs.flowerFieldID).setBiomeName("Flower Field"), BOPBiomeTemperatureType.WARM)); registerBiome(new BOPBiomeListEntry(new BiomeGenFrostForest(BOPConfigurationIDs.frostForestID).setBiomeName("Frost Forest"), BOPBiomeTemperatureType.ICY)); registerBiome(new BOPBiomeListEntry(new BiomeGenGrassland(BOPConfigurationIDs.grasslandID).setBiomeName("Grassland"), BOPBiomeTemperatureType.WARM)); - //registerBiome(new BOPBiomeListEntry(new BiomeGenGrove(BOPConfigurationIDs.groveID).setBiomeName("Grove"), BOPBiomeTemperatureType.WARM)); + registerBiome(new BOPBiomeListEntry(new BiomeGenGrove(BOPConfigurationIDs.groveID).setBiomeName("Grove"), BOPBiomeTemperatureType.WARM)); /*registerBiome(new BOPBiomeListEntry(new BiomeGenHeathland(BOPConfigurationIDs.heathlandID).setBiomeName("Heathland"), BOPBiomeTemperatureType.WARM));*/ registerBiome(new BOPBiomeListEntry(new BiomeGenHighland(BOPConfigurationIDs.highlandID).setBiomeName("Highland"), BOPBiomeTemperatureType.WARM)); registerBiome(new BOPBiomeListEntry(new BiomeGenJadeCliffs(BOPConfigurationIDs.jadeCliffsID).setBiomeName("Jade Cliffs"), BOPBiomeTemperatureType.WARM)); diff --git a/src/main/java/biomesoplenty/common/world/decoration/BOPWorldFeatures.java b/src/main/java/biomesoplenty/common/world/decoration/BOPWorldFeatures.java index 4b5f23f35..dc8f64dc3 100644 --- a/src/main/java/biomesoplenty/common/world/decoration/BOPWorldFeatures.java +++ b/src/main/java/biomesoplenty/common/world/decoration/BOPWorldFeatures.java @@ -5,6 +5,7 @@ public class BOPWorldFeatures public boolean generatePumpkins = true; public boolean generateQuicksand = false; public boolean generateCanyon = false; + public boolean generateStoneInGrass = false; public int waterPoolsPerChunk = 0; public int lavaPoolsPerChunk = 0; @@ -35,6 +36,7 @@ public class BOPWorldFeatures public int cattailsPerChunk = 0; public int highCattailsPerChunk = 0; public int algaePerChunk = 0; + public int sproutsPerChunk = 0; public int bopFlowersPerChunk = 0; } diff --git a/src/main/java/biomesoplenty/common/world/features/WorldGenMud.java b/src/main/java/biomesoplenty/common/world/features/WorldGenMud.java deleted file mode 100644 index f6ff40952..000000000 --- a/src/main/java/biomesoplenty/common/world/features/WorldGenMud.java +++ /dev/null @@ -1,76 +0,0 @@ -package biomesoplenty.common.world.features; - -import java.lang.reflect.Field; -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.init.Blocks; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenerator; -import biomesoplenty.api.BOPBlockHelper; -import biomesoplenty.common.world.decoration.IBOPDecoration; -import biomesoplenty.common.world.generation.WorldGeneratorBOP; - -public class WorldGenMud extends WorldGeneratorBOP -{ - /** The maximum radius used when generating a patch of blocks. */ - private int radius; - - public WorldGenMud(int radius) - { - this.radius = radius; - } - - @Override - public boolean generate(World world, Random random, int x, int y, int z) - { - //TODO: getBlock() getMaterial() water - if (world.func_147439_a(x, y, z).func_149688_o() != Material.field_151586_h) - return false; - else - { - int var6 = random.nextInt(radius - 2) + 2; - byte var7 = 2; - - for (int var8 = x - var6; var8 <= x + var6; ++var8) - { - for (int var9 = z - var6; var9 <= z + var6; ++var9) - { - int var10 = var8 - x; - int var11 = var9 - z; - - if (var10 * var10 + var11 * var11 <= var6 * var6) - { - for (int var12 = y - var7; var12 <= y + var7; ++var12) - { - //TODO: getBlock() - Block block = world.func_147439_a(var8, var12, var9); - - if (block == Blocks.dirt || block == Blocks.grass) - { - //TODO: setBlock() - world.func_147449_b(var8, var12, var9, BOPBlockHelper.get("mud")); - } - } - } - } - } - - return true; - } - } - - @Override - public void doGeneration(World world, Random random, Field worldGeneratorField, WorldGenerator worldGenerator, BiomeGenBase biome, IBOPDecoration bopDecoration, int x, int z) throws Exception - { - for (int i = 0; i < worldGeneratorField.getInt(bopDecoration.getWorldFeatures()); i++) - { - int randX = x + random.nextInt(16) + 8; - int randZ = z + random.nextInt(16) + 8; - - worldGenerator.generate(world, random, randX, world.getTopSolidOrLiquidBlock(randX, randZ), randZ); - } - } -} diff --git a/src/main/java/biomesoplenty/common/world/features/WorldGenSplotches.java b/src/main/java/biomesoplenty/common/world/features/WorldGenSplotches.java index 97e19f57c..af1ed9605 100644 --- a/src/main/java/biomesoplenty/common/world/features/WorldGenSplotches.java +++ b/src/main/java/biomesoplenty/common/world/features/WorldGenSplotches.java @@ -111,5 +111,16 @@ public class WorldGenSplotches extends WorldGeneratorBOP worldGenerator.generate(world, random, randX, randY, randZ); } } + else if (fieldName.equals("generateStoneInGrass") && bopDecoration.getWorldFeatures().generateStoneInGrass) + { + for (int i = 0; i < 15; ++i) + { + int randX = x + random.nextInt(16); + int randY = random.nextInt(64) + 64; + int randZ = z + random.nextInt(16); + + worldGenerator.generate(world, random, randX, randY, randZ); + } + } } } diff --git a/src/main/java/biomesoplenty/common/world/features/trees/WorldGenBOPTaiga2.java b/src/main/java/biomesoplenty/common/world/features/trees/WorldGenBOPTaiga2.java index 64dcb7bed..978c6c520 100644 --- a/src/main/java/biomesoplenty/common/world/features/trees/WorldGenBOPTaiga2.java +++ b/src/main/java/biomesoplenty/common/world/features/trees/WorldGenBOPTaiga2.java @@ -64,6 +64,18 @@ public class WorldGenBOPTaiga2 extends WorldGenAbstractTree j1 = l - i1; k1 = 2 + random.nextInt(2); break; + + case 4: + i1 = 8 + random.nextInt(4); + j1 = l - i1; + k1 = 2 + random.nextInt(2); + break; + + case 5: + i1 = 2; + j1 = l - i1; + k1 = 2 + random.nextInt(2); + break; default: i1 = 1 + random.nextInt(2); @@ -176,7 +188,6 @@ public class WorldGenBOPTaiga2 extends WorldGenAbstractTree if (block2.isAir(world, x, y + k2, z) || block2.isLeaves(world, x, y + k2, z)) { - this.func_150516_a(world, x, y + k2, z, Blocks.log, 1); //TODO: setBlockAndMetadata() this.func_150516_a(world, x, y + k2, z, wood, metaWood); } diff --git a/src/main/java/biomesoplenty/common/world/features/trees/WorldGenBOPTaiga3.java b/src/main/java/biomesoplenty/common/world/features/trees/WorldGenBOPTaiga3.java new file mode 100644 index 000000000..e4b15b80e --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/features/trees/WorldGenBOPTaiga3.java @@ -0,0 +1,200 @@ +package biomesoplenty.common.world.features.trees; + +import java.util.Random; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockSapling; +import net.minecraft.init.Blocks; +import net.minecraft.util.Direction; +import net.minecraft.world.World; +import net.minecraft.world.gen.feature.WorldGenAbstractTree; +import net.minecraftforge.common.util.ForgeDirection; + +public class WorldGenBOPTaiga3 extends WorldGenAbstractTree +{ + private final int minTreeHeight; + private final int randomTreeHeight; + + private final Block wood; + private final Block leaves; + + private final int metaWood; + private final int metaLeaves; + + private final int altNo; + + public WorldGenBOPTaiga3(Block wood, Block leaves, int metaWood, int metaLeaves, boolean doBlockNotify, int minTreeHeight, int randomTreeHeight, int altNo) + { + super(doBlockNotify); + + this.wood = wood; + this.leaves = leaves; + this.metaWood = metaWood; + this.metaLeaves = metaLeaves; + this.minTreeHeight = minTreeHeight; + this.randomTreeHeight = randomTreeHeight; + + this.altNo = altNo; + } + + @Override + public boolean generate(World world, Random random, int x, int y, int z) + { + int l = random.nextInt(randomTreeHeight) + minTreeHeight; + int i1; + int j1; + int k1; + + switch (altNo) + { + default: + i1 = 10 + random.nextInt(5); + j1 = l - i1; + k1 = 4; + break; + } + + boolean flag = true; + + if (y >= 1 && y + l + 1 <= 256) + { + int i2; + int l3; + + for (int l1 = y; l1 <= y + 1 + l && flag; ++l1) + { + boolean flag1 = true; + + if (l1 - y < i1) + { + l3 = 0; + } + else + { + l3 = k1; + } + + for (i2 = x - l3; i2 <= x + l3 && flag; ++i2) + { + for (int j2 = z - l3; j2 <= z + l3 && flag; ++j2) + { + if (l1 >= 0 && l1 < 256) + { + Block block = world.func_147439_a(i2, l1, j2); + + if (!block.isAir(world, i2, l1, j2) && !block.isLeaves(world, i2, l1, j2)) + { + flag = false; + } + } + else + { + flag = false; + } + } + } + } + + if (!flag) + { + return false; + } + else + { + Block block1 = world.func_147439_a(x, y - 1, z); + Block block2 = world.func_147439_a(x + 1, y - 1, z); + Block block3 = world.func_147439_a(x - 1, y - 1, z); + Block block4 = world.func_147439_a(x, y - 1, z + 1); + Block block5 = world.func_147439_a(x, y - 1, z - 1); + + boolean isSoil = block1.canSustainPlant(world, x, y - 1, z, ForgeDirection.UP, (BlockSapling)Blocks.sapling) && + block2.canSustainPlant(world, x + 1, y - 1, z, ForgeDirection.UP, (BlockSapling)Blocks.sapling) && + block3.canSustainPlant(world, x - 1, y - 1, z, ForgeDirection.UP, (BlockSapling)Blocks.sapling) && + block4.canSustainPlant(world, x, y - 1, z + 1, ForgeDirection.UP, (BlockSapling)Blocks.sapling) && + block5.canSustainPlant(world, x, y - 1, z - 1, ForgeDirection.UP, (BlockSapling)Blocks.sapling); + + if (isSoil && y < 256 - l - 1) + { + block1.onPlantGrow(world, x, y - 1, z, x, y, z); + block1.onPlantGrow(world, x + 1, y - 1, z, x + 1, y, z); + block1.onPlantGrow(world, x - 1, y - 1, z, x - 1, y, z); + block1.onPlantGrow(world, x, y - 1, z + 1, x, y, z + 1); + block1.onPlantGrow(world, x, y - 1, z - 1, x, y, z - 1); + l3 = random.nextInt(2); + i2 = 1; + byte b0 = 0; + int k2; + int i4; + + for (i4 = 0; i4 <= j1; ++i4) + { + k2 = y + l - i4; + + for (int l2 = x - l3; l2 <= x + l3; ++l2) + { + int i3 = l2 - x; + + for (int j3 = z - l3; j3 <= z + l3; ++j3) + { + int k3 = j3 - z; + + if ((Math.abs(i3) != l3 || Math.abs(k3) != l3 || l3 <= 0) && world.func_147439_a(l2, k2, j3).canBeReplacedByLeaves(world, l2, k2, j3)) + { + //TODO: setBlockAndMetadata() + this.func_150516_a(world, l2, k2, j3, leaves, this.metaLeaves); + this.func_150516_a(world, l2 + 1, k2, j3, leaves, this.metaLeaves); + this.func_150516_a(world, l2 - 1, k2, j3, leaves, this.metaLeaves); + this.func_150516_a(world, l2, k2, j3 + 1, leaves, this.metaLeaves); + this.func_150516_a(world, l2, k2, j3 - 1, leaves, this.metaLeaves); + } + } + } + + if (l3 >= i2) + { + l3 = b0; + b0 = 1; + ++i2; + + if (i2 > k1) + { + i2 = k1; + } + } + else + { + ++l3; + } + } + + i4 = random.nextInt(3); + + for (int i = 0; i < l - i4; ++i) + { + Block block6 = world.func_147439_a(x, y + i, z); + + if (block6.isAir(world, x, y + i, z) || block6.isLeaves(world, x, y + i, z)) + { + //TODO: setBlockAndMetadata() + this.func_150516_a(world, x, y + i, z, wood, metaWood); + this.func_150516_a(world, x + 1, y + i, z, wood, metaWood); + this.func_150516_a(world, x - 1, y + i, z, wood, metaWood); + this.func_150516_a(world, x, y + i, z + 1, wood, metaWood); + this.func_150516_a(world, x, y + i, z - 1, wood, metaWood); + } + } + + return true; + } + else + { + return false; + } + } + } + else + { + return false; + } + } +} diff --git a/src/main/java/biomesoplenty/common/world/features/trees/WorldGenChaparral3.java b/src/main/java/biomesoplenty/common/world/features/trees/WorldGenChaparral3.java new file mode 100644 index 000000000..e63ea3510 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/features/trees/WorldGenChaparral3.java @@ -0,0 +1,51 @@ +package biomesoplenty.common.world.features.trees; + +import java.util.Random; + +import net.minecraft.block.Block; +import net.minecraft.init.Blocks; +import net.minecraft.world.World; +import net.minecraft.world.gen.feature.WorldGenAbstractTree; + +public class WorldGenChaparral3 extends WorldGenAbstractTree +{ + public WorldGenChaparral3() + { + super(false); + } + + @Override + public boolean generate(World world, Random random, int x, int y, int z) + { + //TODO: isAirBlock() + while (world.func_147437_c(x, y, z) && y > 2) + { + --y; + } + + //TODO: getBlock() + Block block = world.func_147439_a(x, y, z); + + if (block != Blocks.grass && block != Blocks.sand) + { + return false; + } + else + { + for (int var7 = -2; var7 <= 2; ++var7) + { + for (int var8 = -2; var8 <= 2; ++var8) + { + //TODO: isAirBlock() isAirBlock() + if (world.func_147437_c(x + var7, y - 1, z + var8) && world.func_147437_c(x + var7, y - 2, z + var8)) + return false; + } + } + + //TODO: setBlock() + world.func_147449_b(x, y, z, Blocks.log); + world.func_147449_b(x, y + 1, z, Blocks.leaves); + return true; + } + } +} diff --git a/src/main/java/biomesoplenty/common/world/features/trees/WorldGenPoplar.java b/src/main/java/biomesoplenty/common/world/features/trees/WorldGenPoplar.java new file mode 100644 index 000000000..3d82093f8 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/features/trees/WorldGenPoplar.java @@ -0,0 +1,136 @@ +package biomesoplenty.common.world.features.trees; + +import java.util.Random; + +import net.minecraft.block.Block; +import net.minecraft.init.Blocks; +import net.minecraft.world.World; +import net.minecraft.world.gen.feature.WorldGenAbstractTree; + +public class WorldGenPoplar extends WorldGenAbstractTree +{ + public WorldGenPoplar() + { + super(false); + } + + @Override + public boolean generate(World world, Random random, int x, int y, int z) + { + //TODO: isAirBlock() + while (world.func_147437_c(x, y, z) && y > 2) + { + --y; + } + + //TODO: getBlock() + Block block = world.func_147439_a(x, y, z); + + if (block != Blocks.grass) + { + return false; + } + else + { + for (int var7 = -2; var7 <= 2; ++var7) + { + for (int var8 = -2; var8 <= 2; ++var8) + { + //TODO: isAirBlock() isAirBlock() isAirBlock() + if (world.func_147437_c(x + var7, y - 1, z + var8) && world.func_147437_c(x + var7, y - 2, z + var8) && !world.func_147437_c(x + var7, y, z + var8)) + return false; + } + } + + //TODO: setBlock() + world.func_147449_b(x, y, z, Blocks.dirt); + world.func_147465_d(x, y + 1, z, Blocks.log, 1, 2); + world.func_147465_d(x, y + 2, z, Blocks.log, 1, 2); + world.func_147465_d(x, y + 3, z, Blocks.log, 1, 2); + world.func_147465_d(x, y + 4, z, Blocks.log, 1, 2); + world.func_147465_d(x, y + 5, z, Blocks.log, 1, 2); + world.func_147465_d(x, y + 6, z, Blocks.log, 1, 2); + world.func_147465_d(x, y + 7, z, Blocks.log, 1, 2); + world.func_147465_d(x, y + 8, z, Blocks.log, 1, 2); + world.func_147465_d(x, y + 9, z, Blocks.log, 1, 2); + + world.func_147465_d(x + 1, y + 3, z, Blocks.leaves, 1, 2); + world.func_147465_d(x - 1, y + 3, z, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 3, z + 1, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 3, z - 1, Blocks.leaves, 1, 2); + + world.func_147465_d(x + 1, y + 4, z, Blocks.leaves, 1, 2); + world.func_147465_d(x - 1, y + 4, z, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 4, z + 1, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 4, z - 1, Blocks.leaves, 1, 2); + world.func_147465_d(x + 1, y + 4, z + 1, Blocks.leaves, 1, 2); + world.func_147465_d(x + 1, y + 4, z - 1, Blocks.leaves, 1, 2); + world.func_147465_d(x - 1, y + 4, z + 1, Blocks.leaves, 1, 2); + world.func_147465_d(x - 1, y + 4, z - 1, Blocks.leaves, 1, 2); + + world.func_147465_d(x + 1, y + 5, z, Blocks.leaves, 1, 2); + world.func_147465_d(x - 1, y + 5, z, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 5, z + 1, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 5, z - 1, Blocks.leaves, 1, 2); + world.func_147465_d(x + 1, y + 5, z + 1, Blocks.leaves, 1, 2); + world.func_147465_d(x + 1, y + 5, z - 1, Blocks.leaves, 1, 2); + world.func_147465_d(x - 1, y + 5, z + 1, Blocks.leaves, 1, 2); + world.func_147465_d(x - 1, y + 5, z - 1, Blocks.leaves, 1, 2); + world.func_147465_d(x + 2, y + 5, z, Blocks.leaves, 1, 2); + world.func_147465_d(x - 2, y + 5, z, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 5, z + 2, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 5, z - 2, Blocks.leaves, 1, 2); + + world.func_147465_d(x + 1, y + 6, z, Blocks.leaves, 1, 2); + world.func_147465_d(x - 1, y + 6, z, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 6, z + 1, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 6, z - 1, Blocks.leaves, 1, 2); + world.func_147465_d(x + 1, y + 6, z + 1, Blocks.leaves, 1, 2); + world.func_147465_d(x + 1, y + 6, z - 1, Blocks.leaves, 1, 2); + world.func_147465_d(x - 1, y + 6, z + 1, Blocks.leaves, 1, 2); + world.func_147465_d(x - 1, y + 6, z - 1, Blocks.leaves, 1, 2); + world.func_147465_d(x + 2, y + 6, z, Blocks.leaves, 1, 2); + world.func_147465_d(x - 2, y + 6, z, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 6, z + 2, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 6, z - 2, Blocks.leaves, 1, 2); + + world.func_147465_d(x + 1, y + 7, z, Blocks.leaves, 1, 2); + world.func_147465_d(x - 1, y + 7, z, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 7, z + 1, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 7, z - 1, Blocks.leaves, 1, 2); + world.func_147465_d(x + 1, y + 7, z + 1, Blocks.leaves, 1, 2); + world.func_147465_d(x + 1, y + 7, z - 1, Blocks.leaves, 1, 2); + world.func_147465_d(x - 1, y + 7, z + 1, Blocks.leaves, 1, 2); + world.func_147465_d(x - 1, y + 7, z - 1, Blocks.leaves, 1, 2); + world.func_147465_d(x + 2, y + 7, z, Blocks.leaves, 1, 2); + world.func_147465_d(x - 2, y + 7, z, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 7, z + 2, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 7, z - 2, Blocks.leaves, 1, 2); + + world.func_147465_d(x + 1, y + 8, z, Blocks.leaves, 1, 2); + world.func_147465_d(x - 1, y + 8, z, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 8, z + 1, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 8, z - 1, Blocks.leaves, 1, 2); + world.func_147465_d(x + 1, y + 8, z + 1, Blocks.leaves, 1, 2); + world.func_147465_d(x + 1, y + 8, z - 1, Blocks.leaves, 1, 2); + world.func_147465_d(x - 1, y + 8, z + 1, Blocks.leaves, 1, 2); + world.func_147465_d(x - 1, y + 8, z - 1, Blocks.leaves, 1, 2); + + world.func_147465_d(x + 1, y + 9, z, Blocks.leaves, 1, 2); + world.func_147465_d(x - 1, y + 9, z, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 9, z + 1, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 9, z - 1, Blocks.leaves, 1, 2); + + world.func_147465_d(x + 1, y + 10, z, Blocks.leaves, 1, 2); + world.func_147465_d(x - 1, y + 10, z, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 10, z + 1, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 10, z - 1, Blocks.leaves, 1, 2); + + world.func_147465_d(x, y + 11, z, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 12, z, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 13, z, Blocks.leaves, 1, 2); + + return true; + } + } +} diff --git a/src/main/java/biomesoplenty/common/world/features/trees/WorldGenPoplar2.java b/src/main/java/biomesoplenty/common/world/features/trees/WorldGenPoplar2.java new file mode 100644 index 000000000..f704c9def --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/features/trees/WorldGenPoplar2.java @@ -0,0 +1,140 @@ +package biomesoplenty.common.world.features.trees; + +import java.util.Random; + +import net.minecraft.block.Block; +import net.minecraft.init.Blocks; +import net.minecraft.world.World; +import net.minecraft.world.gen.feature.WorldGenAbstractTree; + +public class WorldGenPoplar2 extends WorldGenAbstractTree +{ + public WorldGenPoplar2() + { + super(false); + } + + @Override + public boolean generate(World world, Random random, int x, int y, int z) + { + //TODO: isAirBlock() + while (world.func_147437_c(x, y, z) && y > 2) + { + --y; + } + + //TODO: getBlock() + Block block = world.func_147439_a(x, y, z); + + if (block != Blocks.grass) + { + return false; + } + else + { + for (int var7 = -2; var7 <= 2; ++var7) + { + for (int var8 = -2; var8 <= 2; ++var8) + { + //TODO: isAirBlock() isAirBlock() isAirBlock() + if (world.func_147437_c(x + var7, y - 1, z + var8) && world.func_147437_c(x + var7, y - 2, z + var8) && !world.func_147437_c(x + var7, y, z + var8)) + return false; + } + } + + world.func_147449_b(x, y, z, Blocks.dirt); + world.func_147465_d(x, y + 1, z, Blocks.log, 1, 2); + world.func_147465_d(x, y + 2, z, Blocks.log, 1, 2); + world.func_147465_d(x, y + 3, z, Blocks.log, 1, 2); + world.func_147465_d(x, y + 4, z, Blocks.log, 1, 2); + world.func_147465_d(x, y + 5, z, Blocks.log, 1, 2); + world.func_147465_d(x, y + 6, z, Blocks.log, 1, 2); + world.func_147465_d(x, y + 7, z, Blocks.log, 1, 2); + world.func_147465_d(x, y + 8, z, Blocks.log, 1, 2); + world.func_147465_d(x, y + 9, z, Blocks.log, 1, 2); + world.func_147465_d(x, y + 10, z, Blocks.log, 1, 2); + world.func_147465_d(x, y + 11, z, Blocks.log, 1, 2); + world.func_147465_d(x, y + 12, z, Blocks.log, 1, 2); + world.func_147465_d(x, y + 13, z, Blocks.log, 1, 2); + world.func_147465_d(x, y + 14, z, Blocks.log, 1, 2); + + world.func_147465_d(x + 1, y + 7, z, Blocks.leaves, 1, 2); + world.func_147465_d(x - 1, y + 7, z, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 7, z + 1, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 7, z - 1, Blocks.leaves, 1, 2); + + world.func_147465_d(x + 1, y + 8, z, Blocks.leaves, 1, 2); + world.func_147465_d(x - 1, y + 8, z, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 8, z + 1, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 8, z - 1, Blocks.leaves, 1, 2); + world.func_147465_d(x + 1, y + 8, z + 1, Blocks.leaves, 1, 2); + world.func_147465_d(x + 1, y + 8, z - 1, Blocks.leaves, 1, 2); + world.func_147465_d(x - 1, y + 8, z + 1, Blocks.leaves, 1, 2); + world.func_147465_d(x - 1, y + 8, z - 1, Blocks.leaves, 1, 2); + + world.func_147465_d(x + 1, y + 9, z, Blocks.leaves, 1, 2); + world.func_147465_d(x - 1, y + 9, z, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 9, z + 1, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 9, z - 1, Blocks.leaves, 1, 2); + world.func_147465_d(x + 1, y + 9, z + 1, Blocks.leaves, 1, 2); + world.func_147465_d(x + 1, y + 9, z - 1, Blocks.leaves, 1, 2); + world.func_147465_d(x - 1, y + 9, z + 1, Blocks.leaves, 1, 2); + world.func_147465_d(x - 1, y + 9, z - 1, Blocks.leaves, 1, 2); + world.func_147465_d(x + 2, y + 9, z, Blocks.leaves, 1, 2); + world.func_147465_d(x - 2, y + 9, z, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 9, z + 2, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 9, z - 2, Blocks.leaves, 1, 2); + + world.func_147465_d(x + 1, y + 10, z, Blocks.leaves, 1, 2); + world.func_147465_d(x - 1, y + 10, z, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 10, z + 1, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 10, z - 1, Blocks.leaves, 1, 2); + world.func_147465_d(x + 1, y + 10, z + 1, Blocks.leaves, 1, 2); + world.func_147465_d(x + 1, y + 10, z - 1, Blocks.leaves, 1, 2); + world.func_147465_d(x - 1, y + 10, z + 1, Blocks.leaves, 1, 2); + world.func_147465_d(x - 1, y + 10, z - 1, Blocks.leaves, 1, 2); + world.func_147465_d(x + 2, y + 10, z, Blocks.leaves, 1, 2); + world.func_147465_d(x - 2, y + 10, z, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 10, z + 2, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 10, z - 2, Blocks.leaves, 1, 2); + + world.func_147465_d(x + 1, y + 11, z, Blocks.leaves, 1, 2); + world.func_147465_d(x - 1, y + 11, z, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 11, z + 1, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 11, z - 1, Blocks.leaves, 1, 2); + world.func_147465_d(x + 1, y + 11, z + 1, Blocks.leaves, 1, 2); + world.func_147465_d(x + 1, y + 11, z - 1, Blocks.leaves, 1, 2); + world.func_147465_d(x - 1, y + 11, z + 1, Blocks.leaves, 1, 2); + world.func_147465_d(x - 1, y + 11, z - 1, Blocks.leaves, 1, 2); + world.func_147465_d(x + 2, y + 11, z, Blocks.leaves, 1, 2); + world.func_147465_d(x - 2, y + 11, z, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 11, z + 2, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 11, z - 2, Blocks.leaves, 1, 2); + + world.func_147465_d(x + 1, y + 12, z, Blocks.leaves, 1, 2); + world.func_147465_d(x - 1, y + 12, z, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 12, z + 1, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 12, z - 1, Blocks.leaves, 1, 2); + world.func_147465_d(x + 1, y + 12, z + 1, Blocks.leaves, 1, 2); + world.func_147465_d(x + 1, y + 12, z - 1, Blocks.leaves, 1, 2); + world.func_147465_d(x - 1, y + 12, z + 1, Blocks.leaves, 1, 2); + world.func_147465_d(x - 1, y + 12, z - 1, Blocks.leaves, 1, 2); + + world.func_147465_d(x + 1, y + 13, z, Blocks.leaves, 1, 2); + world.func_147465_d(x - 1, y + 13, z, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 13, z + 1, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 13, z - 1, Blocks.leaves, 1, 2); + + world.func_147465_d(x + 1, y + 14, z, Blocks.leaves, 1, 2); + world.func_147465_d(x - 1, y + 14, z, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 14, z + 1, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 14, z - 1, Blocks.leaves, 1, 2); + + world.func_147465_d(x, y + 15, z, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 16, z, Blocks.leaves, 1, 2); + world.func_147465_d(x, y + 17, z, Blocks.leaves, 1, 2); + + return true; + } + } +} diff --git a/src/main/java/biomesoplenty/common/world/generation/WorldGenFieldAssociation.java b/src/main/java/biomesoplenty/common/world/generation/WorldGenFieldAssociation.java index 9315b6edd..053ab573e 100644 --- a/src/main/java/biomesoplenty/common/world/generation/WorldGenFieldAssociation.java +++ b/src/main/java/biomesoplenty/common/world/generation/WorldGenFieldAssociation.java @@ -6,12 +6,12 @@ import net.minecraft.init.Blocks; import net.minecraft.world.gen.feature.WorldGenDoublePlant; import net.minecraft.world.gen.feature.WorldGenLakes; import net.minecraft.world.gen.feature.WorldGenLiquids; +import net.minecraft.world.gen.feature.WorldGenSand; import net.minecraft.world.gen.feature.WorldGenerator; import biomesoplenty.api.BOPBlockHelper; import biomesoplenty.common.world.features.WorldGenBOPDoubleFlora; import biomesoplenty.common.world.features.WorldGenBOPFlora; import biomesoplenty.common.world.features.WorldGenBOPTallGrass; -import biomesoplenty.common.world.features.WorldGenMud; import biomesoplenty.common.world.features.WorldGenRiverCane; import biomesoplenty.common.world.features.WorldGenSplotches; import biomesoplenty.common.world.features.WorldGenWaterReeds; @@ -29,6 +29,7 @@ public class WorldGenFieldAssociation { associateField("generateQuicksand", new WorldGenSplotches(BOPBlockHelper.get("mud"), 1, 24)); associateField("generateCanyon", new WorldGenSplotches(BOPBlockHelper.get("redRock"), 0, 48)); + associateField("generateStoneInGrass", new WorldGenSplotches(Blocks.stone, 0, 32)); associateField("waterPoolsPerChunk", new WorldGenLiquids(Blocks.flowing_water)); associateField("lavaPoolsPerChunk", new WorldGenLiquids(Blocks.flowing_lava)); @@ -36,7 +37,7 @@ public class WorldGenFieldAssociation associateField("waterLakesPerChunk", new WorldGenLakes(Blocks.water)); associateField("lavaLakesPerChunk", new WorldGenLakes(Blocks.lava)); - associateField("mudPerChunk", new WorldGenMud(7)); + associateField("mudPerChunk", new WorldGenSand(BOPBlockHelper.get("mud"), 7)); associateField("riverCanePerChunk", new WorldGenRiverCane()); associateField("shrubsPerChunk", new WorldGenBOPFlora(BOPBlockHelper.get("foliage"), 9)); associateField("bushesPerChunk", new WorldGenBOPFlora(BOPBlockHelper.get("foliage"), 4)); @@ -58,6 +59,7 @@ public class WorldGenFieldAssociation associateField("cattailsPerChunk", new WorldGenBOPFlora(BOPBlockHelper.get("plants"), 7)); associateField("highCattailsPerChunk", new WorldGenBOPDoubleFlora(BOPBlockHelper.get("plants"), BOPBlockHelper.get("plants"), 10, 9)); associateField("algaePerChunk", new WorldGenBOPFlora(BOPBlockHelper.get("foliage"), 0)); + associateField("sproutsPerChunk", new WorldGenBOPFlora(BOPBlockHelper.get("foliage"), 5)); WorldGenDoublePlant doubleTallGrass = new WorldGenDoublePlant(); //TODO: setMetadata() ?