public boolean updateCastle(Piece p1, Piece p2) {
		Board b = gm.getBoard();
		if (
			b.isWhiteTurn() == p1.isWhite() &&
			b.isWhiteTurn() == this.isWhite
		) {
			ArrayList<PossibleTile> tiles = new ArrayList<PossibleTile>();
			b.nextTurn();
			Piece clone1 = p1.clone();
			Piece clone2 = p2.clone();
			b.removePiece(p1);
			b.removePiece(p2);
			if (p1.getX() < p2.getX()) {
				if (p1 instanceof King) {
					tiles.add(new PossibleTile(clone1.getX(), clone1.getY(), clone1));
					clone1.setX(p2.getX() - 1);
					clone2.setX(p1.getX() + 1);
					tiles.add(new PossibleTile(clone1.getX(), clone1.getY(), clone1));
					b.addMove(new int[] {clone1.getUID(), clone1.getX(), clone1.getY()});
				} else {
					tiles.add(new PossibleTile(clone2.getX(), clone2.getY(), clone2));
					clone1.setX(p2.getX() - 1);
					clone2.setX(p1.getX() + 2);
					tiles.add(new PossibleTile(clone2.getX(), clone2.getY(), clone2));
					b.addMove(new int[] {clone2.getUID(), clone2.getX(), clone2.getY()});
				}
			} else {
				if (p1 instanceof King) {
					tiles.add(new PossibleTile(clone1.getX(), clone1.getY(), clone1));
					clone1.setX(p2.getX() + 2);
					clone2.setX(p1.getX() - 1);
					tiles.add(new PossibleTile(clone1.getX(), clone1.getY(), clone1));
					b.addMove(new int[] {clone1.getUID(), clone1.getX(), clone1.getY()});
				} else {
					tiles.add(new PossibleTile(clone2.getX(), clone2.getY(), clone2));
					clone1.setX(p2.getX() + 1);
					clone2.setX(p1.getX() - 1);
					tiles.add(new PossibleTile(clone2.getX(), clone2.getY(), clone2));
					b.addMove(new int[] {clone2.getUID(), clone2.getX(), clone2.getY()});
				}
			}
			clone1.setSelected(false);
			b.addPiece(clone1);
			b.addPiece(clone2);
			this.gm.getBoard().setPrevTiles(tiles);
			gm.updateBoard(b, false);
			return true;
		}
		return false;
	}