private Vector translate(Vector pos) {
   StructureBoundingBox boundingBox = structure.getBoundingBox();
   switch (structure.getOrientation()) {
     case EAST:
       return new Vector(
           boundingBox.getMax().getBlockX() - pos.getBlockZ(),
           boundingBox.getMin().getBlockY() + pos.getBlockY(),
           boundingBox.getMin().getBlockZ() + pos.getBlockX());
     case SOUTH:
       return new Vector(
           boundingBox.getMin().getBlockX() + pos.getBlockX(),
           boundingBox.getMin().getBlockY() + pos.getBlockY(),
           boundingBox.getMax().getBlockZ() - pos.getBlockZ());
     case WEST:
       return new Vector(
           boundingBox.getMin().getBlockX() + pos.getBlockZ(),
           boundingBox.getMin().getBlockY() + pos.getBlockY(),
           boundingBox.getMin().getBlockZ() + pos.getBlockX());
     default: // NORTH
       return new Vector(
           boundingBox.getMin().getBlockX() + pos.getBlockX(),
           boundingBox.getMin().getBlockY() + pos.getBlockY(),
           boundingBox.getMin().getBlockZ() + pos.getBlockZ());
   }
 }