public void setBlock(Vector pos, Material type, int data) {
   Vector vec = translate(pos);
   if (boundingBox.isVectorInside(vec)) {
     delegate.setTypeAndRawData(
         world, vec.getBlockX(), vec.getBlockY(), vec.getBlockZ(), type, data);
   }
 }
 public void setBlockDownward(Vector pos, Material type, int data) {
   Vector vec = translate(pos);
   if (boundingBox.isVectorInside(vec)) {
     int y = vec.getBlockY();
     while (!world.getBlockAt(vec.getBlockX(), y, vec.getBlockZ()).getType().isSolid() && y > 1) {
       delegate.setTypeAndRawData(world, vec.getBlockX(), y, vec.getBlockZ(), type, data);
       y--;
     }
   }
 }