Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public boolean genIsland(World world, int radius, int xIn, int yIn, int zIn)
- {
- FloatingRuins.baseDepth = Math.max(2, Math.min(50, FloatingRuins.baseDepth));
- FloatingRuins.depthVariation = Math.max(0, Math.min(50, FloatingRuins.depthVariation));
- int specialOre = getSpecialOre();
- Random random = new Random();
- float depthRatio = random.nextInt(5) == 0 ? random.nextFloat() * 0.5F + 2.0F : random.nextFloat() * 0.2F + 0.4F;
- int height = (int)Math.ceil((float)radius * depthRatio);
- int yg = CommonUtils.getLowestGroundBlock(world, xIn, yIn - height, zIn);
- for(int x = -radius; x <= radius; x++)
- for(int y = 15; y >= -height; y--)
- for(int z = -radius; z <= radius; z++)
- {
- float dist = Math.round(Math.sqrt(Math.pow(x, 2D) + Math.pow(z, 2D) + (y > 0 ? 0.0D : Math.pow((float)y / depthRatio, 2D))));
- int block = world.getBlockId(x + xIn, yg + y, z + zIn);
- if(dist <= (float)radius)
- {
- int metadata = world.getBlockMetadata(x + xIn, yg + y, z + zIn);
- if((y <= 0) || (block != Block.waterStill.blockID && block != Block.waterMoving.blockID
- && (world.isBlockNormalCube(x + xIn, yg + y, z + zIn) || block == Block.leaves.blockID)
- && !CommonUtils.isItemInList(block, metadata, FloatingRuins.blockIDBlacklist)))
- {
- world.setBlockAndMetadata(x + xIn, y + yIn, z + zIn, block, metadata);
- world.setBlockWithNotify(x + xIn, yg + y, z + zIn, 0);
- }
- }
- if(random.nextInt(3) == 0 && world.getBlockId(x + xIn, y + yIn, z + zIn) == Block.stone.blockID && Math.abs(x) <= 1 && Math.abs(z) <= 1 &&
- Math.abs(y + height / 2) <= 2)
- world.setBlock(x + xIn, y + yIn, z + zIn, specialOre);
- }
- if(depthRatio < 1.0F)
- for(int x = -radius; x <= radius; x++)
- for(int y = 5; y >= -height; y--)
- for(int z = -radius; z <= radius; z++)
- {
- int block = world.getBlockId(x + xIn, y + yIn, z + zIn);
- if(block != 0 && world.isAirBlock(x + xIn, (y + yIn) - 1, z + zIn))
- if(block == Block.gravel.blockID)
- world.setBlock(x + xIn, y + yIn, z + zIn, Block.stone.blockID);
- else if(block == Block.sand.blockID)
- world.setBlock(x + xIn, y + yIn, z + zIn, Block.sandStone.blockID);
- }
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment