001 package net.minecraft.world.gen.feature;
002
003 import java.util.Random;
004 import net.minecraft.block.Block;
005 import net.minecraft.world.World;
006
007 public class WorldGenTaiga1 extends WorldGenerator
008 {
009 public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5)
010 {
011 int var6 = par2Random.nextInt(5) + 7;
012 int var7 = var6 - par2Random.nextInt(2) - 3;
013 int var8 = var6 - var7;
014 int var9 = 1 + par2Random.nextInt(var8 + 1);
015 boolean var10 = true;
016
017 if (par4 >= 1 && par4 + var6 + 1 <= 128)
018 {
019 int var11;
020 int var13;
021 int var14;
022 int var15;
023 int var18;
024
025 for (var11 = par4; var11 <= par4 + 1 + var6 && var10; ++var11)
026 {
027 boolean var12 = true;
028
029 if (var11 - par4 < var7)
030 {
031 var18 = 0;
032 }
033 else
034 {
035 var18 = var9;
036 }
037
038 for (var13 = par3 - var18; var13 <= par3 + var18 && var10; ++var13)
039 {
040 for (var14 = par5 - var18; var14 <= par5 + var18 && var10; ++var14)
041 {
042 if (var11 >= 0 && var11 < 128)
043 {
044 var15 = par1World.getBlockId(var13, var11, var14);
045
046 Block block = Block.blocksList[var15];
047
048 if (var15 != 0 && (block == null || !block.isLeaves(par1World, var13, var11, var14)))
049 {
050 var10 = false;
051 }
052 }
053 else
054 {
055 var10 = false;
056 }
057 }
058 }
059 }
060
061 if (!var10)
062 {
063 return false;
064 }
065 else
066 {
067 var11 = par1World.getBlockId(par3, par4 - 1, par5);
068
069 if ((var11 == Block.grass.blockID || var11 == Block.dirt.blockID) && par4 < 128 - var6 - 1)
070 {
071 this.setBlock(par1World, par3, par4 - 1, par5, Block.dirt.blockID);
072 var18 = 0;
073
074 for (var13 = par4 + var6; var13 >= par4 + var7; --var13)
075 {
076 for (var14 = par3 - var18; var14 <= par3 + var18; ++var14)
077 {
078 var15 = var14 - par3;
079
080 for (int var16 = par5 - var18; var16 <= par5 + var18; ++var16)
081 {
082 int var17 = var16 - par5;
083
084 Block block = Block.blocksList[par1World.getBlockId(var14, var13, var16)];
085
086 if ((Math.abs(var15) != var18 || Math.abs(var17) != var18 || var18 <= 0) &&
087 (block == null || block.canBeReplacedByLeaves(par1World, var14, var13, var16)))
088 {
089 this.setBlockAndMetadata(par1World, var14, var13, var16, Block.leaves.blockID, 1);
090 }
091 }
092 }
093
094 if (var18 >= 1 && var13 == par4 + var7 + 1)
095 {
096 --var18;
097 }
098 else if (var18 < var9)
099 {
100 ++var18;
101 }
102 }
103
104 for (var13 = 0; var13 < var6 - 1; ++var13)
105 {
106 var14 = par1World.getBlockId(par3, par4 + var13, par5);
107
108 Block block = Block.blocksList[var14];
109
110 if (var14 == 0 || block == null || block.isLeaves(par1World, par3, par4 + var13, par5))
111 {
112 this.setBlockAndMetadata(par1World, par3, par4 + var13, par5, Block.wood.blockID, 1);
113 }
114 }
115
116 return true;
117 }
118 else
119 {
120 return false;
121 }
122 }
123 }
124 else
125 {
126 return false;
127 }
128 }
129 }