Advertisement
Guest User

Untitled

a guest
Sep 25th, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.99 KB | None | 0 0
  1. package net.minecraft.src;
  2. import java.util.Random;
  3.  
  4. public class ChunkProviderFlatLand
  5. implements IChunkProvider
  6. {
  7.  
  8. public ChunkProviderFlatLand(World world)
  9. {
  10. worldObj = world;
  11. Random = new Random();
  12. noise1gen = new NoiseGeneratorOctaves(Random, 4);
  13. }
  14.  
  15.  
  16. public boolean chunkExists(int i, int j) {
  17.  
  18. return true;
  19. }
  20.  
  21.  
  22. public Chunk provideChunk(int i, int j) {
  23.  
  24.  
  25. byte abyte0[] = new byte[32768];
  26.  
  27. generateTerrain(i, j, abyte0);
  28. generatetop(abyte0);
  29. Chunk chunk = new Chunk(worldObj, abyte0, i, j);
  30. chunk.func_1024_c();
  31. return chunk;
  32. }
  33. public void generatetop(byte[] abyte0)
  34. {
  35. for(int k = 0; k < 16; k++)
  36. {
  37. for(int l = 0; l < 16; l++)
  38. {
  39. int j1 = 0;
  40.  
  41. for(int k1 = 127; k1 >= 0; k1--)
  42. {
  43. int l1 = (l * 16 + k) * 128 + k1;
  44. byte byte2 = abyte0[l1];
  45.  
  46. if(byte2 != Block.stone.blockID)
  47. {
  48. j1 = 0;
  49. continue;
  50. }
  51.  
  52.  
  53.  
  54. if(j1 < 3)
  55. {
  56. abyte0[l1] = (byte)Block.dirt.blockID;;
  57. }
  58.  
  59. if( j1 == 0)
  60. {
  61. abyte0[l1] = (byte)Block.grass.blockID;;
  62. }
  63.  
  64.  
  65.  
  66. j1++;
  67. }
  68. }
  69. }
  70. }
  71. private void generateTerrain(int i, int j, byte[] abyte0) {
  72. byte byte0 = 2;
  73. int k = byte0 + 1;
  74. byte byte1 = 33;
  75. int l = byte0 + 1;
  76. noisearray = GenerateNoise(noisearray, i * byte0, 0, j * byte0, k, byte1, l);
  77. for(int i1 = 0; i1 < byte0; i1++)
  78. {
  79. for(int j1 = 0; j1 < byte0; j1++)
  80. {
  81. for(int k1 = 0; k1 < 32; k1++)
  82. {
  83. double d = 0.25D;
  84. double d1 = noisearray[((i1 + 0) * l + (j1 + 0)) * byte1 + (k1 + 0)];
  85. double d2 = noisearray[((i1 + 0) * l + (j1 + 1)) * byte1 + (k1 + 0)];
  86. double d3 = noisearray[((i1 + 1) * l + (j1 + 0)) * byte1 + (k1 + 0)];
  87. double d4 = noisearray[((i1 + 1) * l + (j1 + 1)) * byte1 + (k1 + 0)];
  88. double d5 = (noisearray[((i1 + 0) * l + (j1 + 0)) * byte1 + (k1 + 1)] - d1) * d;
  89. double d6 = (noisearray[((i1 + 0) * l + (j1 + 1)) * byte1 + (k1 + 1)] - d2) * d;
  90. double d7 = (noisearray[((i1 + 1) * l + (j1 + 0)) * byte1 + (k1 + 1)] - d3) * d;
  91. double d8 = (noisearray[((i1 + 1) * l + (j1 + 1)) * byte1 + (k1 + 1)] - d4) * d;
  92. for(int l1 = 0; l1 < 4; l1++)
  93. {
  94. double d9 = 0.125D;
  95. double d10 = d1;
  96. double d11 = d2;
  97. double d12 = (d3 - d1) * d9;
  98. double d13 = (d4 - d2) * d9;
  99. for(int i2 = 0; i2 < 8; i2++)
  100. {
  101. int j2 = i2 + i1 * 8 << 11 | 0 + j1 * 8 << 7 | k1 * 4 + l1;
  102. char c = '\200';
  103. double d14 = 0.125D;
  104. double d15 = d10;
  105. double d16 = (d11 - d10) * d14;
  106. for(int k2 = 0; k2 < 8; k2++)
  107. {
  108. int l2 = 0;
  109. if(d15 > 0.2D)
  110. {
  111. l2 = Block.stone.blockID;
  112. }
  113. abyte0[j2] = (byte)l2;
  114. j2 += c;
  115. d15 += d16;
  116. }
  117.  
  118. d10 += d12;
  119. d11 += d13;
  120. }
  121.  
  122. d1 += d5;
  123. d2 += d6;
  124. d3 += d7;
  125. d4 += d8;
  126. }
  127.  
  128. }
  129.  
  130. }
  131.  
  132. }
  133. }
  134.  
  135. public Chunk prepareChunk(int i, int j) {
  136. return provideChunk(i, j);
  137. }
  138.  
  139.  
  140. public void populate(IChunkProvider var1, int var2, int var3) {
  141.  
  142. int var6 = 0;
  143. int var7;
  144.  
  145. for(var7 = 0; var7 < var6; ++var7) {
  146. var7 = var6 + 8;
  147. var6 = var7 + 4;
  148. var6 = var7 + 8;
  149. (new TestGenGlowstone()).generate(this.worldObj, Random, var7, var6, var7);
  150. }
  151. }
  152. private double[] GenerateNoise(double ad[], int i, int j, int k, int l, int i1, int j1)
  153. {
  154. if(ad == null)
  155. {
  156. ad = new double[l * i1 * j1];
  157. }
  158.  
  159. noise1 = noise1gen.generateNoiseOctaves(noise1, i, j, k, l, i1, j1, 1D, 3D, 1D);
  160.  
  161.  
  162. int k1 = 0;
  163.  
  164.  
  165. for(int j2 = 0; j2 < l; j2++)
  166. {
  167.  
  168. for(int l2 = 0; l2 < j1; l2++)
  169. {
  170.  
  171. for(int j3 = 0; j3 < i1; j3++)
  172. {
  173. if( j3 < 30)
  174. {
  175.  
  176.  
  177. }
  178. ad[k1] =noise1[k1];
  179.  
  180. k1++;
  181. }
  182.  
  183.  
  184.  
  185.  
  186.  
  187. }
  188.  
  189. }
  190.  
  191. return ad;
  192. }
  193.  
  194. public boolean saveChunks(boolean flag, IProgressUpdate iprogressupdate) {
  195.  
  196. return true;
  197. }
  198.  
  199.  
  200. public boolean unload100OldestChunks() {
  201. return false;
  202. }
  203.  
  204.  
  205. public boolean canSave() {
  206. return true;
  207. }
  208.  
  209.  
  210. public String makeString() {
  211. return "RandomLevelSource";
  212. }
  213. private Random Random;
  214.  
  215. private double noisearray[];
  216.  
  217. private World worldObj;
  218.  
  219. double noise1[];
  220. private NoiseGeneratorOctaves noise1gen;
  221.  
  222. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement