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