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()); } }