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