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