Sorry if this is wrong, had < 5 to do it.
you get the gist though... fix and use:
Position[] areaBounds(Position tile1, Position tile2){
List<Position> tiles = new LinkedList<Position>();
//TOP
if(tile1.getX() > tile2.getX()){
for(int i = tile1.getX(); i != tile2.getX(); i--){
tiles.add(new Position(i, tile1.getY(), tile1.getZ()));
}
}else if(tile1.getX() < tile2.getX()){
for(int i = tile1.getX(); i != tile2.getX(); i++){
tiles.add(new Position(i, tile1.getY(), tile1.getZ()));
}
}
//Side 1
if(tile1.getY() > tile2.getY()){
for(int i = tile1.getY(); i != tile2.getY(); i--){
tiles.add(new Position(tile1.getX(), i, tile1.getZ()));
}
}else if(tile1.getY() < tile2.getY()){
for(int i = tile1.getY(); i != tile2.getY(); i++){
tiles.add(new Position(tile1.getX(), i, tile1.getZ()));
}
}
//side 2
if(tile2.getY() > tile1.getY()){
for(int i = tile2.getY(); i != tile1.getX(); i--){
tiles.add(new Position(tile2.getX(), i, tile2.getZ()));
}
}else if(tile2.getY() < tile1.getY()){
for(int i = tile2.getY(); i != tile1.getX(); i++){
tiles.add(new Position(tile2.getX(), i, tile2.getZ()));
}
}
//bottom
if(tile2.getX() > tile1.getX()){
for(int i = tile2.getX(); i != tile1.getX(); i--){
tiles.add(new Position(i, tile1.getY(), tile1.getZ()));
}
}else if(tile2.getX() < tile1.getX()){
for(int i = tile2.getX(); i != tile1.getX(); i++){
tiles.add(new Position(tile2.getX(), i, tile2.getZ()));
}
}
//convert list to array, return array or convert constructor to list
return null;
}