@Override
 public void sphericalFill(boolean ignoreAir) {
   final float xScale = max.getX() - min.getX() + 1;
   final float yScale = max.getY() - min.getY() + 1;
   final float zScale = max.getZ() - min.getZ() + 1;
   final float xOffset = min.getX() + xScale / 2;
   final float zOffset = min.getZ() + zScale / 2;
   final int endX = max.getX();
   final int endY = max.getY();
   final int endZ = max.getZ();
   for (int xx = min.getX(); xx <= endX; xx++) {
     final float dx = (xx - xOffset) / (xScale * 0.5f);
     for (int yy = min.getY(); yy <= endY; yy++) {
       final float dy = (yy - min.getY()) / yScale;
       for (int zz = min.getZ(); zz <= endZ; zz++) {
         final float dz = (zz - zOffset) / (zScale * 0.5f);
         if (dx * dx + dy * dy + dz * dz <= 1.05) {
           if (ignoreAir
               && !parent.getBlockMaterial(xx, yy, zz).isMaterial(VanillaMaterials.AIR)) {
             continue;
           }
           parent.setBlockMaterial(xx, yy, zz, picker.get(false));
         }
       }
     }
   }
 }
 @Override
 public void fill(boolean ignoreAir) {
   final int endX = max.getX();
   final int endY = max.getY();
   final int endZ = max.getZ();
   for (int xx = min.getX(); xx <= endX; xx++) {
     for (int yy = min.getY(); yy <= endY; yy++) {
       for (int zz = min.getZ(); zz <= endZ; zz++) {
         if (!ignoreAir || !parent.getBlockMaterial(xx, yy, zz).isMaterial(VanillaMaterials.AIR)) {
           parent.setBlockMaterial(xx, yy, zz, picker.get(isOuter(xx, yy, zz)));
         }
       }
     }
   }
 }
 @Override
 public void randomFill(float odd, boolean ignoreAir) {
   final int endX = max.getX();
   final int endY = max.getY();
   final int endZ = max.getZ();
   for (int xx = min.getX(); xx <= endX; xx++) {
     for (int yy = min.getY(); yy <= endY; yy++) {
       for (int zz = min.getZ(); zz <= endZ; zz++) {
         if (parent.getRandom().nextFloat() > odd) {
           continue;
         }
         if (!ignoreAir || !parent.getBlockMaterial(xx, yy, zz).isMaterial(VanillaMaterials.AIR)) {
           parent.setBlockMaterial(xx, yy, zz, picker.get(isOuter(xx, yy, zz)));
         }
       }
     }
   }
 }