Camellias_

Untitled

Jun 10th, 2019
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.85 KB | None | 0 0
  1.     @Override
  2.     public boolean generate(World world, Random rand, BlockPos position)
  3.     {
  4.         float f = rand.nextFloat() * (float)Math.PI;
  5.         double d0 = (double)((float)(position.getX() + 8) + MathHelper.sin(f) * (float)this.numberOfBlocks / 8.0F);
  6.         double d1 = (double)((float)(position.getX() + 8) - MathHelper.sin(f) * (float)this.numberOfBlocks / 8.0F);
  7.         double d2 = (double)((float)(position.getZ() + 8) + MathHelper.cos(f) * (float)this.numberOfBlocks / 8.0F);
  8.         double d3 = (double)((float)(position.getZ() + 8) - MathHelper.cos(f) * (float)this.numberOfBlocks / 8.0F);
  9.         double d4 = (double)(position.getY() + rand.nextInt(3) - 2);
  10.         double d5 = (double)(position.getY() + rand.nextInt(3) - 2);
  11.        
  12.         for(int i = 0; i < this.numberOfBlocks; ++i)
  13.         {
  14.             float f1 = (float)i / (float)this.numberOfBlocks;
  15.             double d6 = d0 + (d1 - d0) * (double)f1;
  16.             double d7 = d4 + (d5 - d4) * (double)f1;
  17.             double d8 = d2 + (d3 - d2) * (double)f1;
  18.             double d9 = rand.nextDouble() * (double)this.numberOfBlocks / 16.0D;
  19.             double d10 = (double)(MathHelper.sin((float)Math.PI * f1) + 1.0F) * d9 + 1.0D;
  20.             double d11 = (double)(MathHelper.sin((float)Math.PI * f1) + 1.0F) * d9 + 1.0D;
  21.             int j = MathHelper.floor(d6 - d10 / 2.0D);
  22.             int k = MathHelper.floor(d7 - d11 / 2.0D);
  23.             int l = MathHelper.floor(d8 - d10 / 2.0D);
  24.             int i1 = MathHelper.floor(d6 + d10 / 2.0D);
  25.             int j1 = MathHelper.floor(d7 + d11 / 2.0D);
  26.             int k1 = MathHelper.floor(d8 + d10 / 2.0D);
  27.            
  28.             for(int l1 = j; l1 <= i1; ++l1)
  29.             {
  30.                 double d12 = ((double)l1 + 0.5D - d6) / (d10 / 2.0D);
  31.                
  32.                 if(d12 * d12 < 1.0D)
  33.                 {
  34.                     for(int i2 = k; i2 <= j1; ++i2)
  35.                     {
  36.                         double d13 = ((double)i2 + 0.5D - d7) / (d11 / 2.0D);
  37.                        
  38.                         if(d12 * d12 + d13 * d13 < 1.0D)
  39.                         {
  40.                             for(int j2 = l; j2 <= k1; ++j2)
  41.                             {
  42.                                 double d14 = ((double)j2 + 0.5D - d8) / (d10 / 2.0D);
  43.                                
  44.                                 if(d12 * d12 + d13 * d13 + d14 * d14 < 1.0D)
  45.                                 {
  46.                                     BlockPos blockpos = new BlockPos(l1, i2, j2);
  47.                                    
  48.                                     IBlockState state = world.getBlockState(blockpos);
  49.                                    
  50.                                     if(state.getBlock().isReplaceableOreGen(state, world, blockpos, this.predicate))
  51.                                     {
  52.                                         world.setBlockState(blockpos, this.oreBlock, 2);
  53.                                        
  54.                                         if(rand.nextInt(10) == 0)
  55.                                         {
  56.                                             Block block = world.getBlockState(blockpos).getBlock();
  57.                                            
  58.                                             for(int y2 = 256; y2 > 63 && (block == Blocks.DIRT || block == Blocks.GRASS ||
  59.                                                     block == Blocks.STONE || block == Blocks.GRAVEL ||
  60.                                                     block == Blocks.SANDSTONE || block == Blocks.SAND); y2--)
  61.                                             {
  62.                                                 blockpos = new BlockPos(l1, y2 - (y2 - 1), j2);
  63.                                                
  64.                                                 world.setBlockState(blockpos, this.oreSample, 2);
  65.                                             }
  66.                                         }
  67.                                     }
  68.                                 }
  69.                             }
  70.                         }
  71.                     }
  72.                 }
  73.             }
  74.         }
  75.        
  76.         return true;
  77.     }
Advertisement
Add Comment
Please, Sign In to add comment