Guest User

Untitled

a guest
May 18th, 2014
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.96 KB | None | 0 0
  1. package fantasy_biomes.trees;
  2.  
  3. import java.util.Random;
  4.  
  5. import net.minecraft.block.Block;
  6. import net.minecraft.world.World;
  7. import net.minecraft.world.gen.feature.WorldGenerator;
  8. import net.minecraftforge.common.ForgeDirection;
  9. import fantasy_biomes.Main;
  10. import fantasy_biomes.blocks.BlockRedwoodSapling;
  11.  
  12. public class WorldGenRedwoodTree extends WorldGenerator
  13. {
  14. public WorldGenRedwoodTree(boolean par1)
  15. {
  16. super(par1);
  17. }
  18.  
  19. public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5)
  20. {
  21. int l = par2Random.nextInt(4) + 30;
  22. int i1 = 1 + par2Random.nextInt(2);
  23. int j1 = l - i1;
  24. int k1 = 2 + par2Random.nextInt(2);
  25. boolean flag = true;
  26.  
  27. if (par4 >= 1 && par4 + l + 1 <= 256)
  28. {
  29. int l1;
  30. int i2;
  31. int j2;
  32. int k2;
  33.  
  34. for (l1 = par4; l1 <= par4 + 1 + l && flag; ++l1)
  35. {
  36. boolean flag1 = true;
  37.  
  38. if (l1 - par4 < i1)
  39. {
  40. k2 = 0;
  41. }
  42. else
  43. {
  44. k2 = k1;
  45. }
  46.  
  47. for (i2 = par3 - k2; i2 <= par3 + k2 && flag; ++i2)
  48. {
  49. for (int l2 = par5 - k2; l2 <= par5 + k2 && flag; ++l2)
  50. {
  51. if (l1 >= 0 && l1 < 256)
  52. {
  53. j2 = par1World.getBlockId(i2, l1, l2);
  54.  
  55. Block block = Block.blocksList[j2];
  56.  
  57. if (j2 != 0 && block != null && !block.isLeaves(par1World, i2, l1, l2))
  58. {
  59. flag = false;
  60. }
  61. }
  62. else
  63. {
  64. flag = false;
  65. }
  66. }
  67. }
  68. }
  69.  
  70. if (!flag)
  71. {
  72. return false;
  73. }
  74. else
  75. {
  76. l1 = par1World.getBlockId(par3, par4 - 1, par5);
  77. Block soil = Block.blocksList[l1];
  78. boolean isValidSoil = soil != null && soil.canSustainPlant(par1World, par3, par4 - 1, par5, ForgeDirection.UP, (BlockRedwoodSapling)Main.blockRedwoodSapling);
  79.  
  80. if (isValidSoil && par4 < 256 - l - 1)
  81. {
  82. soil.onPlantGrow(par1World, par3, par4 - 1, par5, par3, par4, par5);
  83. k2 = par2Random.nextInt(2);
  84. i2 = 1;
  85. byte b0 = 0;
  86. int i3;
  87. int j3;
  88.  
  89. for (j2 = 0; j2 <= j1; ++j2)
  90. {
  91. j3 = par4 + l - j2;
  92.  
  93. for (i3 = par3 - k2; i3 <= par3 + k2; ++i3)
  94. {
  95. int k3 = i3 - par3;
  96.  
  97. for (int l3 = par5 - k2; l3 <= par5 + k2; ++l3)
  98. {
  99. int i4 = l3 - par5;
  100.  
  101. Block block = Block.blocksList[par1World.getBlockId(i3, j3, l3)];
  102.  
  103. if ((Math.abs(k3) != k2 || Math.abs(i4) != k2 || k2 <= 0) &&
  104. (block == null || block.canBeReplacedByLeaves(par1World, i3, j3, l3)))
  105. {
  106. this.setBlockAndMetadata(par1World, i3, j3, l3, Block.leaves.blockID, 1);
  107. }
  108. }
  109. }
  110.  
  111. if (k2 >= i2)
  112. {
  113. k2 = b0;
  114. b0 = 1;
  115. ++i2;
  116.  
  117. if (i2 > k1)
  118. {
  119. i2 = k1;
  120. }
  121. }
  122. else
  123. {
  124. ++k2;
  125. }
  126. }
  127.  
  128. j2 = par2Random.nextInt(3);
  129.  
  130. for (j3 = 0; j3 < l - j2; ++j3)
  131. {
  132. i3 = par1World.getBlockId(par3, par4 + j3, par5);
  133.  
  134. Block block = Block.blocksList[i3];
  135.  
  136. if (i3 == 0 || block == null || block.isLeaves(par1World, par3, par4 + j3, par5))
  137. {
  138. this.setBlockAndMetadata(par1World, par3, par4 + j3, par5, Main.blockRedwoodLog.blockID, 1);
  139. }
  140. }
  141.  
  142. return true;
  143. }
  144. else
  145. {
  146. return false;
  147. }
  148. }
  149. }
  150. else
  151. {
  152. return false;
  153. }
  154. }
  155. }
Advertisement
Add Comment
Please, Sign In to add comment