package net.minecraft.world.biome; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; 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.gen.feature.WorldGenAbstractTree; import net.minecraft.world.gen.feature.WorldGenBigMushroom; import net.minecraft.world.gen.feature.WorldGenCanopyTree; import net.minecraft.world.gen.feature.WorldGenForest; public class BiomeGenForest extends BiomeGenBase { private int field_150632_aF; protected static final WorldGenForest field_150629_aC = new WorldGenForest(false, true); protected static final WorldGenForest field_150630_aD = new WorldGenForest(false, false); protected static final WorldGenCanopyTree field_150631_aE = new WorldGenCanopyTree(false); private static final String __OBFID = "CL_00000170"; public BiomeGenForest(int p_i45377_1_, int p_i45377_2_) { super(p_i45377_1_); this.field_150632_aF = p_i45377_2_; this.theBiomeDecorator.treesPerChunk = 10; this.theBiomeDecorator.grassPerChunk = 2; if (this.field_150632_aF == 1) { this.theBiomeDecorator.treesPerChunk = 6; this.theBiomeDecorator.flowersPerChunk = 100; this.theBiomeDecorator.grassPerChunk = 1; } this.func_76733_a(5159473); this.setTemperatureRainfall(0.7F, 0.8F); if (this.field_150632_aF == 2) { this.field_150609_ah = 353825; this.color = 3175492; this.setTemperatureRainfall(0.6F, 0.6F); } if (this.field_150632_aF == 0) { this.spawnableCreatureList.add(new BiomeGenBase.SpawnListEntry(EntityWolf.class, 5, 4, 4)); } if (this.field_150632_aF == 3) { this.theBiomeDecorator.treesPerChunk = -999; } if (this.field_150632_aF == 1) { this.flowers.clear(); for (int x = 0; x < BlockFlower.field_149859_a.length; x++) { this.addFlower(Blocks.red_flower, x == 1 ? 0 : x, 10); } } } public BiomeGenBase func_150557_a(int p_150557_1_, boolean p_150557_2_) { if (this.field_150632_aF == 2) { this.field_150609_ah = 353825; this.color = p_150557_1_; if (p_150557_2_) { this.field_150609_ah = (this.field_150609_ah & 16711422) >> 1; } return this; } else { return super.func_150557_a(p_150557_1_, p_150557_2_); } } public WorldGenAbstractTree func_150567_a(Random p_150567_1_) { return (WorldGenAbstractTree)(this.field_150632_aF == 3 && p_150567_1_.nextInt(3) > 0 ? field_150631_aE : (this.field_150632_aF != 2 && p_150567_1_.nextInt(5) != 0 ? this.worldGeneratorTrees : field_150630_aD)); } public String func_150572_a(Random p_150572_1_, int p_150572_2_, int p_150572_3_, int p_150572_4_) { if (this.field_150632_aF == 1) { double d0 = MathHelper.clamp_double((1.0D + plantNoise.func_151601_a((double)p_150572_2_ / 48.0D, (double)p_150572_4_ / 48.0D)) / 2.0D, 0.0D, 0.9999D); int l = (int)(d0 * (double)BlockFlower.field_149859_a.length); if (l == 1) { l = 0; } return BlockFlower.field_149859_a[l]; } else { return super.func_150572_a(p_150572_1_, p_150572_2_, p_150572_3_, p_150572_4_); } } public void decorate(World p_76728_1_, Random p_76728_2_, int p_76728_3_, int p_76728_4_) { int k; int l; int i1; int j1; int k1; if (this.field_150632_aF == 3) { for (k = 0; k < 4; ++k) { for (l = 0; l < 4; ++l) { i1 = p_76728_3_ + k * 4 + 1 + 8 + p_76728_2_.nextInt(3); j1 = p_76728_4_ + l * 4 + 1 + 8 + p_76728_2_.nextInt(3); k1 = p_76728_1_.getHeightValue(i1, j1); if (p_76728_2_.nextInt(20) == 0) { WorldGenBigMushroom worldgenbigmushroom = new WorldGenBigMushroom(); worldgenbigmushroom.generate(p_76728_1_, p_76728_2_, i1, k1, j1); } else { WorldGenAbstractTree worldgenabstracttree = this.func_150567_a(p_76728_2_); worldgenabstracttree.setScale(1.0D, 1.0D, 1.0D); if (worldgenabstracttree.generate(p_76728_1_, p_76728_2_, i1, k1, j1)) { worldgenabstracttree.func_150524_b(p_76728_1_, p_76728_2_, i1, k1, j1); } } } } } k = p_76728_2_.nextInt(5) - 3; if (this.field_150632_aF == 1) { k += 2; } l = 0; while (l < k) { i1 = p_76728_2_.nextInt(3); if (i1 == 0) { genTallFlowers.func_150548_a(1); } else if (i1 == 1) { genTallFlowers.func_150548_a(4); } else if (i1 == 2) { genTallFlowers.func_150548_a(5); } j1 = 0; while (true) { if (j1 < 5) { k1 = p_76728_3_ + p_76728_2_.nextInt(16) + 8; int i2 = p_76728_4_ + p_76728_2_.nextInt(16) + 8; int l1 = p_76728_2_.nextInt(p_76728_1_.getHeightValue(k1, i2) + 32); if (!genTallFlowers.generate(p_76728_1_, p_76728_2_, k1, l1, i2)) { ++j1; continue; } } ++l; break; } } super.decorate(p_76728_1_, p_76728_2_, p_76728_3_, p_76728_4_); } /** * Provides the basic grass color based on the biome temperature and rainfall */ @SideOnly(Side.CLIENT) public int getBiomeGrassColor(int p_150558_1_, int p_150558_2_, int p_150558_3_) { int l = super.getBiomeGrassColor(p_150558_1_, p_150558_2_, p_150558_3_); return this.field_150632_aF == 3 ? (l & 16711422) + 2634762 >> 1 : l; } /** * Creates a mutated version of the biome and places it into the biomeList with an index equal to the original plus * 128 */ public BiomeGenBase createMutation() { if (this.biomeID == BiomeGenBase.forest.biomeID) { BiomeGenForest biomegenforest = new BiomeGenForest(this.biomeID + 128, 1); biomegenforest.setHeight(new BiomeGenBase.Height(this.minHeight, this.maxHeight + 0.2F)); biomegenforest.setBiomeName("Flower Forest"); biomegenforest.func_150557_a(6976549, true); biomegenforest.func_76733_a(8233509); return biomegenforest; } else { return this.biomeID != BiomeGenBase.birchForest.biomeID && this.biomeID != BiomeGenBase.birchForestHills.biomeID ? new BiomeGenMutated(this.biomeID + 128, this) { private static final String __OBFID = "CL_00000172"; public void decorate(World p_76728_1_, Random p_76728_2_, int p_76728_3_, int p_76728_4_) { this.baseBiome.decorate(p_76728_1_, p_76728_2_, p_76728_3_, p_76728_4_); } }: new BiomeGenMutated(this.biomeID + 128, this) { private static final String __OBFID = "CL_00001861"; public WorldGenAbstractTree func_150567_a(Random p_150567_1_) { return p_150567_1_.nextBoolean() ? BiomeGenForest.field_150629_aC : BiomeGenForest.field_150630_aD; } }; } } }